46 lines
1.5 KiB
PHP
46 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Requests\Admin;
|
|
|
|
use App\Enums\UserEnum;
|
|
use App\Rules\PhoneNumber;
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
use Illuminate\Validation\Rule;
|
|
|
|
class UserRequest extends FormRequest
|
|
{
|
|
/**
|
|
* Determine if the User is authorized to make this request.
|
|
*/
|
|
public function authorize(): bool
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Get the validation rules that apply to the request.
|
|
*
|
|
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
|
*/
|
|
public function rules(): array
|
|
{
|
|
$toBeEditedUser = $this->route()->parameter('user');
|
|
return [
|
|
'username' => ['nullable', 'min:2', 'max:255',
|
|
isset($toBeEditedUser)
|
|
? Rule::unique('users')->ignore($toBeEditedUser->id)
|
|
: Rule::unique('users')],
|
|
'phone' => ['required', 'max:255', new PhoneNumber],
|
|
'fullname' => 'nullable | max:255',
|
|
'role' => ['nullable', 'array', 'exists:roles,id'],
|
|
'profile_url' => ['nullable', 'exists:medium,url'],
|
|
'email' => ['nullable', 'email', 'max:255',
|
|
isset($toBeEditedUser)
|
|
? Rule::unique('users')->ignore($toBeEditedUser->id)
|
|
: Rule::unique('users')],
|
|
'password' => [isset($toBeEditedUser) ? 'nullable' : 'required', 'min:8' , 'confirmed'],
|
|
'level' => ['required', Rule::in(['مدیر' , 'پزشک' , 'سرپرست'])],
|
|
];
|
|
}
|
|
}
|