src/Controller/SubscribeController.php line 34

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\SignUp;
  4. use App\Entity\Subscribe;
  5. use App\Entity\Emails\Emails;
  6. use App\Entity\Emails\GeneratorMail;
  7. use App\Entity\Leads\Leads;
  8. use App\Entity\User;
  9. use App\Form\SubscribeType;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Mailer\MailerInterface;
  16. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  17. use Symfony\Component\Routing\Annotation\Route;
  18. use Symfony\Component\String\ByteString;
  19. class SubscribeController extends AbstractController
  20. {
  21.     protected $em;
  22.     public function __construct(EntityManagerInterface $entityManager)
  23.     {
  24.         $this->em $entityManager;
  25.     }
  26.     /**
  27.      * @Route("/subscribe", name="app_subscribe")
  28.      */
  29.     public function index(Request $requestUserPasswordHasherInterface $passwordHasherMailerInterface $mailer): Response
  30.     {
  31.         $default['trial'] = !empty($request->query->get('trial')) ? $request->query->get('trial') : false;
  32.         $default['type'] = !empty($request->query->get('type')) ? $request->query->get('type') : $request->get('type');
  33.         $default['subscribe'] = !empty($request->query->get('subscribe')) ? $request->query->get('subscribe') : null;
  34.         
  35.         $email $lead['email'] = !empty($request->get('email')) ? $request->get('email') : '';
  36.         $lead['compagny_name'] = !empty($request->get('compagnie_name')) ? $request->get('compagnie_name') : '';
  37.         $lead['compagny_type'] = !empty($request->get('forme_juridique')) ? $request->get('forme_juridique') : '';
  38.         $lead['type_lead'] = !empty($request->get('typeLd')) ? $request->get('typeLd') : '';
  39.         
  40.         $subscribes $this->em->getRepository(Subscribe::class)->findBy(["statut"=>1"default_sub"=>1]);
  41.         $this->em->getRepository(Leads::class)->setLead($lead);
  42.         $signUp = new SignUp;
  43.         $user = new User;
  44.         
  45.         $signUp->setEmail($email);
  46.         $signUp->setCompagnieName($lead['compagny_name']);
  47.         $signUp->setFormeJuridique($lead['compagny_type']);
  48.         $form $this->createForm(SubscribeType::class, $signUp);
  49.         $form->handleRequest($request);
  50.         if($form->isSubmitted() && $form->isValid()){
  51.             $password $passwordHasher->hashPassword($signUp$signUp->getMdpt());
  52.             $hashPro = (new ByteString)->fromRandom(32)->toString();
  53.             $email $form["email"]->getData();
  54.             $user->setEmail($email);
  55.             $user->setUser($signUp->getNomResponsable());
  56.             $user->setMdpt($password);
  57.             $user->setAuthorization('["full"]');
  58.             $user->setHashPro($hashPro);
  59.             $code strtoupper((new ByteString)->fromRandom(9)->toString());
  60.             $signUp->setCiviliteResponsable('M.');
  61.             $signUp->setMdpt($password);
  62.             $signUp->setHashPro($hashPro);
  63.             $signUp->setCodeActivation($code);
  64.             $signUp->setVisite(1);
  65.             $signUp->setStatut("0");
  66.             $this->em->persist($signUp);
  67.             $this->em->flush();
  68.             $this->em->persist($user);
  69.             $this->em->flush();
  70.             $id $user->getId();
  71.             if(!empty($email) && !empty($code) && !empty($id)){
  72.                 $configMail $this->em->getRepository(Emails::class)->findOneBy(["template_name" => "active-account"]);
  73.                 if(!empty($configMail)){
  74.                     $emailBody = (new GeneratorMail(new TemplatedEmail(), $configMail))->setMail(
  75.                         $email,
  76.                         [
  77.                             'mail'              => $email,
  78.                             'compagny_name'     => $form["compagnie_name"]->getData(),
  79.                             'link_activation'   => $this->getParameter('app').$this->generateUrl('activation', ['email'=>$email'code'=>$code]),
  80.                             'code_activation'   => $code,
  81.                         ]
  82.                     );
  83.                     $mailer->send($emailBody);
  84.                 }
  85.             }
  86.             return $this->redirectToRoute('activation', ["email"=>$signUp->getEmail()]);
  87.         }
  88.         
  89.         return $this->render('subscribe/index.html.twig', [
  90.             'form'          => $form->createView(),
  91.             'trialDay'      => 7,
  92.             'default'       => $default,
  93.             'trialDate'     => date('Y-m-d'strtotime('+ 7 DAYS')),
  94.             'subscribes'     => $subscribes
  95.         ]);
  96.     }
  97. }