Passed
Push — shop ( 5180ff...89f6e7 )
by Fèvre
05:07
created

ShopItemValidator::create()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

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