src/Controller/QueueController.php line 29

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\SiteSms;
  4. use App\Entity\SiteMails;
  5. use App\Entity\SiteSmsRecipients;
  6. use App\Entity\SiteMailRecipients;
  7. use App\Form\BannedIpsForm;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. use App\Form\Filters\BannedIpFilter;
  14. use App\Form\Filters\EmailQueueFilter;
  15. use App\Form\Filters\SMSQueueFilter;
  16. use App\Repository\SiteMailsRepository;
  17. use App\Repository\SiteSmsRepository;
  18. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  19. #[Route('/task')]
  20. class QueueController extends AbstractController
  21. {
  22.     #[Route('/mail'defaults: ['page' => '1'], methods: ['GET'], name'queue_email_index')]
  23.     #[Route('/mail/page/{page<[1-9]\d*>}'methods: ['GET'], name'queue_email_index_paginated')]
  24.     #[Cache(smaxage10)]
  25.     public function index(Request $request,int $page,EntityManagerInterface $entityManager,SiteMailsRepository $siteMailsRepository): Response
  26.     {
  27.         $params $request->query->all();
  28.         $filter = [];
  29.         
  30.         $filterForm $this->createForm(EmailQueueFilter::class);
  31.         if(isset($params['start_date'])) {
  32.             $filterForm['start_date']->setData($params['start_date']);
  33.             $filter['start_date'] = $params['start_date'];
  34.         }
  35.         if(isset($params['end_date'])) {
  36.             $filterForm['end_date']->setData($params['end_date']);
  37.             $filter['end_date'] = $params['end_date'];
  38.         }
  39.         
  40.         if(isset($params['email'])) {
  41.             $filterForm['email']->setData($params['email']);
  42.             $filter['email'] = $params['email'];
  43.         }
  44.         $data $siteMailsRepository->adminPaginatorFetchAll($page,$filter);
  45.         return $this->render('queue/index.html.twig', [
  46.             'paginator' => $data,
  47.             'filter' => $filter,
  48.             'form' => $filterForm->createView(),
  49.         ]);
  50.     }
  51.     #[Route('/mail-delete/{id}'name'queue_email_delete'methods: ['POST','GET'])]
  52.     public function mailDelete(Request $requestSiteMails $siteMailsEntityManagerInterface $entityManager): Response
  53.     {
  54.         if ($this->isCsrfTokenValid('delete'.$siteMails->getMailId(), $request->request->get('_token'))) {
  55.             $siteMailRecipients $entityManager->getRepository(\App\Entity\SiteMailRecipients::class)->findBy(['mailId' => $siteMails->getMailId()]);
  56.             if($siteMailRecipients){
  57.                 foreach($siteMailRecipients as $rec){
  58.                     $entityManager->remove($rec);
  59.                     $entityManager->flush();
  60.                 }
  61.             }
  62.             $entityManager->remove($siteMails);
  63.             $entityManager->flush();
  64.             
  65.             $this->addFlash('error''Delete successfully.');
  66.             if($request->request->get('redirect_page')){
  67.                 return $this->redirectToRoute('queue_email_index_paginated', ['page'=> $request->request->get('redirect_page')], Response::HTTP_SEE_OTHER);
  68.             }
  69.             return $this->redirectToRoute('queue_email_index', [], Response::HTTP_SEE_OTHER);
  70.         }
  71.         return $this->renderForm('queue/email_delete_form.html.twig', [
  72.             'siteMails' => $siteMails,
  73.             'redirect_page' => $request->query->get('redirect_page')
  74.         ]);
  75.     }
  76.     #[Route('/empty-queue-email'name'queue_email_empty'methods: ['POST','GET'])]
  77.     public function emptyDelete(Request $requestEntityManagerInterface $entityManager): Response
  78.     {
  79.         if ($this->isCsrfTokenValid('empty-queue'$request->request->get('_token'))) {
  80.             $entityManager->createQueryBuilder()
  81.                             ->delete(SiteMails::class,'c')
  82.                             ->getQuery()->execute();
  83.             $entityManager->createQueryBuilder()
  84.                             ->delete(SiteMailRecipients::class,'c')
  85.                             ->getQuery()->execute();
  86.             
  87.             return $this->redirectToRoute('queue_email_index', [], Response::HTTP_SEE_OTHER);
  88.         }
  89.         return $this->renderForm('queue/empty_queue_email.html.twig', []);
  90.     }
  91.     #[Route('/sms'defaults: ['page' => '1'], methods: ['GET'], name'queue_sms_index')]
  92.     #[Route('/sms/page/{page<[1-9]\d*>}'methods: ['GET'], name'queue_sms_index_paginated')]
  93.     #[Cache(smaxage10)]
  94.     public function smsIndex(Request $request,int $page,EntityManagerInterface $entityManager,SiteSmsRepository $siteSmsRepository): Response
  95.     {
  96.         $params $request->query->all();
  97.         $filter = [];
  98.         
  99.         $filterForm $this->createForm(SMSQueueFilter::class);
  100.         if(isset($params['start_date'])) {
  101.             $filterForm['start_date']->setData($params['start_date']);
  102.             $filter['start_date'] = $params['start_date'];
  103.         }
  104.         if(isset($params['end_date'])) {
  105.             $filterForm['end_date']->setData($params['end_date']);
  106.             $filter['end_date'] = $params['end_date'];
  107.         }
  108.         
  109.         if(isset($params['phone'])) {
  110.             $filterForm['phone']->setData($params['phone']);
  111.             $filter['phone'] = $params['phone'];
  112.         }
  113.         if(isset($params['sms_type'])) {
  114.             $filterForm['sms_type']->setData($params['sms_type']);
  115.             $filter['sms_type'] = $params['sms_type'];
  116.         }
  117.         $data $siteSmsRepository->adminPaginatorFetchAll($page,$filter);
  118.         return $this->render('queue/sms-index.html.twig', [
  119.             'paginator' => $data,
  120.             'filter' => $filter,
  121.             'form' => $filterForm->createView(),
  122.         ]);
  123.     }
  124.     #[Route('/sms-delete/{id}'name'queue_sms_delete'methods: ['POST','GET'])]
  125.     public function smsDelete(Request $requestSiteSms $siteSmsEntityManagerInterface $entityManager): Response
  126.     {
  127.         if ($this->isCsrfTokenValid('delete'.$siteSms->getSmsId(), $request->request->get('_token'))) {
  128.             $siteSmsRecipients $entityManager->getRepository(\App\Entity\SiteSmsRecipients::class)->findBy(['smsId' => $siteSms->getSmsId()]);
  129.             if($siteSmsRecipients){
  130.                 foreach($siteSmsRecipients as $rec){
  131.                     $entityManager->remove($rec);
  132.                     $entityManager->flush();
  133.                 }
  134.             }
  135.             $entityManager->remove($siteSms);
  136.             $entityManager->flush();
  137.             
  138.             $this->addFlash('error''Delete successfully.');
  139.             if($request->request->get('redirect_page')){
  140.                 return $this->redirectToRoute('queue_sms_index_paginated', ['page'=> $request->request->get('redirect_page')], Response::HTTP_SEE_OTHER);
  141.             }
  142.             return $this->redirectToRoute('queue_sms_index', [], Response::HTTP_SEE_OTHER);
  143.         }
  144.         return $this->renderForm('queue/sms_delete_form.html.twig', [
  145.             'siteSms' => $siteSms,
  146.             'redirect_page' => $request->query->get('redirect_page')
  147.         ]);
  148.     }
  149.  
  150.     #[Route('/empty-queue-sms'name'queue_sms_empty'methods: ['POST','GET'])]
  151.     public function emptySmsDelete(Request $requestEntityManagerInterface $entityManager): Response
  152.     {
  153.         if ($this->isCsrfTokenValid('empty-queue-sms'$request->request->get('_token'))) {
  154.             $entityManager->createQueryBuilder()
  155.                             ->delete(SiteSms::class,'c')
  156.                             ->getQuery()->execute();
  157.             $entityManager->createQueryBuilder()
  158.                             ->delete(SiteSmsRecipients::class,'c')
  159.                             ->getQuery()->execute();
  160.             
  161.             return $this->redirectToRoute('queue_sms_index', [], Response::HTTP_SEE_OTHER);
  162.         }
  163.         return $this->renderForm('queue/empty_queue_sms.html.twig', []);
  164.     }
  165. }