Completed
Push — master ( df6768...08ae01 )
by Fèvre
11:28 queued 02:11
created

PermissionValidator::create()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 11
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 7
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 PermissionValidator
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:30|unique:permissions',
22
            'slug' => 'unique:permissions',
23
            'description' => 'max:150'
24
        ];
25
        $data['slug'] = Str::slug($data['name'], config('roles.separator'));
26
27
        return FacadeValidator::make($data, $rules);
28
    }
29
30
    /**
31
     * Get a validator for an incoming update request.
32
     *
33
     * @param array $data The data to validate.
34
     * @param int $id The actual permission id to ignore the name rule.
35
     *
36
     * @return \Illuminate\Validation\Validator
37
     */
38
    public static function update(array $data, int $id): Validator
39
    {
40
        $rules = [
41
            'name' => [
42
                'required',
43
                'min:2',
44
                'max:30',
45
                Rule::unique('permissions')->ignore($id)
46
            ],
47
            'slug' => Rule::unique('permissions')->ignore($id),
48
            'description' => 'max:150'
49
        ];
50
        $data['slug'] = Str::slug($data['name'], config('roles.separator'));
51
52
        return FacadeValidator::make($data, $rules);
53
    }
54
}
55