ldc-doux/app/Http/Requests/ContactFormRequest.php

76 lines
2.4 KiB
PHP
Raw Normal View History

2022-01-25 17:43:49 +01:00
<?php
namespace App\Http\Requests;
use App\Enums\Country;
use App\Enums\Department;
2023-06-26 08:52:32 +00:00
use App\Lib\Helpers\ToolboxHelper;
2022-01-25 17:43:49 +01:00
use Illuminate\Foundation\Http\FormRequest;
use Kwaadpepper\Enum\Rules\EnumIsValidRule;
2022-01-25 17:43:49 +01:00
class ContactFormRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
2022-08-11 12:34:27 +02:00
* @return boolean
2022-01-25 17:43:49 +01:00
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
2023-06-26 08:52:32 +00:00
ToolboxHelper::validateRecaptcha($this, \config('services.google.recaptcha.version'));
2022-01-25 17:43:49 +01:00
return [
'civilite' => 'required|in:monsieur,madame',
2022-07-18 10:36:38 +00:00
'name' => 'required|string|min:2',
'lastname' => 'required|string|min:2',
'address' => 'required|string|max:255',
'postcode' => 'required|min:1|max:99000',
2022-01-25 17:43:49 +01:00
'city' => 'required|string|max:255',
2022-07-18 10:36:38 +00:00
'phone' => 'required|numeric|min:1|max:9999999999',
2022-01-25 17:43:49 +01:00
'email' => 'required|email:rfc,dns,spoof|max:255',
'country' => [
'required',
new EnumIsValidRule(Country::class)
],
'departement' => [
'required_if:country,' . Country::france()->label,
'nullable',
new EnumIsValidRule(Department::class)
],
2022-01-25 17:43:49 +01:00
'topic' => 'required',
'product_name' => 'required_if:topic,Réclamation|max:255',
'barcode' => 'required_if:topic,Réclamation|max:128',
'shop' => 'required_if:topic,Réclamation|max:255',
'lot' => 'required_if:topic,Réclamation|max:255',
'limit_date' => 'required_if:topic,Réclamation|date|nullable',
'consumption_date' => 'required_if:topic,Réclamation|date|nullable',
'message' => 'required|min:25',
'file' => 'nullable|mimes:jpg,jpeg,png,pdf|max:5120',
];
}
/**
* Get the error messages for the defined validation rules.
*
* @return array
*/
public function messages()
{
return [
2022-07-18 10:36:38 +00:00
'topic.required' => __('Veuillez préciser la nature de votre demande.'),
2022-01-25 17:43:49 +01:00
'file.max' => __('La taille du fichier ne peut pas dépasser :max kilo-octets.'),
'file.mimes' => __('Le fichier doit être de type : :values.'),
];
}
}