<?php
namespace Acme\SudcmsBundle\Service;
use Acme\SudcmsBundle\Service\OtideaUtils;
use Doctrine\ORM\EntityManagerInterface;
use Acme\SudcmsBundle\Entity\Newsletter;
use Acme\SudcmsBundle\Repository\NewsletterRepository;
use Symfony\Component\HttpFoundation\RequestStack;
class NewsletterService
{
private $entityManager;
private $newsletterRepository;
private $requestStack;
public function __construct(EntityManagerInterface $entityManager, NewsletterRepository $newsletterRepository, OtideaUtils $otideaUtils, RequestStack $requestStack) {
$this->requestStack = $requestStack;
$this->entityManager = $entityManager;
$this->newsletterRepository = $newsletterRepository;
$this->otideaUtils = $otideaUtils;
}
public function addRegistration($email = null){
$titleNL= "Inscription Newsletter";
$popup = $this->getPopupContent();
if($email !== null){
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
$exist = $this->newsletterRepository->findOneBy(["nlEmail"=>$email]);
if($exist === null){
$nl = new Newsletter;
$nl->setNlCreationDatetime(new \DateTime());
$nl->setNlEmail($email);
$nl->setNlRgpdChecked(1);
try {
$this->entityManager->persist($nl);
$this->entityManager->flush();
$this->otideaUtils->createPopup($popup["ok"]);
} catch (Exception $e) {
$this->otideaUtils->createPopup($popup["error"]);
}
}else
$this->otideaUtils->createPopup($popup["exist"]);
}else
$this->otideaUtils->createPopup($popup["invalid"]);
}
return null;
}
private function getPopupContent(){
$lang = $this->requestStack->getCurrentRequest()->getLocale();
$titleNL= "Inscription Newsletter";
if ($lang == "fr"){
return [
"ok" => ["message" => "Votre enregistrement a bien été effectué", "title" => "Inscription Newsletter"],
"error" => ["message" => "Une erreur est survenue lors de l'enregistrement de votre email", "title" => "Inscription Newsletter"],
"exist" => ["message" => "Cet e-mail est déjà enregistré dans notre base de données", "title" => "Inscription Newsletter"],
"invalid" => ["message" => "Cet e-mail n'est pas valide", "title" => "Inscription Newsletter"],
];
}else{
return [
"ok" => ["message" => "Your registration has been completed", "title" => "Newsletter registration"],
"error" => ["message" => "An error occurred while registering your email", "title" => "Newsletter registration"],
"exist" => ["message" => "This e-mail is already registered in our database", "title" => "Newsletter registration"],
"invalid" => ["message" => "This email is not valid", "title" => "Newsletter registration"],
];
}
}
}