[ 'nullable', Rule::enum(ContactFormType::class)->only(ContactFormType::getLocalesContactType()), ], 'type' => [ 'required', Rule::enum(ContactFormType::class)->only(ContactFormType::getContactTypes()), ], 'civility' => ['required', Rule::enum(ContactFormCivility::class)], 'lastname' => 'required|min:2|max:50', 'firstname' => 'required|min:2|max:50', 'address' => 'required|min:4', 'email' => 'required|email:rfc,dns,spoof', 'postal' => 'required|postal_code:FR', '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. */ 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'), ]; } }