isMethod('POST') ? Permission::EMPLOYEES_CREATE : Permission::EMPLOYEES_UPDATE; return $this->user()?->can($permission->value) ?? false; } /** * @return array */ public function rules(): array { return [ 'email' => ['required', 'email', 'max:100', Rule::unique('users', 'email')->ignore($this->route('user')?->id)], 'username' => ['required', 'string', 'max:20', 'alpha_dash', Rule::unique('users', 'username')->ignore($this->route('user')?->id)], 'full_name' => ['required', 'string', 'max:200'], 'phone_number' => ['nullable', 'string', 'regex:/^08\d{8,11}$/'], 'gender' => ['nullable', Rule::enum(Gender::class)], 'birth_date' => ['nullable', 'date', 'before:today'], 'address' => ['nullable', 'string'], 'join_date' => ['required', 'date'], 'employment_status' => ['required', Rule::enum(EmploymentStatus::class)], 'base_salary' => ['required', 'integer', 'min:0'], 'role' => ['required', Rule::in(Role::assignableValues())], ]; } }