Issues (17)

Http/Controllers/ProjectMilestoneController.php (1 issue)

Severity
1
<?php
2
3
namespace App\Http\Controllers;
4
5
use App\Project;
6
use App\ProjectMilestone;
7
use Illuminate\Http\Request;
8
9
class ProjectMilestoneController extends Controller
10
{
11
    public function __construct()
12
    {
13
        $this->middleware('auth')->except(['index', 'show']);
14
    }
15
16
    /**
17
     * Create the project milestone
18
     *
19
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View
20
     */
21
    public function create(Project $project)
22
    {
23
        if (!auth()->user()->can('update', $project)) {
24
            return redirect()->route('home');
25
        }
26
27
        $this->seo()->setTitle('Create Project Milestone');
28
        $this->seo()->setDescription('Milestones are a great way to track your progress versus your estimate.');
29
30
        return view('projects.milestones.create', compact('project'));
31
    }
32
33
    /**
34
     * Store the project milestone
35
     *
36
     * @param \Illuminate\Http\Request $request
37
     * @return \Illuminate\Http\RedirectResponse
38
     */
39
    public function store(Request $request, Project $project)
40
    {
41
        $request->validate([
42
            'title' => 'required'
43
        ]);
44
45
        $project->milestones()->create([
46
            'title' => $request->title,
47
            'user_id' => $request->user()->id ?? auth()->id(),
48
            'completed_at' => ((bool)$request->completed === true) ? now() : null
49
        ]);
50
51
        return redirect()->route('projects.show', [$project]);
52
    }
53
54
    /**
55
     * Edit a project milestone
56
     *
57
     * @param \Illuminate\Http\Request $request
58
     * @param \App\Project $project
59
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View
60
     */
61
    public function edit(Request $request, Project $project, ProjectMilestone $milestone)
62
    {
63
        if (!auth()->user()->can('update', $project)) {
64
            return redirect()->route('home');
65
        }
66
67
        $this->seo()->setTitle('Edit Project Milestone');
68
        $this->seo()->setDescription('Milestones are a great way to track your progress versus your estimate.');
69
70
        return view('projects.milestones.edit', compact('project', 'milestone'));
71
    }
72
73
    /**
74
     * Edit a project milestone
75
     *
76
     * @param \Illuminate\Http\Request $request
77
     * @param \App\Project $project
78
     * @param \App\ProjectMilestone $milestone
79
     * @return \Illuminate\Http\RedirectResponse
80
     */
81
    public function update(Request $request, Project $project, ProjectMilestone $milestone)
82
    {
83
        if (!auth()->user()->can('update', $project)) {
84
            return redirect()->route('home');
85
        }
86
87
        $request->validate([
88
            'title' => 'required'
89
        ]);
90
        
91
        $milestone->update([
92
            'title' => $request->title,
93
            'completed_at' => ((bool)$request->completed === true) ? now() : null
94
        ]);
95
96
        return redirect()->route('projects.show', [$project]);
97
    }
98
99
    /**
100
     * Complete project milestone
101
     *
102
     * @param \Illuminate\Http\Request $request
103
     * @param \App\Project $project
104
     * @param \App\ProjectMilestone $milestone
105
     * @return \Illuminate\Http\RedirectResponse
106
     */
107
    public function complete(Request $request, Project $project, ProjectMilestone $milestone)
0 ignored issues
show
The parameter $request is not used and could be removed. ( Ignorable by Annotation )

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

107
    public function complete(/** @scrutinizer ignore-unused */ Request $request, Project $project, ProjectMilestone $milestone)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
108
    {
109
        if (!auth()->user()->can('update', $project)) {
110
            return redirect()->route('home');
111
        }
112
113
        $milestone->update([
114
            'completed_at' => now()
115
        ]);
116
117
        return redirect()->route('projects.show', [$project]);
118
    }
119
120
    /**
121
     * Destroy a project milestone
122
     *
123
     * @param \App\Project $project
124
     * @param \App\ProjectMilestone $milestone
125
     * @return \Illuminate\Http\RedirectResponse
126
     */
127
    public function destroy(Project $project, ProjectMilestone $milestone)
128
    {
129
        if (!auth()->user()->can('delete', $project)) {
130
            return redirect()->route('home');
131
        }
132
133
        $milestone->delete();
134
135
        return redirect()->route('projects.show', [$project]);
136
    }
137
}
138