middleware('guest'); $this->apiCrm = new \LDCCRM\ApiV1(config('crm.endpoint'), config('crm.token')); } /** * Get a validator for an incoming registration request. * * @param array $data * @return \Illuminate\Contracts\Validation\Validator */ protected function validator(array $data) { return Validator::make($data, [ 'lastname' => 'required|string|max:255', 'firstname' => 'required|string|max:255', 'phone' => 'required|max:50', 'adress' => 'required|string|max:255', 'postal_code' => 'required|string|max:50', 'town' => 'required|string|max:255', 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], 'ok_cgv' => 'accepted', ]); } /** * Create a new user instance after a valid registration. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse */ public function create(Request $request) { $data = $request->all(); $this->validator($data)->validate(); $lastname = filter_var($request->lastname, FILTER_SANITIZE_STRING); $firstname = filter_var($request->firstname, FILTER_SANITIZE_STRING); $birthdate = $request->birth_date; $phone = filter_var($request->phone, FILTER_SANITIZE_STRING); $email = filter_var($request->email, FILTER_SANITIZE_EMAIL); $address = filter_var($request->adress, FILTER_SANITIZE_STRING); //$address2 = $request->address2 !== null ? filter_var($request->address2, FILTER_SANITIZE_STRING) : null; $postal_code = filter_var($request->postal_code, FILTER_SANITIZE_STRING); $town = filter_var($request->town, FILTER_SANITIZE_STRING); //$country = filter_var($request->country, FILTER_SANITIZE_STRING); $password = $request->password; $optin = $request->news !== null ? 1 : 0; $user_cat = $request->user_cat; $social_denomination = filter_var($request->social_denomination, FILTER_SANITIZE_STRING); $tech_commercial = filter_var($request->tech_commercial, FILTER_SANITIZE_STRING); $siret =$request->siret; $numtva = $request->numtva; $certiphyto = $request->certiphyto; $certiphyto_date = $request->certiphyto_date; $eleveur_volailles = isset($request->eleveur_volailles) ? true : false; $eleveur_porcs = isset($request->eleveur_porcs) ? true : false; $eleveur_bovins = isset($request->eleveur_bovins) ? true : false; $capacite_stockage = filter_var($request->capacite_stockage, FILTER_SANITIZE_STRING); $temps_chargement = filter_var($request->temps_chargement, FILTER_SANITIZE_STRING); $stockage_aplat = isset($request->stockage_aplat) ? true : false; $stockage_cellule = isset($request->stockage_cellule) ? true : false; $adress_chargement = filter_var($request->adress_chargement, FILTER_SANITIZE_STRING); $optional_contact = filter_var($request->optional_contact, FILTER_SANITIZE_STRING); $ok_cgv = \Carbon\Carbon::now(); $tokenMail = Str::uuid(); $MJ = Carbon::now()->subYears(18); if ($this->isSQLDate($birthdate)) { $d = Carbon::createFromFormat('Y-m-d', $birthdate); if (!$d->lessThanOrEqualTo($MJ)) return back() ->withInput($request->except('password')) ->withErrors("Vous devez être majeur pour vous inscrire."); } elseif ($this->isFormDate($birthdate)) { $d = Carbon::createFromFormat('d/m/Y', $birthdate); if (!$d->lessThanOrEqualTo($MJ)) { return back() ->withInput($request->except('password')) ->withErrors("Vous devez être majeur pour vous inscrire."); } $birthdate = $d->toDateString(); } else { return back() ->withInput($request->except('password')) ->withErrors("Erreur sur le champs : date de naissance."); } if ($user_cat == "professionnel") { $role = 3; } else { $role = 4; } //on inscrit que des pros dans cette phase $role = 3; $userData = [ 'lastname' => $lastname, 'firstname' => $firstname, 'phone' => $phone, 'birth_date' => $birthdate, 'email' => $email, 'adress' => $address, 'postal_code' => $postal_code, 'town' => $town, 'password' => Hash::make($password), 'role' => $role, 'email_verify_token' => $tokenMail, 'ok_cgv' => $ok_cgv, ]; if ($role == 3) { $proData = [ 'social_denomination' => $social_denomination, 'tech_commercial' => $tech_commercial, 'siret' => $siret, 'numtva' => $numtva, 'certiphyto' => $certiphyto, 'certiphyto_date' => $certiphyto_date, 'eleveur_volailles' => $eleveur_volailles, 'eleveur_porcs' => $eleveur_porcs, 'eleveur_bovins' => $eleveur_bovins, 'capacite_stockage' => $capacite_stockage, 'temps_chargement' => $temps_chargement, 'stockage_aplat' => $stockage_aplat, 'stockage_cellule' => $stockage_cellule, 'adress_chargement' => $adress_chargement, 'optional_contact' => $optional_contact, ]; $userData = array_merge($userData, $proData); } //création dans la CRM $crmUser = $this->apiCrm->createCustomer($email, $password, $firstname, $lastname, $optin, $birthdate, $phone, $address, null, $town, $postal_code, null); //création OK if ($crmUser->status === 'OK') { //enregistrement local du user $userData['crm_id'] = $crmUser->user->crm_id; $userData['crm_hashcode'] = $crmUser->user->hashcode; $user = User::create($userData); //envoi du mail de vérification Mail::to($email)->send(new VerifyEmail($user)); return redirect()->route('login') ->with('success', "Pour finaliser votre inscription, merci de cliquer sur le lien qui vient de vous être envoyé par email
" . "Informations complémentaires :
" . "- Vérifiez vos spams : l'email de confirmation s'y trouve peut-être
" . "- Attention : le mail peut parfois mettre quelques minutes à vous parvenir
" . "- L'activation de votre compte doit se faire dans les 24 heures qui suivent la demande de création."); } else { if ($crmUser->code === 103) { return back() ->withInput($request->except('password') ) ->withErrors("Un compte utilisateur est déjà associé à votre email."); } else { return back() ->withInput($request->except('password') ) ->withErrors("Une erreur est survenue, merci de recommencer." . $crmUser->code. " " . $crmUser->message . " " . print_r($crmUser->errors)); } } } private function isSQLDate($date) { if (preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $date)) return true; return false; } private function isFormDate($date) { if (preg_match("/^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/[0-9]{4}$/", $date)) return true; return false; } }