Completed
Pull Request — master (#21)
by Fèvre
04:45 queued 02:13
created

RoleValidator   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 0
Metric Value
wmc 2
lcom 0
cbo 3
dl 0
loc 48
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A create() 0 11 1
A update() 0 18 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 registration 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
            'username' => 'required|alpha_num|min:4|max:20|unique:users',
22
            'email' => 'required|email|max:50|unique:users',
23
            'password' => 'required|min:6|confirmed',
24
            'terms' => 'required|min:1'
25
        ];
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 role id to ignore the username 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:20',
45
                Rule::unique('roles')->ignore($id)
46
            ],
47
            'slug' => Rule::unique('roles')->ignore($id),
48
            'level' => 'required|integer',
49
            'description' => 'max:150',
50
            'permissions' => 'required'
51
        ];
52
        $data['slug'] = Str::slug($data['name'], config('roles.separator'));
53
54
        return FacadeValidator::make($data, $rules);
55
    }
56
}
57