90 lines
5.0 KiB
PHP
90 lines
5.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Requests;
|
|
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
|
|
class StoreProductRequest extends FormRequest
|
|
{
|
|
/**
|
|
* Determine if the user is authorized to make this request.
|
|
*/
|
|
public function authorize(): bool
|
|
{
|
|
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 [
|
|
'nom' => 'required|string|max:255',
|
|
'reference' => 'required|string|max:100|unique:products,reference',
|
|
'categorie_id' => 'required|exists:product_categories,id',
|
|
'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',
|
|
'image' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
|
'remove_image' => 'nullable|boolean',
|
|
'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_id.required' => 'La catégorie est obligatoire.',
|
|
'categorie_id.exists' => 'La catégorie sélectionnée n\'existe pas.',
|
|
'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.',
|
|
'image.image' => 'Le fichier doit être une image valide.',
|
|
'image.mimes' => 'L\'image doit être de type: jpeg, png, jpg, gif ou svg.',
|
|
'image.max' => 'L\'image ne peut pas dépasser 2MB.',
|
|
'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.',
|
|
];
|
|
}
|
|
}
|