New-Thanasoft/thanasoft-back/app/Http/Requests/StoreInterventionRequest.php
2025-11-21 17:26:43 +03:00

84 lines
3.4 KiB
PHP

<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class StoreInterventionRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
// Add authorization logic if needed
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|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'
])],
'practitioners' => ['nullable', 'array'],
'practitioners.*' => ['exists:thanatopractitioners,id'],
'principal_practitioner_id' => ['nullable', 'exists:thanatopractitioners,id'],
'assistant_practitioner_ids' => ['nullable', 'array'],
'assistant_practitioner_ids.*' => ['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.',
'practitioners.array' => 'Les praticiens doivent être un tableau.',
'practitioners.*.exists' => 'Un des praticiens sélectionnés est invalide.',
'principal_practitioner_id.exists' => 'Le praticien principal sélectionné est invalide.',
'assistant_practitioner_ids.array' => 'Les praticiens assistants doivent être un tableau.',
'assistant_practitioner_ids.*.exists' => 'Un des praticiens assistants est invalide.',
'created_by.exists' => 'L\'utilisateur créateur est invalide.'
];
}
}