src/Controller/ManageCountriesController.php line 73

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\Routing\Annotation\Route;
  8. use App\Form\Filters\ManageCountryFilter;
  9. use App\Repository\CountriesRepository;
  10. use App\Form\ManageCountryForm;
  11. use App\Entity\UserCountries;
  12. #[Route('/settings/manage-countries')]
  13. class ManageCountriesController extends AbstractController
  14. {
  15.     #[Route('/'defaults: ['page' => '1'], methods: ['GET'], name'settings_manage_countries_index')]
  16.     #[Route('/page/{page<[1-9]\d*>}'methods: ['GET'], name'settings_manage_countries_index_paginated')]
  17.     #[Cache(smaxage10)]
  18.     public function index(Request $request,int $page,EntityManagerInterface $entityManager,CountriesRepository $countriesRepository): Response
  19.     {
  20.         $params $request->query->all();
  21.         $filter = [];
  22.         $filterForm $this->createForm(ManageCountryFilter::class);
  23.         
  24.         if(isset($params['countryName'])) {
  25.             $filterForm['countryName']->setData($params['countryName']);
  26.             $filter['countryName'] = $params['countryName'];
  27.         }
  28.         if(isset($params['countryCode'])) {
  29.             $filterForm['countryCode']->setData($params['countryCode']);
  30.             $filter['countryCode'] = $params['countryCode'];
  31.         }
  32.         if(isset($params['enable'])) {
  33.             $filterForm['enable']->setData($params['enable']);
  34.             $filter['enable'] = $params['enable'];
  35.         }
  36.         $data $countriesRepository->adminPaginatorFetchAll($page$filter);
  37.         return $this->render('manage-countries/index.html.twig', [
  38.             'paginator' => $data,
  39.             'filter' => $filter,
  40.             'form' => $filterForm->createView(),
  41.         ]);
  42.     }
  43.     #[Route('/edit/{id}'name'edit_country'methods: ['GET''POST'])]
  44.     public function edit(Request $requestEntityManagerInterface $entityManagerUserCountries $countries){
  45.        
  46.         $form $this->createForm(ManageCountryForm::class, $countries);
  47.         $form->handleRequest($request);
  48.     
  49.         if ($form->isSubmitted() && $form->isValid()) {
  50.             $entityManager->persist($countries);
  51.             $entityManager->flush();
  52.             $this->addFlash('success''Update successfully.');
  53.             return $this->redirectToRoute('settings_manage_countries_index', [], Response::HTTP_SEE_OTHER);
  54.         }
  55.     
  56.         return $this->renderForm('manage-countries/edit.html.twig', [
  57.             'form' => $form,
  58.             'countries'=>$countries,
  59.         ]);
  60.     }
  61.     #[Route('/delete/{id}'name'delete_country'methods: ['POST','GET'])]
  62.     public function deleteUser(Request $requestEntityManagerInterface $entityManagerUserCountries $countries): Response
  63.     {
  64.         $redirectPage $request->query->get('redirect_page');
  65.         if ($this->isCsrfTokenValid('delete'.$countries->getCountryId(), $request->request->get('_token'))) {
  66.             if($request->isMethod('POST')){
  67.                 $countries->setIsDeleted(1);
  68.                 $entityManager->persist($countries);
  69.                 $entityManager->flush();
  70.                 $this->addFlash('error''Delete successfully.');
  71.                 if($request->request->get('redirect_page')){
  72.                     return $this->redirectToRoute('settings_manage_countries_index_paginated', ['page'=> $request->request->get('redirect_page')], Response::HTTP_SEE_OTHER);
  73.                 }
  74.                 return $this->redirectToRoute('settings_manage_countries_index', [], Response::HTTP_SEE_OTHER);
  75.             }
  76.         }
  77.         return $this->renderForm('manage-countries/_delete_form.html.twig', [
  78.             'countries' => $countries,
  79.             'redirect_page' => $redirectPage,
  80.         ]);
  81.     }
  82. }