ProductRequest   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 30
c 1
b 0
f 0
dl 0
loc 54
rs 10
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A prepareForValidation() 0 7 3
A authorize() 0 3 1
A rules() 0 26 1
1
<?php
2
3
namespace Adminetic\Website\Http\Requests;
4
5
use Illuminate\Foundation\Http\FormRequest;
6
use Illuminate\Support\Str;
7
8
class ProductRequest extends FormRequest
9
{
10
    /**
11
     * Determine if the user is authorized to make this request.
12
     */
13
    public function authorize(): bool
14
    {
15
        return true;
16
    }
17
18
    /**
19
     * Prepare the data for validation.
20
     */
21
    protected function prepareForValidation(): void
22
    {
23
        $this->merge([
24
            'slug' => ! is_null($this->name) ? Str::slug($this->name) : null,
25
            'sku' => ! is_null($this->name) ? Str::slug($this->name) : null,
26
            'meta_name' => $this->project->meta_name ?? $this->meta_name ?? $this->name ?? null,
27
            'meta_description' => $this->project->meta_description ?? $this->meta_description ?? $this->excerpt ?? null,
28
        ]);
29
    }
30
31
    /**
32
     * Get the validation rules that apply to the request.
33
     *
34
     * @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string>
35
     */
36
    public function rules(): array
37
    {
38
        $id = $this->product->id ?? '';
39
40
        return [
41
            'sku' => 'required|unique:'.config('website.table_prefix', 'website').'_products,sku,'.$id,
42
            'name' => 'required|unique:'.config('website.table_prefix', 'website').'_products,name,'.$id,
43
            'generic_name' => 'nullable',
44
            'strength' => 'nullable',
45
            'dosage_form' => 'nullable',
46
            'slug' => 'required|unique:'.config('website.table_prefix', 'website').'_products,slug,'.$id,
47
            'category_id' => 'nullable|exists:'.config('website.table_prefix', 'website').'_categories,id',
48
            'selling_price' => 'required|numeric',
49
            'cost_price' => 'nullable|numeric',
50
            'quantity' => 'sometimes|numeric',
51
            'quantity_alert' => 'sometimes|numeric',
52
            'points' => 'nullable|numeric',
53
            'excerpt' => 'nullable|max:5500',
54
            'description' => 'nullable|max:55000',
55
            'position' => 'nullable|numeric',
56
            'active' => 'sometimes|boolean',
57
            'discount' => 'sometimes|numeric',
58
            'data' => 'nullable',
59
            'meta_name' => 'nullable|max:100',
60
            'meta_description' => 'nullable|max:255',
61
            'meta_keywords' => 'nullable|max:100',
62
        ];
63
    }
64
}
65