user(); if ($user === null || $user->can(Permission::EMPLOYEE_ADVANCES_VERIFY->value)) { return false; } if ($this->isMethod('POST')) { return $user->can(Permission::EMPLOYEE_ADVANCES_CREATE->value) && $user->employee !== null; } if (! $user->can(Permission::EMPLOYEE_ADVANCES_UPDATE->value)) { return false; } /** @var EmployeeAdvance|null $employeeAdvance */ $employeeAdvance = $this->route('employeeAdvance'); return $employeeAdvance?->status === EmployeeAdvanceStatus::PENDING && $user->employee?->id === $employeeAdvance->employee_id; } /** * @return array */ public function rules(): array { return [ 'amount' => ['required', 'integer', 'min:1'], 'description' => ['required', 'string', 'max:500'], 'due_date' => ['required', 'date'], ]; } }