'sometimes|required|string|max:255', 'description' => 'sometimes|nullable|string|max:5000', 'priority' => ['sometimes', Rule::enum(TaskPriority::class)], 'due_at' => 'sometimes|nullable|date', 'reminder_at' => 'sometimes|nullable|date', 'estimated_minutes' => 'sometimes|nullable|integer|min:1|max:100000', 'visibility' => ['sometimes', Rule::enum(TaskVisibility::class)], 'version' => 'required|integer|min:1', ]; } public function after(): array { return [function (Validator $validator): void { $dueAt = $this->input('due_at', $this->route('task')?->due_at); $reminderAt = $this->input('reminder_at', $this->route('task')?->reminder_at); if ($dueAt && $reminderAt && Carbon::parse($reminderAt)->gt(Carbon::parse($dueAt))) { $validator->errors()->add('reminder_at', 'زمان یادآوری نمی‌تواند بعد از موعد کار باشد.'); } }]; } }