84 lines
3.4 KiB
PHP
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.'
|
|
];
|
|
}
|
|
}
|