StatsController   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Test Coverage

Coverage 92%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 25
c 1
b 0
f 0
dl 0
loc 55
ccs 23
cts 25
cp 0.92
rs 10
wmc 7

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A data() 0 22 3
A clicks() 0 22 3
1
<?php
2
3
namespace Devpri\Tinre\Http\Controllers\Web;
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 8
    public function __construct(StatsService $statsService)
15
    {
16 8
        $this->statsService = $statsService;
17 8
    }
18
19 4
    public function clicks(Request $request, $id)
20
    {
21 4
        $request->validate([
22 4
            'start_date' => ['required', 'date'],
23
            'end_date' => ['required', 'date'],
24
        ]);
25
26 4
        $user = $request->user();
27
28 4
        $url = Url::where('id', $id)->firstOrFail();
29
30 4
        if ($user->cant('view', $url)) {
31 1
            abort(401);
32
        }
33
34 3
        if (! $user->hasPermissionTo('stats:view')) {
35
            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 4
    public function data(Request $request, $id, $column)
44
    {
45 4
        $request->validate([
46 4
            'start_date' => ['required', 'date'],
47
            'end_date' => ['required', 'date'],
48
        ]);
49
50 4
        $user = $request->user();
51
52 4
        $url = Url::where('id', $id)->firstOrFail();
53
54 4
        if ($user->cant('view', $url)) {
55 1
            abort(401);
56
        }
57
58 3
        if (! $user->hasPermissionTo('stats:view')) {
59
            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