TravelController   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 58
Duplicated Lines 53.45 %

Coupling/Cohesion

Components 1
Dependencies 7

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 7
dl 31
loc 58
ccs 0
cts 40
cp 0
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A create() 0 6 1
A store() 17 17 2
A edit() 0 6 1
A update() 14 14 2
A destroy() 0 8 1

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 Illuminate\Support\Facades\Auth;
6
use Illuminate\Support\Facades\Redirect;
7
use Illuminate\Support\Facades\Storage;
8
use Krucas\Notification\Facades\Notification;
9
use SET\Attachment;
10
use SET\Http\Requests\TravelRequest;
11
use SET\Travel;
12
use SET\User;
13
14
class TravelController extends Controller
15
{
16
    public function create(User $user)
17
    {
18
        $this->authorize('edit');
19
20
        return view('travel.create', compact('user'));
21
    }
22
23 View Code Duplication
    public function store(TravelRequest $request, User $user)
24
    {
25
        $this->authorize('edit');
26
27
        $data = $request->all();
28
        $data['author_id'] = Auth::user()->id;
29
30
        $travel = $user->travels()->create($data);
31
32
        if ($request->hasFile('files')) {
33
            Attachment::upload($travel, $request->file('files'), $data['encrypt']);
34
        }
35
36
        Notification::container()->success('Travel successfully created');
37
38
        return redirect()->action('UserController@show', $user->id);
39
    }
40
41
    public function edit(User $user, Travel $travel)
42
    {
43
        $this->authorize('edit_training_user', $user);
44
45
        return view('travel.edit', compact('user', 'travel'));
46
    }
47
48 View Code Duplication
    public function update(TravelRequest $request, User $user, Travel $travel)
49
    {
50
        $this->authorize('edit_training_user', $user);
51
        $data = $request->all();
52
        $travel->update($data);
53
54
        if ($request->hasFile('files')) {
55
            Attachment::upload($travel, $request->file('files'), $data['encrypt']);
56
        }
57
58
        Notification::container()->success('Travel successfully updated');
59
60
        return redirect()->action('UserController@show', $user->id);
61
    }
62
63
    public function destroy($userID, $travelID)
64
    {
65
        $this->authorize('edit');
66
        Travel::findOrFail($travelID)->delete();
67
        Storage::deleteDirectory('travel_'.$travelID);
68
69
        return Redirect::back();
70
    }
71
}
72