Passed
Push — develop ( 9324e6...f3eb57 )
by Septianata
04:31
created

StoreRequest   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 24
Duplicated Lines 0 %

Test Coverage

Coverage 90.91%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
eloc 15
c 1
b 0
f 0
dl 0
loc 24
ccs 10
cts 11
cp 0.9091
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A rules() 0 19 2
1
<?php
2
3
namespace App\Http\Requests\User;
4
5
use App\Enum\Gender;
6
use App\Models\Branch;
7
use App\Models\Role;
8
use App\Models\User;
9
use Illuminate\Validation\Rules;
10
use Propaganistas\LaravelPhone\PhoneNumber;
11
12
class StoreRequest extends AbstractRequest
13
{
14
    /**
15
     * {@inheritDoc}
16
     */
17 1
    public function rules()
18
    {
19
        return [
20 1
            'branch_id' => 'required|exists:' . Branch::class . ',id',
21
            'username' => 'required|string|max:255|unique:' . User::class,
22 1
            'fullname' => 'required|string|max:255',
23
            'gender' => 'sometimes|nullable|enum:' . Gender::class,
24
            'email' => 'required|string|email|max:255|unique:' . User::class,
25 1
            'phone_country' => 'sometimes|in:ID',
26 1
            'phone' => ['required', 'string', 'phone:ID', function ($attribute, $phone, $fail) {
27 1
                $user = User::where($attribute, PhoneNumber::make($phone, request()->input('phone_country', env('PHONE_COUNTRY', 'ID')))->formatE164())->count();
28
29 1
                if ($user > 0) {
30
                    $fail(trans('validation.unique', ['attribute' => static::getAttributes()[$attribute]]));
31
                }
32 1
            }],
33 1
            'password' => ['required', 'confirmed', Rules\Password::defaults()],
34
            'role' => 'required|exists:' . Role::class . ',name',
35 1
            'is_active' => 'required|boolean',
36
        ];
37
    }
38
}
39