<?php
namespace App\Controller\ECommerce\App;
use App\Service\ECommerce\SynonymProductSearchService;
use App\Service\ECommerce\SynonymSearchService;
use Elastica\Query;
use Elastica\Query\QueryString;
use App\Entity\ECommerce\Synonym;
use FOS\ElasticaBundle\Finder\FinderInterface;
use FOS\ElasticaBundle\Finder\PaginatedFinderInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* Synonym controller.
*
* @package App\Controller\ECommerce\App
*
* @Route("/{_locale}/synonym", requirements={"_locale": "\w{2}"})
*/
class SynonymController extends AbstractController
{
/**
* Lists all product entities by size filter.
*
* @Route("/find_synonym", name="mdl_app_synonym_find")
*/
public function findSynonymAction(Request $request, SynonymSearchService $synonymSearchService): Response
{
$title = strtolower((string) $request->get('title'));
$isAjax = $request->isXmlHttpRequest();
$page = (integer)$request->get('page', 1);
$itemsPerPage = (integer)$request->get('itemsPerPage', 30);
$response = [
'synonyms' => [],
'categoryNames' => array_flip(Synonym::CATEGORIES),
'page' => $page,
'itemsPerPage' => $itemsPerPage,
'wrapped' => (boolean)$request->get('wrapped', true),
];
if ($title !== '' && $title !== '0') {
$response['synonyms'] = $synonymSearchService->getPaginatedList($title, $page, $itemsPerPage);
}
if (!$isAjax) {
return $this->render('ECommerce/App/Synonym/find_synonym.html.twig', $response);
}
return $this->render('ECommerce/App/Synonym/find_synonym.ajax.twig', $response);
}
/**
* Lists all product entities by size filter.
* @Route("/find_synonym_product", name="mdl_app_synonym_product_find")
*/
public function findSynonymProductAction(
Request $request,
SynonymProductSearchService $productSearchService
): Response {
$page = (integer)$request->get('page', 1);
$itemsPerPage = (integer)$request->get('itemsPerPage', 10);
$response = [
'synonymProducts' => [],
'categoryNames' => array_flip(Synonym::CATEGORIES),
'page' => $page,
'itemsPerPage' => $itemsPerPage,
'title' => $request->get('title'),
'wrapped' => (boolean)$request->get('wrapped', true),
];
$title = strtolower((string) $request->get('title'));
if ($title !== '' && $title !== '0') {
$response['synonymProducts'] = $productSearchService->getPaginatedList($title, $page, $itemsPerPage);
}
if (!$request->isXmlHttpRequest()) {
return $this->render('ECommerce/App/Synonym/find_synonym_product.html.twig', $response);
}
return $this->render('ECommerce/App/Synonym/find_synonym_product.ajax.twig', $response);
}
}