Passed
Push — feature/admin-only-job-create ( 4243e9...e9cbd9 )
by Tristan
13:05 queued 07:52
created

JobPolicy::update()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 3

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 6
rs 10
c 0
b 0
f 0
ccs 4
cts 4
cp 1
cc 3
nc 3
nop 2
crap 3
1
<?php
2
3
namespace App\Policies;
4
5
use App\Models\User;
6
use App\Models\JobPoster;
7
use App\Policies\BasePolicy;
8
9
class JobPolicy extends BasePolicy
10
{
11
12
    /**
13
     * Determine whether the user can view the job poster.
14
     *
15
     * @param  \App\Models\User  $user
2 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Expected 6 spaces after parameter type; 2 found
Loading history...
16
     * @param  \App\Models\JobPoster  $jobPoster
2 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Expected 1 spaces after parameter type; 2 found
Loading history...
17
     * @return mixed
18
     */
19 7
    public function view(?User $user, JobPoster $jobPoster)
0 ignored issues
show
Coding Style introduced by
Expected type hint "\App\Models\User"; found "?User" for $user
Loading history...
20
    {
21
        //Anyone can view a published job
22
        //Only the manager that created it can view an unpublished job
23 7
        return $jobPoster->published ||
24
            (
25 3
                $user &&
26 7
                $jobPoster->manager->user->id == $user->id
27
            );
28
    }
29
30
    /**
31
     * Determine whether the user can create job posters.
32
     *
33
     * @param  \App\Models\User  $user
2 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Expected 1 spaces after parameter type; 2 found
Loading history...
34
     * @return mixed
35
     */
36
    public function create(User $user)
37
    {
38
        //Any manager can create a new job poster
39
        //TODO: for now, only Admins can create posters. This will change soon.
40
        return $user->hasRole('admin');
41
    }
42
43
    /**
44
     * Determine whether the user can update the job poster.
45
     *
46
     * @param  \App\Models\User  $user
2 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Expected 6 spaces after parameter type; 2 found
Loading history...
47
     * @param  \App\Models\JobPoster  $jobPoster
2 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Expected 1 spaces after parameter type; 2 found
Loading history...
48
     * @return mixed
49
     */
50 6
    public function update(User $user, JobPoster $jobPoster)
51
    {
52
        //Only managers can edit jobs, and only their own, managers can't publish jobs or edit published jobs
53 6
        return $user->user_role->name == 'manager' &&
54 6
            $jobPoster->manager->user->id == $user->id &&
55 6
            !$jobPoster->published;
56
    }
57
58
    /**
59
     * Determine whether the user can review applications to the job poster.
60
     *
61
     * @param  \App\Models\User  $user
2 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Expected 6 spaces after parameter type; 2 found
Loading history...
62
     * @param  \App\Models\JobPoster  $jobPoster
2 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Expected 1 spaces after parameter type; 2 found
Loading history...
63
     * @return mixed
64
     */
65
    public function review(User $user, JobPoster $jobPoster)
66
    {
67
        //Only managers can edit jobs, and only their own, managers can't publish jobs or edit published jobs
68
        return $user->user_role->name == 'manager' &&
69
            $jobPoster->manager->user->id == $user->id &&
70
            $jobPoster->isClosed();
71
    }
72
73
74
    /**
75
     * Determine whether the user can delete the job poster.
76
     *
77
     * @param \App\Models\User      $user      User object making the request.
78
     * @param \App\Models\JobPoster $jobPoster Job Poster object being acted upon.
79
     *
80
     * @return boolean
81
     */
82
    public function delete(User $user, JobPoster $jobPoster) : bool
83
    {
84
        // Jobs can only be deleted when they're in the 'draft'
85
        // state, and only by managers that created them.
86
        return $user->user_role->name == 'manager' &&
87
            $jobPoster->manager->user->id == $user->id &&
88
            !$jobPoster->published;
89
    }
90
91
    /**
92
     * Determine whether the user can restore the job poster.
93
     *
94
     * @param  \App\Models\User  $user
2 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Expected 6 spaces after parameter type; 2 found
Loading history...
95
     * @param  \App\Models\JobPoster  $jobPoster
2 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Expected 1 spaces after parameter type; 2 found
Loading history...
96
     * @return mixed
97
     */
98
    public function restore(User $user, JobPoster $jobPoster)
0 ignored issues
show
Unused Code introduced by
The parameter $user 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

98
    public function restore(/** @scrutinizer ignore-unused */ User $user, JobPoster $jobPoster)

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...
Unused Code introduced by
The parameter $jobPoster 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

98
    public function restore(User $user, /** @scrutinizer ignore-unused */ JobPoster $jobPoster)

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...
99
    {
100
        //
101
    }
102
103
    /**
104
     * Determine whether the user can permanently delete the job poster.
105
     *
106
     * @param  \App\Models\User  $user
2 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Expected 6 spaces after parameter type; 2 found
Loading history...
107
     * @param  \App\Models\JobPoster  $jobPoster
2 ignored issues
show
Coding Style Documentation introduced by
Missing parameter comment
Loading history...
Coding Style introduced by
Expected 1 spaces after parameter type; 2 found
Loading history...
108
     * @return mixed
109
     */
110
    public function forceDelete(User $user, JobPoster $jobPoster)
0 ignored issues
show
Unused Code introduced by
The parameter $user 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

110
    public function forceDelete(/** @scrutinizer ignore-unused */ User $user, JobPoster $jobPoster)

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...
Unused Code introduced by
The parameter $jobPoster 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

110
    public function forceDelete(User $user, /** @scrutinizer ignore-unused */ JobPoster $jobPoster)

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...
111
    {
112
        //
113
    }
114
}
115