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

UpdateRequest::attributes()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 10
dl 0
loc 12
ccs 10
cts 10
cp 1
rs 9.9332
c 1
b 0
f 0
cc 1
nc 1
nop 0
crap 1
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\Rule;
10
use Illuminate\Validation\Rules;
11
use Propaganistas\LaravelPhone\PhoneNumber;
12
13
class UpdateRequest extends AbstractRequest
14
{
15
    /**
16
     * {@inheritDoc}
17
     */
18 1
    public function rules()
19
    {
20
        return [
21 1
            'branch_id' => 'required|exists:' . Branch::class . ',id',
22 1
            'username' => ['required', 'string', 'max:255', Rule::unique(User::class)->ignoreModel($this->route('user'))],
23 1
            'fullname' => 'required|string|max:255',
24
            'gender' => 'sometimes|nullable|enum:' . Gender::class,
25 1
            'email' => ['required', 'string', 'email', 'max:255', Rule::unique(User::class)->ignoreModel($this->route('user'))],
26 1
            'phone_country' => 'sometimes|in:ID',
27 1
            'phone' => ['required', 'string', 'phone:ID', function ($attribute, $phone, $fail) {
28 1
                $user = User::where($attribute, PhoneNumber::make($phone, request()->input('phone_country', env('PHONE_COUNTRY', 'ID')))->formatE164())
29 1
                    ->where($this->route('user')->getKeyName(), '!=', $this->route('user')->getKey())
30 1
                    ->count();
31
32 1
                if ($user > 0) {
33
                    $fail(trans('validation.unique', ['attribute' => static::getAttributes()[$attribute]]));
34
                }
35 1
            }],
36 1
            'password' => ['sometimes', 'nullable', 'confirmed', Rules\Password::defaults()],
37
            'role' => 'required|exists:' . Role::class . ',name',
38 1
            'is_active' => 'required|boolean',
39
        ];
40
    }
41
}
42