src/Service/NewsletterService.php line 18

Open in your IDE?
  1. <?php
  2. namespace Acme\SudcmsBundle\Service;
  3. use Acme\SudcmsBundle\Service\OtideaUtils;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Acme\SudcmsBundle\Entity\Newsletter;
  6. use Acme\SudcmsBundle\Repository\NewsletterRepository;
  7. use Symfony\Component\HttpFoundation\RequestStack;
  8. class NewsletterService
  9. {
  10.     private $entityManager;
  11.     private $newsletterRepository;
  12.     private $requestStack;
  13.     
  14.     public function __construct(EntityManagerInterface $entityManager, NewsletterRepository $newsletterRepository, OtideaUtils $otideaUtils, RequestStack $requestStack) {
  15.         $this->requestStack = $requestStack;
  16.         $this->entityManager = $entityManager;
  17.         $this->newsletterRepository = $newsletterRepository;
  18.         $this->otideaUtils = $otideaUtils;
  19.     }
  20.     
  21.     public function addRegistration($email = null){
  22.         
  23.         $titleNL= "Inscription Newsletter";
  24.         
  25.         $popup = $this->getPopupContent();
  26.         
  27.         if($email !== null){
  28.             if(filter_var($email, FILTER_VALIDATE_EMAIL)){
  29.                 $exist = $this->newsletterRepository->findOneBy(["nlEmail"=>$email]);
  30.                 if($exist === null){
  31.                     $nl = new Newsletter;
  32.                     $nl->setNlCreationDatetime(new \DateTime());
  33.                     $nl->setNlEmail($email);
  34.                     $nl->setNlRgpdChecked(1);
  35.                     try {
  36.                         $this->entityManager->persist($nl);
  37.                         $this->entityManager->flush();
  38.                         
  39.                         $this->otideaUtils->createPopup($popup["ok"]);
  40.                     } catch (Exception $e) {
  41.                         $this->otideaUtils->createPopup($popup["error"]);
  42.                     }
  43.                 }else
  44.                     $this->otideaUtils->createPopup($popup["exist"]);
  45.                 
  46.             }else
  47.                 $this->otideaUtils->createPopup($popup["invalid"]);
  48.         }
  49.         
  50.         return null;
  51.     }
  52.     
  53.     private function getPopupContent(){
  54.         $lang = $this->requestStack->getCurrentRequest()->getLocale();
  55.         
  56.         $titleNL= "Inscription Newsletter";
  57.         
  58.         if ($lang ==  "fr"){
  59.             return [
  60.                 "ok" => ["message" => "Votre enregistrement a bien été effectué", "title" => "Inscription Newsletter"],
  61.                 "error" => ["message" => "Une erreur est survenue lors de l'enregistrement de votre email", "title" => "Inscription Newsletter"],
  62.                 "exist" => ["message" => "Cet e-mail est déjà enregistré dans notre base de données", "title" => "Inscription Newsletter"],
  63.                 "invalid" => ["message" => "Cet e-mail n'est pas valide", "title" => "Inscription Newsletter"],
  64.                 ];
  65.         }else{
  66.             return [
  67.                 "ok" => ["message" => "Your registration has been completed", "title" => "Newsletter registration"],
  68.                 "error" => ["message" => "An error occurred while registering your email", "title" => "Newsletter registration"],
  69.                 "exist" => ["message" => "This e-mail is already registered in our database", "title" => "Newsletter registration"],
  70.                 "invalid" => ["message" => "This email is not valid", "title" => "Newsletter registration"],
  71.                 ];
  72.         }
  73.     }
  74. }