DutyController   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 76
Duplicated Lines 11.84 %

Coupling/Cohesion

Components 1
Dependencies 7

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 10
lcom 1
cbo 7
dl 9
loc 76
ccs 0
cts 53
cp 0
rs 10
c 0
b 0
f 0

7 Methods

Rating   Name   Duplication   Size   Complexity  
A index() 0 6 1
A create() 9 9 1
A show() 0 7 1
A edit() 0 10 1
A store() 0 11 2
A update() 0 14 2
A destroy() 0 10 2

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
namespace SET\Http\Controllers;
4
5
use SET\Duty;
6
use SET\Group;
7
use SET\Handlers\Duty\DutyList;
8
use SET\Http\Requests\DutyRequest;
9
use SET\User;
10
11
class DutyController extends Controller
12
{
13
    public function index()
14
    {
15
        $duties = Duty::all();
16
17
        return view('duty.index', compact('duties'));
18
    }
19
20 View Code Duplication
    public function create()
21
    {
22
        $this->authorize('edit');
23
24
        $users = User::active()->skipSystem()->get()->sortBy('userFullName')->pluck('userFullName', 'id');
25
        $groups = Group::all()->pluck('name', 'id');
26
27
        return view('duty.create', compact('users', 'groups'));
28
    }
29
30
    public function store(DutyRequest $request)
31
    {
32
        $data = $request->all();
33
        $duty = Duty::create($data);
34
35
        isset($data['groups'])
36
            ? $duty->groups()->attach($data['groups'])
37
            : $duty->users()->attach($data['users']);
38
39
        return redirect()->action('DutyController@index');
40
    }
41
42
    public function show($dutyID)
43
    {
44
        $duty = Duty::findOrFail($dutyID);
45
        $list = (new DutyList($duty))->htmlOutput();
46
47
        return view('duty.show', compact('duty', 'list'));
48
    }
49
50
    public function edit($dutyID)
51
    {
52
        $this->authorize('edit');
53
54
        $duty = Duty::with('users', 'groups')->findOrFail($dutyID);
55
        $users = User::active()->skipSystem()->orderBy('last_name', 'ASC')->get()->pluck('userFullName', 'id');
56
        $groups = Group::orderBy('name', 'ASC')->get()->pluck('name', 'id');
57
58
        return view('duty.edit', compact('duty', 'users', 'groups'));
59
    }
60
61
    public function update(DutyRequest $request, $dutyID)
62
    {
63
        $data = $request->all();
64
        $duty = Duty::findOrFail($dutyID);
65
        $duty->update($data);
66
67
        isset($data['groups'])
68
            ? $duty->groups()->sync($data['groups'])
69
            : $duty->users()->sync($data['users']);
70
71
        (new DutyList($duty))->setLastWorkedDate();
72
73
        return redirect()->action('DutyController@index');
74
    }
75
76
    public function destroy(Duty $duty)
77
    {
78
        $this->authorize('edit');
79
80
        $duty->has_groups ? $duty->groups()->detach() : $duty->users()->detach();
81
82
        $duty->delete();
83
84
        return redirect()->action('DutyController@index');
85
    }
86
}
87