src/Controller/Meta/MetaCatalogController.php line 46

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Meta;
  3. use App\Datatable\Whatsapp\MetaCatalogDatatableType;
  4. use App\Enum\SiteEnum;
  5. use App\Manager\AssetsManager;
  6. use App\Manager\Csv\Exporter\MetaCatalogManagerCsvExporter;
  7. use App\Manager\Excel\Helper\CompatibilityHelper;
  8. use App\Model\Csv\MetaCatalogSpreadsheetModel;
  9. use App\Repository\OnlineShop\ProductRepository;
  10. use Omines\DataTablesBundle\DataTableFactory;
  11. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  17. use Symfony\Component\Routing\Annotation\Route;
  18. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  19. use Tbbc\MoneyBundle\Formatter\MoneyFormatter;
  20. class MetaCatalogController extends AbstractController
  21. {
  22.     /**
  23.      * @Route("/admin/meta/catalog/", name="admin_meta_catalog_index", methods={"GET", "POST"})
  24.      *
  25.      * @Security("is_granted(constant('App\\Enum\\VotersEnum::LIST_PRODUCT'))")
  26.      */
  27.     public function index(DatatableFactory $datatableFactoryRequest $request): Response
  28.     {
  29.         $datatable $datatableFactory->createFromType(MetaCatalogDatatableType::class)->handleRequest($request);
  30.         if ($datatable->isCallback()) {
  31.             return $datatable->getResponse();
  32.         }
  33.         return $this->render('whatsapp/meta_catalog/index.html.twig', [
  34.             'datatable' => $datatable,
  35.         ]);
  36.     }
  37.     /**
  38.      * Catalog feed for ES
  39.      * @Route("/meta/catalog/feed/{token}", name="meta_catalog_feed", methods={"GET"})
  40.      */
  41.     public function feed(
  42.         Request                       $request,
  43.         ProductRepository             $productRepository,
  44.         MoneyFormatter                $moneyFormatter,
  45.         AssetsManager                 $assetsManager,
  46.         UrlGeneratorInterface         $urlGenerator,
  47.         MetaCatalogManagerCsvExporter $exporterManager,
  48.         string                        $token ''): Response
  49.     {
  50.         if ($token === 'A3w45xTy89Az8puL') {
  51.             $products $productRepository->findMetaCatalogProductsPublishedAndVisibleBySite(SiteEnum::SITE_STR_ES);
  52.             $fileName 'meta_catalog'.'.'.CompatibilityHelper::CSV;
  53.             $fileNamePath sys_get_temp_dir().DIRECTORY_SEPARATOR.$fileName;
  54.             $spreadsheetProperties = new MetaCatalogSpreadsheetModel($fileNamePath$products$moneyFormatter$assetsManager$urlGenerator);
  55.             $exporterManager->writeCsvFileByModel($spreadsheetProperties);
  56.             $response = new BinaryFileResponse($fileNamePathResponse::HTTP_OK, ['Content-type' => 'text/'.CompatibilityHelper::CSV]);
  57.             return $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT);
  58.         } else {
  59.             throw $this->createNotFoundException('Not found');
  60.         }
  61.     }
  62.     /**
  63.      * Catalog feed for PT
  64.      * @Route("/meta/catalog/feed/pt/{token}", name="meta_catalog_feed_pt", methods={"GET"})
  65.      */
  66.     public function feedPt(
  67.         Request                       $request,
  68.         ProductRepository             $productRepository,
  69.         MoneyFormatter                $moneyFormatter,
  70.         AssetsManager                 $assetsManager,
  71.         UrlGeneratorInterface         $urlGenerator,
  72.         MetaCatalogManagerCsvExporter $exporterManager,
  73.         string                        $token ''): Response
  74.     {
  75.         if ($token === 'B3y44aHc21Ms1puX') {
  76.             $products $productRepository->findMetaCatalogProductsPublishedAndVisibleBySite(SiteEnum::SITE_STR_PT);
  77.             $fileName 'meta_catalog_pt'.'.'.CompatibilityHelper::CSV;
  78.             $fileNamePath sys_get_temp_dir().DIRECTORY_SEPARATOR.$fileName;
  79.             $spreadsheetProperties = new MetaCatalogSpreadsheetModel($fileNamePath$products$moneyFormatter$assetsManager$urlGenerator);
  80.             $exporterManager->writeCsvFileByModel($spreadsheetProperties);
  81.             $response = new BinaryFileResponse($fileNamePathResponse::HTTP_OK, ['Content-type' => 'text/'.CompatibilityHelper::CSV]);
  82.             return $response->setContentDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT);
  83.         } else {
  84.             throw $this->createNotFoundException('Not found');
  85.         }
  86.     }
  87. }