Code Duplication    Length = 45-45 lines in 2 locations

app/Models/Validators/ArticleValidator.php 1 location

@@ 9-53 (lines=45) @@
6
use Illuminate\Validation\Rule;
7
use Illuminate\Validation\Validator;
8
9
class ArticleValidator
10
{
11
    /**
12
     * Get a 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
            'title' => 'required|min:5',
22
            'category_id' => 'required',
23
            'slug' => 'unique:articles',
24
            'content' => 'required|min:10'
25
        ];
26
        $data['slug'] = Slug::fromTitle($data['title']);
27
28
        return FacadeValidator::make($data, $rules);
29
    }
30
31
    /**
32
     * Get a validator for an incoming update request.
33
     *
34
     * @param array $data The data to validate.
35
     * @param int $id The actual article id to ignore the slug rule.
36
     *
37
     * @return \Illuminate\Validation\Validator
38
     */
39
    public static function update(array $data, int $id): Validator
40
    {
41
        $rules = [
42
            'title' => 'required|min:5',
43
            'category_id' => 'required',
44
            'slug' => [
45
                Rule::unique('articles')->ignore($id)
46
            ],
47
            'content' => 'required|min:10'
48
        ];
49
        $data['slug'] = Slug::fromTitle($data['title']);
50
51
        return FacadeValidator::make($data, $rules);
52
    }
53
}
54

app/Models/Validators/DiscussCategoryValidator.php 1 location

@@ 9-53 (lines=45) @@
6
use Illuminate\Validation\Rule;
7
use Illuminate\Validation\Validator;
8
9
class DiscussCategoryValidator
10
{
11
    /**
12
     * Get a 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
            'title' => 'required|min:5',
22
            'slug' => 'unique:discuss_categories',
23
            'color' => 'min:7|max:7',
24
            'description' => 'required|min:10'
25
        ];
26
        $data['slug'] = Slug::fromTitle($data['title']);
27
28
        return FacadeValidator::make($data, $rules);
29
    }
30
31
    /**
32
     * Get a validator for an incoming update request.
33
     *
34
     * @param array $data The data to validate.
35
     * @param int $id The actual category id to ignore the slug rule.
36
     *
37
     * @return \Illuminate\Validation\Validator
38
     */
39
    public static function update(array $data, int $id): Validator
40
    {
41
        $rules = [
42
            'title' => 'required|min:5',
43
            'slug' => [
44
                Rule::unique('discuss_categories')->ignore($id)
45
            ],
46
            'color' => 'min:7|max:7',
47
            'description' => 'required|min:10'
48
        ];
49
        $data['slug'] = Slug::fromTitle($data['title']);
50
51
        return FacadeValidator::make($data, $rules);
52
    }
53
}
54