isMethod('POST') ? Permission::EMPLOYEES_CREATE : Permission::EMPLOYEES_UPDATE; return $this->user()?->can($permission->value) ?? false; } /** * @return array */ public function rules(): array { $isOwner = $this->role === Role::OWNER->value; 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', 'max:20', 'regex:/^08\d{8,11}$/'], 'gender' => ['nullable', Rule::enum(Gender::class)], 'birth_date' => ['nullable', 'date', 'before:today'], 'address' => ['nullable', 'string'], 'join_date' => [Rule::requiredIf(! $isOwner), 'date'], 'employment_status' => [Rule::requiredIf(! $isOwner), Rule::enum(EmploymentStatus::class)], 'base_salary' => [Rule::requiredIf(! $isOwner), 'integer', 'min:0'], 'role' => ['required', Rule::in(Role::assignableValues())], ]; } /** * @return array */ public function attributes(): array { return [ 'email' => 'email', 'username' => 'username', 'full_name' => 'nama lengkap', 'phone_number' => 'nomor telepon', 'gender' => 'jenis kelamin', 'birth_date' => 'tanggal lahir', 'address' => 'alamat', 'join_date' => 'tanggal bergabung', 'employment_status' => 'status kepegawaian', 'base_salary' => 'gaji pokok', 'role' => 'role', ]; } }