src/Controller/InviteRegistrationController.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\EmailLog;
  4. use App\Entity\EmailTemplate;
  5. use App\Entity\EmailTrigger;
  6. use App\Entity\Package;
  7. use App\Entity\Participant;
  8. use Endroid\QrCode\Builder\BuilderInterface;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\HttpKernel\KernelInterface;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. class InviteRegistrationController extends BaseController
  14. {
  15.     /**
  16.      * @Route("/invite/registration", name="app_invite_registration")
  17.      */
  18.     public function index(Request $requestBuilderInterface $customQrCodeBuilderKernelInterface $kernel): Response
  19.     {
  20.         if ($request->isMethod("POST")) {
  21.             if ($request->request->has('secretCode')) {
  22.                 // Find package by secret code
  23.                 $package $this->em->getRepository(Package::class)->findOneBy(['secretCode' => $request->request->get('secretCode')]);
  24.                 if (is_null($package)) {
  25.                     $this->addFlash('warning'$this->translator->trans('inviteRegistration.error.secretCode'));
  26.                     return $this->render('invite_registration/index.html.twig');
  27.                 }
  28.                 return $this->render('invite_registration/index.html.twig', [
  29.                     'package' => $package,
  30.                 ]);
  31.             }
  32.             if ($request->request->has('packageBySecretCode')) {
  33.                 $participant = (new Participant())
  34.                     ->setName($request->get('participantName'))
  35.                     ->setCompany($request->get('participantCompany'))
  36.                     ->setEmail($request->get('participantEmail'))
  37.                     ->setPhone($request->get('participantPhone'))
  38.                     ->setPackage($this->em->getRepository(Package::class)->findOneBy(['id' => $request->get('packageBySecretCode')]))
  39.                     ->setCreatedAt((new \DateTime()))
  40.                     ->setModifiedAt((new \DateTime()))
  41.                 ;
  42.                 $this->em->persist($participant);
  43.                 $this->em->flush();
  44.                 // Send email
  45. //                $this->sendEmailUponRegistration($request, $participant, $customQrCodeBuilder, $kernel);
  46.                 $this->addFlash('success',$this->translator->trans('inviteRegistration.success'));
  47.                 return $this->render('invite_registration/index.html.twig');
  48.             }
  49.         }
  50.         return $this->render('invite_registration/index.html.twig');
  51.     }
  52.     public function sendEmailUponRegistration(Request $requestParticipant $participantBuilderInterface $customQrCodeBuilderKernelInterface $kernel): void
  53.     {
  54.         $participantRepo $this->em->getRepository(Participant::class);
  55.         $emailTemplateRepo $this->em->getRepository(EmailTemplate::class);
  56.         $emailTemplate $emailTemplateRepo->findOneBy(['emailTrigger'=>EmailTrigger::EMAIL_TRIGGER_REGISTRATION_ID]);
  57.         $emailBody $emailTemplate->getHeader()->getBody() . $emailTemplate->getBody() . $emailTemplate->getFooter()->getBody();
  58.         $emailBodyPersonalized $emailBody;
  59.         foreach(EmailTemplate::QR_BODY_TAGS as $tag) {
  60.             switch ($tag) {
  61.                 case '###participantName###':
  62.                     $emailBodyPersonalized str_replace($tag,$participant->getName(),$emailBodyPersonalized);
  63.                     break;
  64.                 case '###participantCompany###':
  65.                     $emailBodyPersonalized str_replace($tag,$participant->getCompany(),$emailBodyPersonalized);
  66.                     break;
  67.                 case '###participantQRcode###':
  68.                     $qrCode $customQrCodeBuilder
  69.                         ->size(400)
  70.                         ->margin(20)
  71.                         ->data($participant->getSecretCode())
  72.                         ->build()
  73.                     ;
  74.                     if(!file_exists($kernel->getProjectDir() . '/public/qrcodes')) {
  75.                         exec('mkdir -p ' $kernel->getProjectDir() . '/public/qrcodes');
  76.                         exec('chmod -R 0777 ' $kernel->getProjectDir() . '/public/qrcodes');
  77.                     }
  78.                     $qrCode->saveToFile($kernel->getProjectDir() . '/public/qrcodes/' $participant->getSecretCode() . '.png');
  79.                     $img '<img src="' $request->getUriForPath('/qrcodes/' $participant->getSecretCode() . '.png') .'">';
  80.                     $emailBodyPersonalized str_replace($tag,$img,$emailBodyPersonalized);
  81.                     break;
  82.             }
  83.         }
  84.         $participant->setQrSent((new \DateTime()));
  85.         $emailText strip_tags($emailBodyPersonalized);
  86.         $emailRecord = (new EmailLog())
  87.             ->setDestination($participant->getEmail())
  88.             ->setTitle($emailTemplate->getTitle())
  89.             ->setText($emailText)
  90.             ->setBody($emailBodyPersonalized)
  91.             ->setQrAttachPath($kernel->getProjectDir() . '/public/qrcodes/' $participant->getSecretCode() . '.png')
  92.         ;
  93.         $this->em->persist($emailRecord);
  94.         $this->em->flush();
  95.     }
  96. }