-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAnalyticsController.php
More file actions
63 lines (52 loc) · 1.82 KB
/
AnalyticsController.php
File metadata and controls
63 lines (52 loc) · 1.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
namespace App\Http\Controllers\API;
use App\Business;
use App\Integration;
use App\Transaction;
use App\CustomField;
use App\Http\Controllers\Controller;
use App\Http\Requests\FilterAnalytics;
use Illuminate\Http\Request;
use Src\ElasticSearch\ElasticSearch;
use Src\Analytics\TransactionsAnalytics;
use Src\Analytics\CustomFieldsAnalytics;
class AnalyticsController extends Controller
{
public function __construct()
{
$this->middleware('auth:api');
}
public function snippet(Request $request, $business_id, ElasticSearch $es)
{
$user = $request->user();
if (Business::where('user_id', $user->id)->exists()) {
$esIndex = 'transaction_' . $business_id;
$stats = $es->getIndexStats($esIndex);
$integrationCount = Integration::nonDeletedIntegrations(['business_id' => $business_id])->count();
$indexSize = $es->getIndexSize($esIndex, $stats);
return [
'transaction_count' => $es->getIndexCount($esIndex),
'index_size_in_gb' => round($indexSize, 2),
'integration_count' => $integrationCount
];
}
abort(403, "This action is unauthorized.");
}
/**
* @param FilterAnalytics $request
* @return mixed
*/
public function index(FilterAnalytics $request)
{
$params = $request->validated();
$results = [];
if ($params['source'] === 'transactions') {
$analytic = new TransactionsAnalytics(new Transaction(), $params);
$results = $analytic->getAnalyticData();
} else if ($params['source'] === 'contacts') {
$analytic = new CustomFieldsAnalytics(new CustomField(), $params);
$results = $analytic->getAnalyticData();
}
return $results;
}
}