104 lines
4 KiB
PHP
104 lines
4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Fo;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\Fo\RegisterRequest;
|
|
use App\Mail\VerifyEmail;
|
|
use App\Models\Customer;
|
|
use Illuminate\Support\Carbon;
|
|
use Illuminate\Support\Facades\Mail;
|
|
use Illuminate\Support\Str;
|
|
use LDC\LDCCRM\Enums\ApiError;
|
|
use LDC\LDCCRM\Exceptions\ApiErrorException;
|
|
use LDC\LDCCRM\Exceptions\CrmException;
|
|
use LDC\LDCCRM\Exceptions\ValidationException;
|
|
use LDC\LDCCRM\Models\Customer as CrmCustomer;
|
|
|
|
class RegisterController extends Controller
|
|
{
|
|
/**
|
|
* Register form
|
|
*
|
|
* @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory
|
|
*/
|
|
public function register()
|
|
{
|
|
return view('front.basic.register-crm');
|
|
}
|
|
|
|
/**
|
|
* Register form submit
|
|
*
|
|
* @param RegisterRequest $request
|
|
* @return \Illuminate\Http\RedirectResponse
|
|
*/
|
|
public function registerSubmit(RegisterRequest $request)
|
|
{
|
|
if (!Carbon::parse($request->birth_date)->lessThanOrEqualTo(Carbon::now()->subYears(18))) {
|
|
return back()
|
|
->withInput($request->except('password'))
|
|
->withErrors("Vous devez être majeur pour vous inscrire au jeu.");
|
|
}
|
|
|
|
$crmCustomer = null;
|
|
try {
|
|
$crmCustomer = new CrmCustomer(\array_intersect_key(
|
|
$request->validated(),
|
|
[
|
|
'firstname' => '',
|
|
'lastname' => '',
|
|
'birth_date' => '',
|
|
'address' => '',
|
|
'postcode' => '',
|
|
'country' => '',
|
|
'city' => '',
|
|
'phone' => '',
|
|
'email' => '',
|
|
'password' => '',
|
|
'opt_in' => '',
|
|
]
|
|
));
|
|
$crmCustomer->password = $request->password;
|
|
$crmCustomer->save();
|
|
|
|
$tokenMail = Str::uuid();
|
|
|
|
Mail::to($request->email)->send(new VerifyEmail($crmCustomer, $tokenMail));
|
|
|
|
$customer = new Customer();
|
|
$customer->email = $crmCustomer->email;
|
|
$customer->hashcode = $crmCustomer->hashcode;
|
|
$customer->email_verify_token = $tokenMail;
|
|
$customer->saveOrFail();
|
|
|
|
|
|
return redirect()->route('login')
|
|
->with('success', sprintf(
|
|
'%s %s %s %s %s',
|
|
'Pour finaliser votre inscription, merci de cliquer sur le lien qui vient de vous être envoyé par',
|
|
'email<br> Informations complémentaires :<br>',
|
|
'- Vérifiez vos spams : l\'email de confirmation s\'y trouve peut-être<br>',
|
|
'- Attention : le mail peut parfois mettre quelques minutes à vous parvenir<br>',
|
|
//phpcs:ignore Generic.Files.LineLength.TooLong
|
|
'- L\'activation de votre compte doit se faire dans les 24 heures qui suivent la demande de création.'
|
|
));
|
|
} catch (ApiErrorException $e) {
|
|
if ($e->getApiError()->equals(ApiError::customerExists())) {
|
|
return back()->withErrors('Un compte est déjà associé à cette adresse email.');
|
|
}
|
|
if ($e->getApiError()->equals(ApiError::validationFailed())) {
|
|
return back()->withErrors($e->getMessage());
|
|
}
|
|
report($e);
|
|
return back()->withErrors('Une erreur est survenue, merci de réessayer ultérieurement.');
|
|
} catch (ValidationException $e) {
|
|
return back()->withErrors($e->getMessage());
|
|
} catch (\Exception | \TypeError | CrmException $e) {
|
|
\report($e);
|
|
// ! Une erreur critique est survenue avec la CRM.
|
|
return back()->withErrors('Une erreur est survenue, merci de réessayer ultérieurement.');
|
|
} //end try
|
|
return back()->withErrors('Une erreur est survenue, merci de réessayer ultérieurement.');
|
|
}
|
|
}
|