59 lines
2.6 KiB
PHP
59 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Requests;
|
|
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
use Illuminate\Validation\Rule;
|
|
|
|
class StoreSousTraitantRequest extends FormRequest
|
|
{
|
|
public function authorize(): bool
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public function rules(): array
|
|
{
|
|
return [
|
|
'nom_entreprise' => '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' => '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.',
|
|
];
|
|
}
|
|
}
|