110 lines
4.4 KiB
PHP
110 lines
4.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Requests\Fo;
|
|
|
|
use App\Enums\ContactFormCivility;
|
|
use App\Enums\ContactFormType;
|
|
use App\Lib\Helpers\ToolboxHelper;
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
use Illuminate\Support\Facades\Route;
|
|
use Illuminate\Validation\Rule;
|
|
|
|
class ContactFormRequest extends FormRequest
|
|
{
|
|
/**
|
|
* Determine if the user is authorized to make this request.
|
|
*
|
|
* @return boolean
|
|
*/
|
|
public function authorize()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Get the validation rules that apply to the request.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function rules()
|
|
{
|
|
// ToolboxHelper::validateRecaptcha($this, \config('services.google.recaptcha.version'));
|
|
|
|
$rules = [
|
|
'locale' => [
|
|
'nullable',
|
|
Rule::enum(ContactFormType::class)->only(ContactFormType::getLocalesContactType())
|
|
],
|
|
'type' => [
|
|
'required',
|
|
Rule::enum(ContactFormType::class)->only(ContactFormType::getContactTypes())
|
|
],
|
|
'civility' => ['required', Rule::enum(ContactFormCivility::class)],
|
|
// Max arcadia 50 chars.
|
|
'lastname' => 'required|min:2|max:50',
|
|
// Max arcadia 50 chars.
|
|
'firstname' => 'required|min:2|max:50',
|
|
'address' => 'required|min:4',
|
|
'email' => 'required|email:rfc,dns,spoof',
|
|
'postal' => 'required|postal_code:FR',
|
|
// Max arcadia 10 chars.
|
|
'town' => 'required|min:3|max:90',
|
|
'phone' => 'required|phone:FR',
|
|
'message' => 'required|min:20|max:1900'
|
|
];
|
|
|
|
if (ContactFormType::make($this->input('type'))->equals(ContactFormType::complain)) {
|
|
$rules = array_merge(
|
|
$rules,
|
|
[
|
|
'productName' => 'required|min:2|max:100',
|
|
'productCode' => 'required|digits_between:8,13|min:1|max:9999999999999',
|
|
'buyPlace' => 'required|min:2|max:100',
|
|
'lotNumberName' => 'required|min:2|max:50',
|
|
'limitDateDay' => 'required|numeric|min:1|max:31',
|
|
'limitDateMonth' => 'required|numeric|min:1|max:12',
|
|
'limitDateYear' => 'required|numeric|min:2010|max:2050',
|
|
'consumptionDateDay' => 'required|numeric|min:1|max:31',
|
|
'consumptionDateMonth' => 'required|numeric|min:1|max:12',
|
|
'consumptionDateYear' => 'required|numeric|min:2010|max:2050',
|
|
],
|
|
);
|
|
}
|
|
|
|
if (ContactFormType::make($this->input('type'))->hasFileInput()) {
|
|
$rules = array_merge(
|
|
$rules,
|
|
[
|
|
'joinFile' => 'nullable|mimes:jpg,jpeg,png,pdf|max:5120'
|
|
],
|
|
);
|
|
}
|
|
|
|
return $rules;
|
|
}
|
|
|
|
/**
|
|
* Get custom attributes for validator errors.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function attributes(): array
|
|
{
|
|
return [
|
|
'lastname' => trans('validation.attributes.last_name'),
|
|
'firstname' => trans('validation.attributes.first_name'),
|
|
'town' => trans('validation.custom.town'),
|
|
'productName' => trans('validation.custom.product_name'),
|
|
'productCode' => trans('validation.custom.barcode'),
|
|
'buyPlace' => trans('validation.custom.place_of_purchase'),
|
|
'lotNumberName' => trans('validation.custom.batch_number'),
|
|
'limitDateDay' => sprintf('%s - %s', trans('validation.custom.use_by_date'), trans('day')),
|
|
'limitDateMonth' => sprintf('%s - %s', trans('validation.custom.use_by_date'), trans('month')),
|
|
'limitDateYear' => sprintf('%s - %s', trans('validation.custom.use_by_date'), trans('year')),
|
|
'consumptionDateDay' => sprintf('%s - %s', trans('validation.custom.consumption_date'), trans('day')),
|
|
'consumptionDateMonth' => sprintf('%s - %s', trans('validation.custom.consumption_date'), trans('month')),
|
|
'consumptionDateYear' => sprintf('%s - %s', trans('validation.custom.consumption_date'), trans('year')),
|
|
'joinFile' => trans('validation.custom.attachment')
|
|
];
|
|
}
|
|
}
|