src/Controller/ECommerce/App/SynonymController.php line 85

Open in your IDE?
  1. <?php
  2. namespace App\Controller\ECommerce\App;
  3. use App\Service\ECommerce\SynonymProductSearchService;
  4. use App\Service\ECommerce\SynonymSearchService;
  5. use Elastica\Query;
  6. use Elastica\Query\QueryString;
  7. use App\Entity\ECommerce\Synonym;
  8. use FOS\ElasticaBundle\Finder\FinderInterface;
  9. use FOS\ElasticaBundle\Finder\PaginatedFinderInterface;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. /**
  15. * Synonym controller.
  16. *
  17. * @package App\Controller\ECommerce\App
  18. *
  19. * @Route("/{_locale}/synonym", requirements={"_locale": "\w{2}"})
  20. */
  21. class SynonymController extends AbstractController
  22. {
  23. /**
  24. * Lists all product entities by size filter.
  25. *
  26. * @Route("/find_synonym", name="mdl_app_synonym_find")
  27. */
  28. public function findSynonymAction(Request $request, SynonymSearchService $synonymSearchService): Response
  29. {
  30. $title = strtolower((string) $request->get('title'));
  31. $isAjax = $request->isXmlHttpRequest();
  32. $page = (integer)$request->get('page', 1);
  33. $itemsPerPage = (integer)$request->get('itemsPerPage', 30);
  34. $response = [
  35. 'synonyms' => [],
  36. 'categoryNames' => array_flip(Synonym::CATEGORIES),
  37. 'page' => $page,
  38. 'itemsPerPage' => $itemsPerPage,
  39. 'wrapped' => (boolean)$request->get('wrapped', true),
  40. ];
  41. if ($title !== '' && $title !== '0') {
  42. $response['synonyms'] = $synonymSearchService->getPaginatedList($title, $page, $itemsPerPage);
  43. }
  44. if (!$isAjax) {
  45. return $this->render('ECommerce/App/Synonym/find_synonym.html.twig', $response);
  46. }
  47. return $this->render('ECommerce/App/Synonym/find_synonym.ajax.twig', $response);
  48. }
  49. /**
  50. * Lists all product entities by size filter.
  51. * @Route("/find_synonym_product", name="mdl_app_synonym_product_find")
  52. */
  53. public function findSynonymProductAction(
  54. Request $request,
  55. SynonymProductSearchService $productSearchService
  56. ): Response {
  57. $page = (integer)$request->get('page', 1);
  58. $itemsPerPage = (integer)$request->get('itemsPerPage', 10);
  59. $response = [
  60. 'synonymProducts' => [],
  61. 'categoryNames' => array_flip(Synonym::CATEGORIES),
  62. 'page' => $page,
  63. 'itemsPerPage' => $itemsPerPage,
  64. 'title' => $request->get('title'),
  65. 'wrapped' => (boolean)$request->get('wrapped', true),
  66. ];
  67. $title = strtolower((string) $request->get('title'));
  68. if ($title !== '' && $title !== '0') {
  69. $response['synonymProducts'] = $productSearchService->getPaginatedList($title, $page, $itemsPerPage);
  70. }
  71. if (!$request->isXmlHttpRequest()) {
  72. return $this->render('ECommerce/App/Synonym/find_synonym_product.html.twig', $response);
  73. }
  74. return $this->render('ECommerce/App/Synonym/find_synonym_product.ajax.twig', $response);
  75. }
  76. }