Passed
Push — main ( 3cfdb8...a45320 )
by PRATIK
10:34
created

PostRequest::rules()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 23
Code Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 1
eloc 21
c 1
b 0
f 1
nc 1
nop 0
dl 0
loc 23
rs 9.584
1
<?php
2
3
namespace Adminetic\Website\Http\Requests;
4
5
use Adminetic\Website\Models\Admin\Post;
6
use Illuminate\Foundation\Http\FormRequest;
7
use Cviebrock\EloquentSluggable\Services\SlugService;
8
9
class PostRequest extends FormRequest
10
{
11
    /**
12
     * Determine if the user is authorized to make this request.
13
     *
14
     * @return bool
15
     */
16
    public function authorize()
17
    {
18
        return true;
19
    }
20
21
22
    /**
23
     * Prepare the data for validation.
24
     *
25
     * @return void
26
     */
27
    protected function prepareForValidation()
28
    {
29
        $this->merge([
30
            'code' => $this->post->code ?? rand(100000, 999999),
31
            'slug' => SlugService::createSlug(Post::class, 'slug', $this->name)
32
        ]);
33
    }
34
35
    /**
36
     * Get the validation rules that apply to the request.
37
     *
38
     * @return array
39
     */
40
    public function rules()
41
    {
42
        $id = $this->post->id ?? '';
43
        return [
44
            'slug' => 'required|max:255|unique:posts,slug,' . $id,
45
            'code' => 'required|max:255|unique:posts,code,' . $id,
46
            'author_id' => 'required|numeric',
47
            'category_id' => 'required|numeric',
48
            'name' => 'required|max:255',
49
            'excerpt' => 'required|max:255',
50
            'body' => 'sometimes|max:65535',
51
            'image' => 'sometimes|file|image:max:3000',
52
            'status' => 'required',
53
            'featured' => 'required|boolean',
54
            'priority' => 'nullable|numeric',
55
            'type' => 'nullable|numeric',
56
            'video' => 'nullable|max:255',
57
            'audio' => 'nullable|max:255',
58
            'breaking_news' => 'nullable|boolean',
59
            'hot_news' => 'nullable|boolean',
60
            'seo_name' => 'sometimes|max:255',
61
            'meta_description' => 'sometimes|max:255',
62
            'meta_keywords' => 'sometimes',
63
        ];
64
    }
65
}
66