|string> */ public function rules(): array { return [ 'nom' => 'required|string|max:255', 'reference' => 'required|string|max:100|unique:products,reference,' . $this->product?->id, 'categorie' => 'required|string|max:191', 'fabricant' => 'nullable|string|max:191', 'stock_actuel' => 'required|numeric|min:0', 'stock_minimum' => 'required|numeric|min:0', 'unite' => 'required|string|max:50', 'prix_unitaire' => 'required|numeric|min:0', 'date_expiration' => 'nullable|date|after:today', 'numero_lot' => 'nullable|string|max:100', 'conditionnement_nom' => 'nullable|string|max:191', 'conditionnement_quantite' => 'nullable|numeric|min:0', 'conditionnement_unite' => 'nullable|string|max:50', 'photo_url' => 'nullable|url|max:500', 'fiche_technique_url' => 'nullable|url|max:500', 'fournisseur_id' => 'nullable|exists:fournisseurs,id', ]; } public function messages(): array { return [ 'nom.required' => 'Le nom du produit est obligatoire.', 'nom.string' => 'Le nom du produit doit être une chaîne de caractères.', 'nom.max' => 'Le nom du produit ne peut pas dépasser 255 caractères.', 'reference.required' => 'La référence du produit est obligatoire.', 'reference.string' => 'La référence du produit doit être une chaîne de caractères.', 'reference.max' => 'La référence du produit ne peut pas dépasser 100 caractères.', 'reference.unique' => 'Cette référence de produit existe déjà.', 'categorie.required' => 'La catégorie est obligatoire.', 'categorie.string' => 'La catégorie doit être une chaîne de caractères.', 'categorie.max' => 'La catégorie ne peut pas dépasser 191 caractères.', 'fabricant.string' => 'Le fabricant doit être une chaîne de caractères.', 'fabricant.max' => 'Le fabricant ne peut pas dépasser 191 caractères.', 'stock_actuel.required' => 'Le stock actuel est obligatoire.', 'stock_actuel.numeric' => 'Le stock actuel doit être un nombre.', 'stock_actuel.min' => 'Le stock actuel doit être supérieur ou égal à 0.', 'stock_minimum.required' => 'Le stock minimum est obligatoire.', 'stock_minimum.numeric' => 'Le stock minimum doit être un nombre.', 'stock_minimum.min' => 'Le stock minimum doit être supérieur ou égal à 0.', 'unite.required' => 'L\'unité est obligatoire.', 'unite.string' => 'L\'unité doit être une chaîne de caractères.', 'unite.max' => 'L\'unité ne peut pas dépasser 50 caractères.', 'prix_unitaire.required' => 'Le prix unitaire est obligatoire.', 'prix_unitaire.numeric' => 'Le prix unitaire doit être un nombre.', 'prix_unitaire.min' => 'Le prix unitaire doit être supérieur ou égal à 0.', 'date_expiration.date' => 'La date d\'expiration doit être une date valide.', 'date_expiration.after' => 'La date d\'expiration doit être postérieure à aujourd\'hui.', 'numero_lot.string' => 'Le numéro de lot doit être une chaîne de caractères.', 'numero_lot.max' => 'Le numéro de lot ne peut pas dépasser 100 caractères.', 'conditionnement_nom.string' => 'Le nom du conditionnement doit être une chaîne de caractères.', 'conditionnement_nom.max' => 'Le nom du conditionnement ne peut pas dépasser 191 caractères.', 'conditionnement_quantite.numeric' => 'La quantité du conditionnement doit être un nombre.', 'conditionnement_quantite.min' => 'La quantité du conditionnement doit être supérieure ou égal à 0.', 'conditionnement_unite.string' => 'L\'unité du conditionnement doit être une chaîne de caractères.', 'conditionnement_unite.max' => 'L\'unité du conditionnement ne peut pas dépasser 50 caractères.', 'photo_url.url' => 'L\'URL de la photo doit être une URL valide.', 'photo_url.max' => 'L\'URL de la photo ne peut pas dépasser 500 caractères.', 'fiche_technique_url.url' => 'L\'URL de la fiche technique doit être une URL valide.', 'fiche_technique_url.max' => 'L\'URL de la fiche technique ne peut pas dépasser 500 caractères.', 'fournisseur_id.exists' => 'Le fournisseur sélectionné n\'existe pas.', ]; } }