New-Thanasoft/thanasoft-back/app/Http/Requests/UpdateSousTraitantRequest.php
2026-05-22 10:01:35 +03:00

59 lines
2.6 KiB
PHP

<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class UpdateSousTraitantRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'nom_entreprise' => 'sometimes|required|string|max:255',
'siret' => 'nullable|string|max:20',
'forme_juridique' => 'nullable|string|max:100',
'code_ape' => 'nullable|string|max:20',
'adresse' => 'nullable|string',
'contact_principal' => 'sometimes|required|string|max:255',
'telephone' => 'nullable|string|max:50',
'email' => 'nullable|email|max:191',
'site_web' => 'nullable|url|max:191',
'numero_contrat' => 'nullable|string|max:100',
'montant_contrat' => 'nullable|numeric|min:0',
'date_debut_contrat' => 'nullable|date',
'date_fin_contrat' => 'nullable|date|after_or_equal:date_debut_contrat',
'type_prestation' => 'nullable|string|max:255',
'conditions_paiement' => 'nullable|string',
'statut' => ['nullable', Rule::in(['actif', 'inactif', 'en_evaluation'])],
'note_qualite' => 'nullable|numeric|min:0|max:5',
'certifications_labels' => 'nullable|array',
'certifications_labels.*' => 'string|max:255',
];
}
public function messages(): array
{
return [
'nom_entreprise.required' => 'Le nom de l\'entreprise est obligatoire.',
'contact_principal.required' => 'Le contact principal est obligatoire.',
'email.email' => 'L\'adresse email doit être valide.',
'site_web.url' => 'Le site web doit être une URL valide.',
'montant_contrat.numeric' => 'Le montant du contrat doit être numérique.',
'montant_contrat.min' => 'Le montant du contrat doit être supérieur ou égal à 0.',
'date_fin_contrat.after_or_equal' => 'La date de fin doit être postérieure ou égale à la date de début.',
'statut.in' => 'Le statut sélectionné est invalide.',
'note_qualite.numeric' => 'La note de qualité doit être numérique.',
'note_qualite.min' => 'La note de qualité doit être au minimum de 0.',
'note_qualite.max' => 'La note de qualité doit être au maximum de 5.',
'certifications_labels.array' => 'Les certifications doivent être envoyées sous forme de liste.',
'certifications_labels.*.string' => 'Chaque certification doit être une chaîne de caractères.',
];
}
}