Passed
Push — master ( a4cc6f...c5607b )
by Paul
04:25
created

StatsController::data()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 22
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 11
nc 4
nop 3
dl 0
loc 22
c 1
b 0
f 1
cc 3
rs 9.9
1
<?php
2
3
namespace Devpri\Tinre\Http\Controllers\Api\V1;
4
5
use Devpri\Tinre\Http\Controllers\Controller;
6
use Devpri\Tinre\Models\Url;
7
use Devpri\Tinre\Services\StatsService;
8
use Illuminate\Http\Request;
9
10
class StatsController extends Controller
11
{
12
    protected $statsService;
13
14
    public function __construct(StatsService $statsService)
15
    {
16
        $this->statsService = $statsService;
17
    }
18
19
    public function clicks(Request $request, $id)
20
    {
21
        $request->validate([
22
            'start_date' => ['required', 'date'],
23
            'end_date' => ['required', 'date'],
24
        ]);
25
        
26
        $user = $request->user();
27
28
        $url = Url::where('id', $id)->firstOrFail();
29
        
30
        if ($user->cant('view', $url)) {
31
            abort(401);
32
        }
33
        
34
        if (! $user->hasPermissionTo('stats:view')) {
35
            abort(401);
36
        }
37
        
38
        $data = $this->statsService->getClicks($id, [$request->start_date, $request->end_date]);
39
40
        return response()->json(['data' => $data]);
41
    }
42
43
    public function data(Request $request, $id, $column)
44
    {
45
        $request->validate([
46
            'start_date' => ['required', 'date'],
47
            'end_date' => ['required', 'date'],
48
        ]);
49
50
        $user = $request->user();
51
52
        $url = Url::where('id', $id)->firstOrFail();
53
54
        if ($user->cant('view', $url)) {
55
            abort(401);
56
        }
57
58
        if (! $user->hasPermissionTo('stats:view')) {
59
            abort(401);
60
        }
61
62
        $data = $this->statsService->getData($column, $id, [$request->start_date, $request->end_date]);
63
64
        return response()->json($data);
65
    }
66
}
67