GroupsController::index()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 19
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 2

Importance

Changes 2
Bugs 1 Features 0
Metric Value
c 2
b 1
f 0
dl 0
loc 19
ccs 11
cts 11
cp 1
rs 9.4285
cc 2
eloc 11
nc 2
nop 1
crap 2
1
<?php
2
3
namespace plunner\Http\Controllers\Employees\Planners;
4
5
use Illuminate\Http\Request;
6
use plunner\Group;
7
use plunner\Http\Controllers\Controller;
8
use plunner\Http\Requests;
9
use plunner\Planner;
10
11
class GroupsController extends Controller
12
{
13 15
    public function __construct()
14
    {
15 15
        config(['auth.model' => Planner::class]);
16 15
        config(['jwt.user' => Planner::class]);
17 15
        $this->middleware('jwt.authandrefresh:mode-en');
18 15
    }
19
20
    /**
21
     * Display a listing of the resource.
22
     * ?current=1 -> to exclude old planed meetings
23
     *
24
     * @param Request $request needed for get query to get only current planed meetings (to be planned are all retrieved)
25
     * @return \Illuminate\Http\Response
26
     */
27 6
    public function index(Request $request)
28
    {
29
        /**
30
         * @var $planner Planner
31
         */
32 6
        $planner = \Auth::user();
33 6
        $groups = $planner->groupsManaged();
34 6
        if ($request->query('current'))
35
            $groups->with(['meetings' => function ($query) {
36 3
                $query->where(function ($query) { //parenthesis for conditions ...(C1 OR C2)...
37 3
                    $query->where('start_time', '=', NULL);//to be planned
38
                    //datetime to consider timezone, don't use mysql NOW()
39 3
                    $query->orWhere('start_time', '>=', new \DateTime());//planned
40 3
                });
41 3
            }]);
42
        else
43 3
            $groups->with('meetings');
44 6
        return $groups->get();//both planed and to be planned
45
    }
46
47
    /**
48
     * Display the specified resource.
49
     *
50
     * @param  int $id
51
     * @return \Illuminate\Http\Response
52
     */
53 6
    public function show($id)
54
    {
55 6
        $group = Group::with('meetings', 'employees')->findOrFail($id);
56 6
        $this->authorize($group);
57 3
        return $group;
58
    }
59
}
60