'required|string|max:255', 'project_id' => 'required|exists:projects,id', 'description' => 'nullable|string', 'status' => 'nullable|in:pending,in_progress,review,done,cancelled', 'priority' => 'nullable|in:low,medium,high,urgent', 'assignee_id' => 'nullable|exists:users,id', 'parent_id' => 'nullable|exists:tasks,id', 'start_date' => 'nullable|date', 'due_date' => 'nullable|date', 'estimated_hours' => 'nullable|integer|min:0', 'actual_hours' => 'nullable|integer|min:0', ]; } /** * Get custom messages for validator errors. */ public function messages(): array { return [ 'title.required' => __('task.validation_title_required'), 'project_id.required' => __('task.validation_project_required'), 'project_id.exists' => __('task.validation_project_exists'), 'status.in' => __('task.validation_status_invalid'), 'priority.in' => __('task.validation_priority_invalid'), 'due_date.date' => __('task.validation_due_date_invalid'), 'assignee_id.exists' => __('task.validation_assignee_exists'), ]; } }