check(); } /** * Prepare the data for validation. * * @return void */ public function prepareForValidation() { $this->merge([ 'phone' => $this->phone, 'opt_in' => $this->opt_in ? true : false ]); } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'lastname' => 'required|string|max:255', 'firstname' => 'required|string|max:255', 'phone' => 'nullable|max:255|phone:FR', 'address' => 'required|string|min:1|max:255', 'postcode' => 'required|string|min:1|postal_code:FR', 'city' => 'required|string|min:1|max:255', 'birth_date' => ['required', new Adult()], 'email' => [ 'required', 'email:rfc,dns,spoof', 'max:255', // * Does email already exists in CRM ? // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassBeforeLastUsed function (string $attribute, $value, \Closure $fail) { if (CrmCustomer::findWithEmail(\strval($value))) { $fail('Un compte existe déjà avec cette adresse.'); } }, 'unique:customers,email', ], 'password' => 'required|min:8|regex:/[a-z]/|regex:/[A-Z]/|regex:/[0-9]/|regex:/[@$!%*#?&]/|confirmed', 'ok_cgv' => 'accepted', 'opt_in' => 'required|boolean', ]; } /** * Get custom attributes for validator errors. * @return array */ public function attributes() { return [ 'lastname' => trans('nom'), 'firstname' => trans('prénom'), 'phone' => trans('téléphone'), 'address' => trans('adresse'), 'postcode' => trans('code postal'), 'city' => trans('ville'), 'birth_date' => trans('date de naissance'), 'email' => trans('email'), 'password' => trans('mot de passe'), 'ok_cgv' => trans('conditions d\'utilisation'), 'opt_in' => trans('newsletter'), ]; } /** * Get custom messages for validator errors. * * @return array */ public function messages() { return [ 'phone.phone' => trans('Le champ :attribute est invalide, il accepte les numéros des pays suivants :countries.', ['countries' => Country::france()->label]), 'country.in' => trans('Le champ :attribute est invalide, il accepte les pays suivants :countries.', ['countries' => Country::france()->label]), 'email.unique' => trans('Un compte existe déjà avec cette adresse.'), 'ok_cgv.accepted' => trans('Vous devez accepter les conditions d\'utilisation du site pour continuer.'), 'password.regex' => trans('Le champ :attribute doit contenir des minuscules, majuscules, chiffres et caractères spéciaux.') ]; } }