src/Controller/Contact/ContactSearchFormController.php line 68

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\Contact;
  4. use Symfony\Component\HttpFoundation\{
  5.     Request,
  6.     Response,
  7.     RedirectResponse
  8. };
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use App\Common\Controllers\CrmAbstractController;
  11. use App\Form\Contact\Type\ContactSearchType;
  12. use App\Services\Contact\{ContactServiceContactSearchService};
  13. use App\Entity\Contact;
  14. class ContactSearchFormController extends CrmAbstractController
  15. {
  16.     private const TEMPLATE_FOLDER 'contact/contact_search/';
  17.     /**
  18.      * @see CrmAbstractController
  19.      */
  20.     protected function initModuleDetails(): array
  21.     {
  22.         return [
  23.             'entityClassName' => Contact::class,
  24.             'formClassName' => ContactSearchType::class,
  25.             'moduleService' => ContactService::class,
  26.             'modulePrefix' => 'contact_search',
  27.             'moduleTemplate' => self::TEMPLATE_FOLDER,
  28.             'hasFilter' => false,
  29.             'useIndexMode' => true,
  30.         ];
  31.     }
  32.     #[Route(
  33.         '/contact-management/contact-search/form',
  34.         name'contact_management_contact_search_form',
  35.         methods: ['GET'],
  36.         options: ['expose' => true])
  37.     ]
  38.     public function index(Request $request): Response
  39.     {
  40.         $form $this->createForm($this->formClassName, (new Contact()));
  41.         return $this->render(
  42.             $this->moduleTemplate 'index.html.twig', [
  43.                 'form' => $form->createView(),
  44.                 'module' => ContactSearchType::MODULE_CONTACT_SEARCH,
  45.             ]
  46.         );
  47.     }
  48.     #[Route(
  49.         '/contact-management/contact-search/form',
  50.         name'contact_management_contact_set_search_form',
  51.         methods: ['POST'],
  52.         options: ['expose' => true])
  53.     ]
  54.     public function setSearchCriteria(Request $requestContactSearchService $contactSearchService): Response
  55.     {
  56.         $contactSearchCriteria $contactSearchService->getSearchFormCriteria();
  57.         $session $request->getSession();
  58.         $session->set('hasContactSearch'true);
  59.         $session->set('contactSearchCriteria'$contactSearchCriteria);
  60.         if ($session->has('contact_contact_keyword')) {
  61.             $session->remove('contact_contact_keyword');
  62.         }
  63.         return new Response();
  64.     }
  65.     #[Route(
  66.         '/contact-management/contact-search/remove-search',
  67.         name'contact_management_contact_search_remove',
  68.         methods: ['GET'],
  69.         options: ['expose' => true])
  70.     ]
  71.     public function delete(Request $request): RedirectResponse
  72.     {
  73.         $session $request->getSession();
  74.         $session->set('hasContactSearch'false);
  75.         if ($session->has('contactSearchCriteria')) {
  76.             $session->remove('contactSearchCriteria');
  77.         }
  78.         return $this->redirectToRoute('contact_management_contact_management_index');
  79.     }
  80.     #[Route(
  81.         '/contact-management/contact-search/csv-export',
  82.         name'contact_management_contact_search_csv_export',
  83.         options: ['expose' => true])
  84.     ]
  85.     public function csvExport(Request $requestContactService $contactService): Response
  86.     {
  87.         return parent::csvExportResponse(
  88.             $request,
  89.             $contactService,
  90.             $contactService->getCsvExportFilename()
  91.         );
  92.     }
  93. }