|string> */ public function rules(): array { return [ 'client_id' => ['required', 'exists:clients,id'], 'deceased_id' => ['nullable', 'exists:deceased,id'], 'order_giver' => ['nullable', 'string', 'max:255'], 'location_id' => ['nullable', 'exists:client_locations,id'], 'type' => ['required', Rule::in([ 'thanatopraxie', 'toilette_mortuaire', 'exhumation', 'retrait_pacemaker', 'retrait_bijoux', 'autre' ])], 'scheduled_at' => ['nullable', 'date_format:Y-m-d H:i:s'], 'duration_min' => ['nullable', 'integer', 'min:0'], 'status' => ['sometimes', Rule::in([ 'demande', 'planifie', 'en_cours', 'termine', 'annule' ])], 'assigned_practitioner_id' => ['nullable', 'exists:thanatopractitioners,id'], 'notes' => ['nullable', 'string'], 'created_by' => ['nullable', 'exists:users,id'] ]; } /** * Get custom error messages for validator errors. */ public function messages(): array { return [ 'client_id.required' => 'Le client est obligatoire.', 'client_id.exists' => 'Le client sélectionné est invalide.', 'deceased_id.exists' => 'Le défunt sélectionné est invalide.', 'order_giver.max' => 'Le donneur d\'ordre ne peut pas dépasser 255 caractères.', 'location_id.exists' => 'Le lieu sélectionné est invalide.', 'type.required' => 'Le type d\'intervention est obligatoire.', 'type.in' => 'Le type d\'intervention est invalide.', 'scheduled_at.date_format' => 'Le format de la date programmée est invalide.', 'duration_min.integer' => 'La durée doit être un nombre entier.', 'duration_min.min' => 'La durée ne peut pas être négative.', 'status.in' => 'Le statut de l\'intervention est invalide.', 'assigned_practitioner_id.exists' => 'Le praticien sélectionné est invalide.', 'created_by.exists' => 'L\'utilisateur créateur est invalide.' ]; } }