ldc-gen-game-web/app/Http/Controllers/RegisterController.php
Vincent BRIDIER 5e70a293ab - Fix BR
2020-11-13 17:42:59 +01:00

120 lines
4.9 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Mail\VerifyEmail;
use App\Providers\RouteServiceProvider;
use App\User;
use Carbon\Carbon;
use CPCConnection;
use CPCUser;
use Exception;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Mail;
class RegisterController extends Controller
{
use RegistersUsers;
protected $redirectTo = RouteServiceProvider::HOME;
public function __construct()
{
$this->middleware('guest');
}
public function index() {
return view('front.basic.register-crm');
}
public function register(Request $request) {
$civility = $request->civility;
$lastname = filter_var($request->lastname, FILTER_SANITIZE_STRING);
$firstname = filter_var($request->firstname, FILTER_SANITIZE_STRING);
$birthDate = $request->birth_date;
$email = filter_var($request->email, FILTER_SANITIZE_EMAIL);
$password = $request->password;
$address = filter_var($request->address, FILTER_SANITIZE_STRING);
$address2 = $request->address2 !== null ? filter_var($request->address2, FILTER_SANITIZE_STRING) : null;
$town = filter_var($request->town, FILTER_SANITIZE_STRING);
$postalCode = filter_var($request->postal_code, FILTER_SANITIZE_STRING);
$country = filter_var($request->country, FILTER_SANITIZE_STRING);
$news = $request->news !== null ? 1 : 0;
$tokenMail = Str::uuid();
$request->validate([
'lastname' => 'required|string|max:255',
'firstname' => 'required|string|max:255',
'birth_date' => 'required|date|before_or_equal:' . Carbon::now()->subYears(18)->toDateString(),
'email' => 'required|string|email|max:255|unique:users|confirmed',
'password' => 'required|string|min:8|confirmed',
'address' => 'required|string|max:255',
'address2' => 'max:255',
'town' => 'required|string|max:255',
'postal_code' => 'required|string|max:255',
'country' => 'required|string|max:255',
'reglement' => 'accepted',
]);
$crmId = null;
try {
$cpcConnect = new CPCConnection(config('crm.CRM_PLATOS_WSDL'), config('crm.WS_SERVCE_LOGIN'), config('crm.WS_SERVCE_PASSWORD'));
$cpcConnect->connect();
try {
$oCrmUser = new CPCUser();
$oCrmUser->zCivilite = $civility;
$oCrmUser->zNom = $lastname ;
$oCrmUser->zPrenom = $firstname ;
$oCrmUser->zDateNaissance = $birthDate;
$oCrmUser->zAdresse1 = $address;
$oCrmUser->zAdresse2 = $address2;
$oCrmUser->zVille = $town ;
$oCrmUser->zCodePostal = $postalCode ;
$oCrmUser->addField ("pays", FIELDTYPE_TEXT, "", ucfirst($country));
$oCrmUser->zLogin = $email;
$oCrmUser->zEmail = $email;
// En attendant la mise à jour de la crm, on envoi un mot de passe bidon
$oCrmUser->zPassword = "MOTDEPASSE";
if($news == 1) $oCrmUser->iInscritNewLetter = $news ;
$oCrmUser->iId = $cpcConnect->createUser($oCrmUser, 1);
$crmId = $oCrmUser->iId;
} catch (Exception $e) {
return redirect()->back()
->withInput($request->only("lastname","firstname","birth_date","email","username", "address", "address2", "town", "postal_code", "country"))
->withErrors("Un compte utilisateur est déjà associé à votre email. Modifiez votre email ou connectez vous avec ce compte. " . $e->getMessage());
}
} catch (Exception $e) {
return redirect()->back()
->withInput($request->only("lastname","firstname","birth_date","email","username", "address", "address2", "town", "postal_code", "country"))
->withErrors("Une erreur est survenue, merci de recommencer.");
}
$user = User::create([
'crm_id' => $crmId,
'civility' => $civility,
'firstname' => $firstname,
'lastname' => $lastname,
'birth_date' => $birthDate,
'email' => $email,
'password' => Hash::make($password),
'address' => $address,
'address2' => $address2,
'town' => $town,
'postal_code' => $postalCode,
'country' => ucfirst($country),
'email_verify_token' => $tokenMail,
]);
Mail::to($email)->send(new VerifyEmail($user));
return redirect()->route('login')->with('success', 'Inscription enregistrée. Pour vous connecter à votre compte, merci de vérifier votre adresse email en cliquant sur le lien que vous avez reçu par mail.');
}
}