<?php
namespace App\Controller\Frontend;
use App\Entity\Subscriber;
use App\Form\SubscriberType;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use ReCaptcha\ReCaptcha;
use App\Entity\Hhrr;
use App\Service\FileUploader;
class SubscriberController extends AbstractController
{
/**
*
* @Route({
* "es":"{_locale}/suscripcion-boletin/",
* "ca":"{_locale}/subscripcio-botlleti/",
* "en":"{_locale}/newsletter-subscription/",
* "cn":"{_locale}/newsletter-subscription/",
* }, name="subscribe",
* requirements={
* "_locale": "es|ca|en|cn",
* "_format" : "html"
* })
*/
public function subscribe(Request $request)
{
$template = 'Frontend/subscriber/form_ok.html.twig';
$subscriber = new Subscriber();
$em = $this->getDoctrine()->getManager();
if ($request->request->all()['subscriber']['email'] && $request->request->all()['g-recaptcha-response']) {
$recaptcha = new ReCaptcha($_ENV['GOOGLE_RECAPTCHA_SECRET']);
$resp = $recaptcha->verify($request->request->get('g-recaptcha-response'), $request->getClientIp());
if ($resp->isSuccess()) {
if (filter_var($request->request->get('subscriber')['email'], FILTER_VALIDATE_EMAIL)) {
if (!$this->getDoctrine()->getRepository(Subscriber::class)->findBy(['subscriber' => $request->request->get('subscriber')['email']])) {
$subscriber->setSubscriber($request->request->get('subscriber')['email']);
$subscriber->setCodLang($request->getLocale() === 'ca' ? 'ca' : 'es');
$em->persist($subscriber);
$em->flush();
} else {
$template = 'Frontend/subscriber/form_ko.html.twig';
}
} else {
$template = 'Frontend/subscriber/form_ko.html.twig';
}
} else {
$template = 'Frontend/subscriber/form_ko.html.twig';
}
} else {
$template = 'Frontend/subscriber/form_ko.html.twig';
}
// try {
// $em = $this->getDoctrine()->getManager();
// $eSubscriber = new Subscriber();
// $eSubscriber->setSubscriber($request->request->get('subscriber')['email']);
// $eSubscriber->setCodLang($request->getLocale() === 'ca' ? 'ca' : 'es');
// $em->persist($eSubscriber);
// $em->flush();
// } catch (\Exception $e) {
//
// }
return $this->render($template);
}
public function drawForm(Request $request)
{
$oForm = $this->createForm(SubscriberType::class, null, [
'url' => $this->generateUrl('subscribe')
]);
return $this->render('Frontend/subscriber/subscriber_form.html.twig', [
'form' => $oForm->createView()
]);
}
/**
*
* @Route({
* "es":"{_locale}/delete-old-subscribers/",
* "ca":"{_locale}/delete-old-subscribers/",
* "en":"{_locale}/delete-old-subscribers/",
* "cn":"{_locale}/delete-old-subscribers/",
* }, name="deleteSubscribers",
* requirements={
* "_locale": "es|ca|en|cn",
* "_format" : "html"
* })
*/
public function delete(Request $request, FileUploader $fileUploader)
{
$numberOfRecords = 0;
$em = $this->getDoctrine()->getManager();
$records = $this->getDoctrine()->getRepository(Hhrr::class)->deleteOldSubscribers();
if ($records) {
foreach ($records as $record) {
$fileUploader->removeAllRecordFiles($record->getId(), 'hhrr');
$em->remove($record);
$em->flush();
$numberOfRecords++;
}
}
die($numberOfRecords . ' registros eliminados');
}
}