DashboardController::studentDashboard()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 18
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 11
nc 1
nop 0
dl 0
loc 18
rs 9.9
c 0
b 0
f 0
1
<?php
2
3
namespace App\Http\Controllers;
4
5
use App\Judite\Models\Course;
6
use Illuminate\Support\Facades\DB;
7
use Illuminate\Support\Facades\Auth;
8
9
class DashboardController extends Controller
10
{
11
    /**
12
     * Create a new controller instance.
13
     */
14
    public function __construct()
15
    {
16
        $this->middleware('auth');
17
    }
18
19
    /**
20
     * Show the dashboard.
21
     *
22
     * @return \Illuminate\View\View
23
     */
24
    public function index()
25
    {
26
        return Auth::user()->isAdmin()
0 ignored issues
show
Bug introduced by
The method isAdmin() does not exist on Illuminate\Contracts\Auth\Authenticatable. It seems like you code against a sub-type of Illuminate\Contracts\Auth\Authenticatable such as Illuminate\Foundation\Auth\User. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

26
        return Auth::user()->/** @scrutinizer ignore-call */ isAdmin()
Loading history...
27
            ? $this->adminDashboard()
28
            : $this->studentDashboard();
29
    }
30
31
    /**
32
     * Get the admin's dashboard.
33
     *
34
     * @return \Illuminate\View\View
35
     */
36
    protected function adminDashboard()
37
    {
38
        $courses = DB::transaction(function () {
39
            return Course::withCount('enrollments')
40
                ->orderedList()
41
                ->get();
42
        });
43
44
        $courses = $courses->groupBy(function ($course) {
45
            return $course->present()->getOrdinalYear();
46
        });
47
48
        return view('admin.dashboard', compact('courses'));
49
    }
50
51
    /**
52
     * Get the student's dashboard.
53
     *
54
     * @return \Illuminate\View\View
55
     */
56
    protected function studentDashboard()
57
    {
58
        $data = DB::transaction(function () {
59
            $proposedExchanges = Auth::student()->proposedExchanges()->get();
60
            $requestedExchanges = Auth::student()->requestedExchanges()->get();
61
            $enrollments = Auth::student()->enrollments()
62
                ->withCount('exchangesAsSource')
63
                ->orderByCourse()
64
                ->get();
65
66
            return compact('proposedExchanges', 'requestedExchanges', 'enrollments');
67
        });
68
69
        $data['enrollments'] = $data['enrollments']->groupBy(function ($enrollment) {
70
            return $enrollment->course->present()->getOrdinalYear();
71
        });
72
73
        return view('dashboard', $data);
74
    }
75
}
76