user(); if ($user === null || $user->can(Permission::LEAVE_REQUESTS_VERIFY->value)) { return false; } if ($this->isMethod('POST')) { return $user->can(Permission::LEAVE_REQUESTS_CREATE->value) && $user->employee !== null; } if (! $user->can(Permission::LEAVE_REQUESTS_UPDATE->value)) { return false; } /** @var LeaveRequest|null $leaveRequest */ $leaveRequest = $this->route('leaveRequest'); return $leaveRequest?->status === LeaveRequestStatus::PENDING && $user->employee?->id === $leaveRequest->employee_id; } /** * @return array */ public function rules(): array { return [ 'start_date' => ['required', 'date'], 'end_date' => ['required', 'date', 'after_or_equal:start_date'], ]; } }