src/Controller/BannedEmailController.php line 115

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\SiteBannedEmails;
  4. use App\Form\BannedEmailsForm;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use App\Form\Filters\BannedEmailFilter;
  11. use App\Repository\BannedEmailsRepository;
  12. #[Route('/banned/email')]
  13. class BannedEmailController extends AbstractController
  14. {
  15.     #[Route('/'defaults: ['page' => '1'], methods: ['GET'], name'banned_email_index')]
  16.     #[Route('/page/{page<[1-9]\d*>}'methods: ['GET'], name'banned_email_index_paginated')]
  17.     #[Cache(smaxage10)]
  18.     public function index(Request $request,int $page,EntityManagerInterface $entityManager,BannedEmailsRepository $bannedEmailsRepository): Response
  19.     {
  20.         $params $request->query->all();
  21.         $filter = [];
  22.         $filterForm $this->createForm(BannedEmailFilter::class);
  23.         
  24.         if(isset($params['email'])) {
  25.             $filterForm['email']->setData($params['email']);
  26.             $filter['email'] = $params['email'];
  27.         }
  28.         if(isset($params['reason'])) {
  29.             $filterForm['reason']->setData($params['reason']);
  30.             $filter['reason'] = $params['reason'];
  31.         }
  32.         $data $bannedEmailsRepository->adminPaginatorFetchAll($page$filter);
  33.         return $this->render('banned-email/index.html.twig', [
  34.             'paginator' => $data,
  35.             'filter' => $filter,
  36.             'form' => $filterForm->createView(),
  37.         ]);
  38.     }
  39.     #[Route('/new'name'banned_email_new'methods: ['GET''POST'])]
  40.     public function new(Request $requestEntityManagerInterface $entityManager): Response
  41.     {
  42.         $bannedEmail = new SiteBannedEmails();
  43.         $form $this->createForm(BannedEmailsForm::class, $bannedEmail);
  44.         $form->handleRequest($request);
  45.         $redirectPage $request->query->get('redirect_page');
  46.         if ($form->isSubmitted() && $form->isValid()) {
  47.             $data $form->getData();
  48.             $redirectPage $request->request->get('redirect_page');
  49.             $ipData $entityManager->getRepository(\App\Entity\SiteBannedEmails::class)->findOneBy(array('email' => $data->getEmail()));
  50.             if($ipData){
  51.                 $this->addFlash('error''This email is already exists.');
  52.                 if($redirectPage){
  53.                     return $this->redirectToRoute('banned_email_index_paginated', ['page'=> $redirectPage], Response::HTTP_SEE_OTHER);
  54.                 }
  55.                 return $this->redirectToRoute('banned_email_index', [], Response::HTTP_SEE_OTHER);
  56.             }
  57.             
  58.             $entityManager->persist($bannedEmail);
  59.             $entityManager->flush();
  60.             $this->addFlash('success''Created successfully.');
  61.             if($redirectPage){
  62.                 return $this->redirectToRoute('banned_email_index_paginated', ['page'=> $redirectPage], Response::HTTP_SEE_OTHER);
  63.             }
  64.             return $this->redirectToRoute('banned_email_index', [], Response::HTTP_SEE_OTHER);
  65.         }else if($form->isSubmitted() && !$form->isValid()){
  66.             $this->addFlash('error''Something went wrong.');
  67.             if($redirectPage){
  68.                 return $this->redirectToRoute('banned_email_index_paginated', ['page'=> $redirectPage], Response::HTTP_SEE_OTHER);
  69.             }
  70.             return $this->redirectToRoute('banned_email_index', [], Response::HTTP_SEE_OTHER);
  71.         }
  72.         return $this->renderForm('banned-email/new.html.twig', [
  73.             'banned_email' => $bannedEmail,
  74.             'form' => $form,
  75.             'redirect_page' => $redirectPage
  76.         ]);
  77.     }
  78.     #[Route('/{id}/edit'name'banned_email_edit'methods: ['GET''POST'])]
  79.     public function edit(Request $requestSiteBannedEmails $bannedEmailEntityManagerInterface $entityManager): Response
  80.     {
  81.         $form $this->createForm(BannedEmailsForm::class, $bannedEmail);
  82.         $form->handleRequest($request);
  83.         $redirectPage $request->query->get('redirect_page');
  84.         if ($form->isSubmitted() && $form->isValid()) {
  85.             $redirectPage $request->request->get('redirect_page');
  86.             $entityManager->flush();
  87.             $this->addFlash('success''Update successfully.');
  88.             if($redirectPage){
  89.                 return $this->redirectToRoute('banned_email_index_paginated', ['page'=> $redirectPage], Response::HTTP_SEE_OTHER);
  90.             }
  91.             return $this->redirectToRoute('banned_email_index', [], Response::HTTP_SEE_OTHER);
  92.         }
  93.         return $this->renderForm('banned-email/edit.html.twig', [
  94.             'bannedEmail' => $bannedEmail,
  95.             'form' => $form,
  96.             'redirect_page' => $redirectPage
  97.         ]);
  98.     }
  99.     #[Route('/delete/{id}'name'banned_email_delete'methods: ['POST','GET'])]
  100.     public function delete(Request $requestSiteBannedEmails $bannedEmailEntityManagerInterface $entityManager): Response
  101.     {
  102.         if ($this->isCsrfTokenValid('delete'.$bannedEmail->getEmailId(), $request->request->get('_token'))) {
  103.             $entityManager->remove($bannedEmail);
  104.             $entityManager->flush();
  105.             $this->addFlash('error''Delete successfully.');
  106.             if($request->request->get('redirect_page')){
  107.                 return $this->redirectToRoute('banned_email_index_paginated', ['page'=> $request->request->get('redirect_page')], Response::HTTP_SEE_OTHER);
  108.             }
  109.             return $this->redirectToRoute('banned_email_index', [], Response::HTTP_SEE_OTHER);
  110.         }
  111.         return $this->renderForm('banned-email/_delete_form.html.twig', [
  112.             'bannedEmail' => $bannedEmail,
  113.             'redirect_page' => $request->query->get('redirect_page')
  114.         ]);
  115.     }
  116. }