ldc-legaulois/app/Http/Requests/Fo/ContactFormRequest.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')
];
}
}