Completed
Push — feature/backpack ( 1e2264...84da73 )
by Chris
07:15
created

UpdateReferenceValidator   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 68
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 3
eloc 23
dl 0
loc 68
ccs 0
cts 16
cp 0
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A rules() 0 24 1
A validator() 0 3 1
1
<?php
2
0 ignored issues
show
Coding Style introduced by
Missing file doc comment
Loading history...
3
namespace App\Services\Validation\Requests;
4
5
use App\Services\Validation\BaseDataValidator;
6
use App\Services\Validation\Contracts\DataValidator;
7
use Illuminate\Support\Facades\Validator;
8
use Illuminate\Validation\Rule;
9
use App\Models\Lookup\Relationship;
10
use App\Models\Skill;
11
12
class UpdateReferenceValidator extends BaseDataValidator implements DataValidator
0 ignored issues
show
Coding Style introduced by
Missing doc comment for class UpdateReferenceValidator
Loading history...
13
{
14
15
    /**
16
     * Array of all possible relationship ids.
17
     *
18
     * @var int[]
19
     */
20
    protected $relationshipIds;
21
22
    /**
23
     * Array of all possible skill ids.
24
     *
25
     * @var int[]
26
     */
27
    protected $skillIds;
28
29
    /**
30
     * Construct a new UpdateReferenceValidator
31
     */
32
    public function __construct()
33
    {
34
        $this->relationshipIds = Relationship::all()->pluck('id')->toArray();
35
        $this->skillIds = Skill::all()->pluck('id')->toArray();
36
    }
37
    /**
38
     * Get the validation rules that apply to the request.
39
     *
40
     * @return mixed[]
41
     */
42
    public function rules() : array
43
    {
44
        return [
45
            'name' => 'required|string|max:191',
46
            'email' => [
47
                'required',
48
                'string',
49
                'max:191',
50
                'email',
51
            ],
52
            'relationship_id' => [
53
                'required',
54
                Rule::in($this->relationshipIds)
55
            ],
56
            'description' => 'required|string',
57
58
            'relatives.skills.*.id' => [
59
                'required',
60
                Rule::in($this->skillIds)
61
            ],
62
63
            'projects.*.name' => 'required|string|max:191',
64
            'projects.*.start_date' => 'required|date',
65
            'projects.*.end_date' => 'required|date',
66
67
68
        ];
69
    }
70
71
    /**
72
     * Returns a validator made with this data
73
     *
74
     * @param  mixed[] $data Data to validate.
75
     * @return Validator
0 ignored issues
show
Coding Style introduced by
Tag cannot be grouped with parameter tags in a doc comment
Loading history...
76
     */
77
    public function validator(array $data) : \Illuminate\Validation\Validator
78
    {
79
        return Validator::make($data, $this->rules());
0 ignored issues
show
Bug Best Practice introduced by
The expression return Illuminate\Suppor...($data, $this->rules()) returns the type Illuminate\Contracts\Validation\Validator which includes types incompatible with the type-hinted return Illuminate\Validation\Validator.
Loading history...
80
    }
81
}
82