<?php
namespace App\Controller;
use FOS\UserBundle\Controller\RegistrationController as BaseController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use App\Controller\MaintenanceController;
use FOS\UserBundle\Form\Factory\FactoryInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use FOS\UserBundle\Model\UserManagerInterface;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Doctrine\ORM\EntityManagerInterface;
use App\Service\UserService;
use App\Entity\User;
use App\Entity\CartCoupon;
class RegistrationController extends BaseController {
public function __construct(EventDispatcherInterface $eventDispatcher, FactoryInterface $formFactory, UserManagerInterface $userManager, TokenStorageInterface $tokenStorage, SessionInterface $session, EntityManagerInterface $em, UserService $user)
{
$this->eventDispatcher = $eventDispatcher;
$this->formFactory = $formFactory;
$this->userManager = $userManager;
$this->tokenStorage = $tokenStorage;
$this->session = $session;
$this->em = $em;
$this->userServ = $user;
parent::__construct($eventDispatcher, $formFactory, $userManager, $tokenStorage);
}
/**
* @Route(
* "/register",
* )
*
*/
public function registerAction(Request $request)
{
try {
if (isset($_GET["i"])) {
$i=$_GET["i"];
if ($i == "0da96206511c3297fc9dfe3ee6602bbd") {
$this->session->set("is_quebecor_invite", "yes");
}
}
} catch (\Exception $e) {
// not important, ignore
}
try {
return parent::registerAction($request);
} catch (NotFoundHttpException $e) {
return $this->redirectToRoute('fos_user_security_login');
}
}
/**
* @Route(
* "/register/confirm/{token}",
* )
*
*/
public function confirmAction(Request $request,$token){
try {
$is_quebecor_invite = $this->session->get("is_quebecor_invite");
if ($is_quebecor_invite == "yes") {
$user = $this->em->getRepository(User::class)->findOneBy(["confirmationToken"=>$token]);
if ($user) {
$email = $user->getEmail();
$email_domain = explode("@",$email);
if (isset($email_domain[1])) {
$email_domain = strtolower(trim($email_domain[1]));
$accepted_domains = [
'1secmail.com',
'owasp.org',
'quebecormedia.com',
'agenceqmi.ca',
'ceceditions.com',
'fibrenoir.ca',
'gestev.com',
'tva.ca',
'musicor.quebecor.com',
'select.quebecor.com',
'quebecor.com',
'qmisales.ca',
'remparts.ca',
'sette.com',
'sogides.com',
'groupehomme.com',
'messageries-adp.com',
'videotron.com',
'mels-studios.com',
'lessuperclub.com',
];
if (in_array($email_domain, $accepted_domains)) {
/*
create 10$ + 5$ coupon
*/
$coupon_code_10 = substr('C-'.md5(uniqid()), 0, 12);
$coupon = new CartCoupon();
$coupon->setOneTimeOnly(false);
$coupon->setType(2);
$coupon->setAmount(10);
$coupon->setCode($coupon_code_10);
$coupon->setForUser($user);
$coupon->setDateFrom(new \DateTime());
$coupon->setDateTo(new \DateTime("+1 year"));
$this->em->persist($coupon);
$this->em->flush();
$coupon_code_5 = substr('C-'.md5(uniqid()), 0, 12);
$coupon = new CartCoupon();
$coupon->setOneTimeOnly(false);
$coupon->setType(2);
$coupon->setAmount(5);
$coupon->setCode($coupon_code_5);
$coupon->setForUser($user);
$coupon->setDateFrom(new \DateTime());
$coupon->setDateTo(new \DateTime("+1 year"));
$this->em->persist($coupon);
$this->em->flush();
$email_body = $this->get('twig')->render('emails/welcomeQuebecor.html.twig', array(
'coupon_code_10' => $coupon_code_10,
'coupon_code_5' => $coupon_code_5,
));
$this->userServ->sendEmail('Vos coupons rabais de Maturin!', $email_body, false, $email);
}
}
}
}
// dd($response);
} catch (\Exception $e) {
// not important, ignore
// dd($e->getMessage());
}
try {
return parent::confirmAction($request, $token);
} catch (NotFoundHttpException $e) {
return $this->redirectToRoute('fos_user_security_login');
}
}
/**
* @Route(
* "/login/coupon/marketing",
* )
*
*/
public function loginAction(Request $request)
{
try {
if (isset($_GET["c"])) {
//dd("here");
$coupon=$_GET["c"];
if ($coupon) {
$this->session->set("coupon_marketing", $coupon);
}
}
} catch (\Exception $e) {
// not important, ignore
}
return $this->redirectToRoute('fos_user_security_login');
}
}