'nullable|exists:employees,id', 'type' => ['nullable', Rule::in(['conge', 'repos', 'feriee'])], 'status' => ['nullable', Rule::in(['pending', 'approved', 'rejected', 'cancelled'])], 'start_date' => 'nullable|date', 'end_date' => 'nullable|date|after_or_equal:start_date', 'reason' => 'nullable|string', 'notes' => 'nullable|string', 'approved_by' => 'nullable|exists:users,id', 'approved_at' => 'nullable|date', ]; } public function messages(): array { return [ 'employee_id.exists' => 'L\'employé sélectionné est invalide.', 'type.in' => 'Le type de congé est invalide.', 'status.in' => 'Le statut du congé est invalide.', 'start_date.date' => 'La date de début doit être une date valide.', 'end_date.date' => 'La date de fin doit être une date valide.', 'end_date.after_or_equal' => 'La date de fin doit être postérieure ou égale à la date de début.', 'reason.string' => 'Le motif doit être une chaîne de caractères.', 'notes.string' => 'Les notes doivent être une chaîne de caractères.', 'approved_by.exists' => 'L\'approbateur sélectionné est invalide.', 'approved_at.date' => 'La date d\'approbation doit être une date valide.', ]; } }