Completed
Pull Request — master (#21)
by Fèvre
06:31 queued 03:41
created

RoleValidator::create()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 13
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 9
nc 1
nop 1
1
<?php
2
namespace Xetaravel\Models\Validators;
3
4
use Illuminate\Support\Facades\Validator as FacadeValidator;
5
use Illuminate\Support\Str;
6
use Illuminate\Validation\Rule;
7
use Illuminate\Validation\Validator;
8
9
class RoleValidator
10
{
11
    /**
12
     * Get the validator for an incoming create request.
13
     *
14
     * @param array $data The data to validate.
15
     *
16
     * @return \Illuminate\Validation\Validator
17
     */
18
    public static function create(array $data): Validator
19
    {
20
        $rules = [
21
            'name' => 'required|min:2|max:20|unique:roles',
22
            'slug' => 'unique:roles',
23
            'level' => 'required|integer',
24
            'description' => 'max:150',
25
            'permissions' => 'required'
26
        ];
27
        $data['slug'] = Str::slug($data['name'], config('roles.separator'));
28
29
        return FacadeValidator::make($data, $rules);
30
    }
31
32
    /**
33
     * Get a validator for an incoming update request.
34
     *
35
     * @param array $data The data to validate.
36
     * @param int $id The actual role id to ignore the username rule.
37
     *
38
     * @return \Illuminate\Validation\Validator
39
     */
40
    public static function update(array $data, int $id): Validator
41
    {
42
        $rules = [
43
            'name' => [
44
                'required',
45
                'min:2',
46
                'max:20',
47
                Rule::unique('roles')->ignore($id)
48
            ],
49
            'slug' => Rule::unique('roles')->ignore($id),
50
            'level' => 'required|integer',
51
            'description' => 'max:150',
52
            'permissions' => 'required'
53
        ];
54
        $data['slug'] = Str::slug($data['name'], config('roles.separator'));
55
56
        return FacadeValidator::make($data, $rules);
57
    }
58
}
59