Passed
Push — develop ( b27e40...fcd18c )
by Septianata
43:54
created

StoreRequest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 4
eloc 26
dl 0
loc 50
rs 10
c 1
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A attributes() 0 12 1
A authorize() 0 3 1
A rules() 0 19 2
1
<?php
2
3
namespace App\Http\Requests\User;
4
5
use App\Enum\Gender;
6
use App\Infrastructure\Foundation\Http\FormRequest;
7
use App\Models\User;
8
use Illuminate\Validation\Rules;
9
use Propaganistas\LaravelPhone\PhoneNumber;
10
11
class StoreRequest extends FormRequest
12
{
13
    /**
14
     * {@inheritDoc}
15
     */
16
    public function authorize()
17
    {
18
        return !is_null($this->user());
19
    }
20
21
    /**
22
     * {@inheritDoc}
23
     */
24
    public function rules()
25
    {
26
        return [
27
            'branch_id' => 'required|exists:branches,id',
28
            'username' => 'required|string|max:255|unique:users',
29
            'fullname' => 'required|string|max:255',
30
            'gender' => 'sometimes|nullable|enum:' . Gender::class,
31
            'email' => 'required|string|email|max:255|unique:users',
32
            'phone_country' => 'sometimes|in:ID',
33
            'phone' => ['required', 'string', 'phone:ID', function ($attribute, $phone, $fail) {
34
                $user = User::where('phone', PhoneNumber::make($phone, request()->input('phone_country', env('PHONE_COUNTRY', 'ID')))->formatE164())->count();
35
36
                if ($user > 0) {
37
                    $fail(trans('validation.unique', ['attribute' => static::getAttributes()[$attribute]]));
38
                }
39
            }],
40
            'password' => ['required', 'confirmed', Rules\Password::defaults()],
41
            'role' => 'required|exists:roles,name',
42
            'is_active' => 'required|boolean',
43
        ];
44
    }
45
46
    /**
47
     * {@inheritDoc}
48
     */
49
    public function attributes()
50
    {
51
        return [
52
            'branch_id' => trans('admin-lang.branch'),
53
            'username' => trans('Username'),
54
            'fullname' => trans('Full name'),
55
            'gender' => trans('Gender'),
56
            'email' => trans('Email'),
57
            'phone_country' => trans('Phone Country'),
58
            'phone' => trans('Phone Number'),
59
            'role' => trans('Role'),
60
            'is_active' => trans('Active'),
61
        ];
62
    }
63
}
64