Passed
Push — master ( 02b2dd...8b56d0 )
by Paul
05:11
created

StatsController::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 1
eloc 1
c 1
b 0
f 1
nc 1
nop 1
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
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 10
    public function __construct(StatsService $statsService)
15
    {
16 10
        $this->statsService = $statsService;
17 10
    }
18
19 5
    public function clicks(Request $request, $id)
20
    {
21 5
        $request->validate([
22 5
            'start_date' => ['required', 'date'],
23
            'end_date' => ['required', 'date'],
24
        ]);
25
26 5
        $user = $request->user();
27
28 5
        $url = Url::where('id', $id)->firstOrFail();
29
30 5
        if ($user->cant('view', $url)) {
31 1
            abort(401);
32
        }
33
34 4
        if (! $user->hasPermissionTo('stats:view')) {
35 1
            abort(401);
36
        }
37
38 3
        $data = $this->statsService->getClicks($id, $request->start_date, $request->end_date);
39
40 3
        return response()->json(['data' => $data]);
41
    }
42
43 5
    public function data(Request $request, $id, $column)
44
    {
45 5
        $request->validate([
46 5
            'start_date' => ['required', 'date'],
47
            'end_date' => ['required', 'date'],
48
        ]);
49
50 5
        $user = $request->user();
51
52 5
        $url = Url::where('id', $id)->firstOrFail();
53
54 5
        if ($user->cant('view', $url)) {
55 1
            abort(401);
56
        }
57
58 4
        if (! $user->hasPermissionTo('stats:view')) {
59 1
            abort(401);
60
        }
61
62 3
        $data = $this->statsService->getData($column, $id, $request->start_date, $request->end_date);
63
64 3
        return response()->json($data);
65
    }
66
}
67