2020-10-29 15:40:23 +01:00
< ? php
namespace App\Http\Controllers ;
use App\Http\Controllers\Controller ;
2020-10-30 16:12:14 +01:00
use App\Mail\VerifyEmail ;
2020-10-29 15:40:23 +01:00
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' ,
2020-11-02 16:18:06 +01:00
'birth_date' => 'required|date|before_or_equal:' . Carbon :: now () -> subYears ( 18 ) -> toDateString (),
2020-10-30 16:12:14 +01:00
'email' => 'required|string|email|max:255|unique:users|confirmed' ,
2020-10-29 15:40:23 +01:00
'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' ,
2020-10-30 16:12:14 +01:00
'reglement' => 'accepted' ,
2020-10-29 15:40:23 +01:00
]);
$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 ;
2020-11-13 15:31:40 +01:00
$oCrmUser -> zAdresse1 = $address ;
$oCrmUser -> zAdresse2 = $address2 ;
2020-10-29 15:40:23 +01:00
$oCrmUser -> zVille = $town ;
$oCrmUser -> zCodePostal = $postalCode ;
2020-11-13 17:42:59 +01:00
$oCrmUser -> addField ( " pays " , FIELDTYPE_TEXT , " " , ucfirst ( $country ));
$oCrmUser -> zLogin = $email ;
2020-10-29 15:40:23 +01:00
$oCrmUser -> zEmail = $email ;
2020-10-30 16:12:14 +01:00
// En attendant la mise à jour de la crm, on envoi un mot de passe bidon
$oCrmUser -> zPassword = " MOTDEPASSE " ;
2020-10-29 15:40:23 +01:00
if ( $news == 1 ) $oCrmUser -> iInscritNewLetter = $news ;
2020-11-13 17:42:59 +01:00
$oCrmUser -> iId = $cpcConnect -> createUser ( $oCrmUser , 1 );
2020-10-29 15:40:23 +01:00
$crmId = $oCrmUser -> iId ;
} catch ( Exception $e ) {
return redirect () -> back ()
-> withInput ( $request -> only ( " lastname " , " firstname " , " birth_date " , " email " , " username " , " address " , " address2 " , " town " , " postal_code " , " country " ))
2020-10-30 16:12:14 +01:00
-> withErrors ( " Un compte utilisateur est déjà associé à votre email. Modifiez votre email ou connectez vous avec ce compte. " . $e -> getMessage ());
2020-10-29 15:40:23 +01:00
}
} 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. " );
}
2020-10-30 16:12:14 +01:00
$user = User :: create ([
2020-10-29 15:40:23 +01:00
'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 ,
2020-11-13 17:42:59 +01:00
'country' => ucfirst ( $country ),
2020-10-29 15:40:23 +01:00
'email_verify_token' => $tokenMail ,
]);
2020-10-30 16:12:14 +01:00
Mail :: to ( $email ) -> send ( new VerifyEmail ( $user ));
2020-10-29 15:40:23 +01:00
2020-11-13 15:31:40 +01:00
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.' );
2020-10-29 15:40:23 +01:00
}
}