src/CoreBundle/Controller/Admin/OrderPdfController.php line 138

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\CoreBundle\Controller\Admin;
  4. use App\CoreBundle\Component\Grid\DataSourceInterface;
  5. use App\CoreBundle\Component\Grid\GridFactory;
  6. use App\CoreBundle\Component\Grid\QueryBuilderWithRowManipulatorDataSource;
  7. use App\CoreBundle\Form\Admin\QuickSearch\QuickSearchFormData;
  8. use App\CoreBundle\Form\Admin\QuickSearch\QuickSearchFormType;
  9. use App\CoreBundle\Model\Administrator\AdministratorGridFacade;
  10. use App\CoreBundle\Model\AdminNavigation\BreadcrumbOverrider;
  11. use App\CoreBundle\Model\OrderPdf\OrderPdfFacade;
  12. use App\CoreBundle\Model\UploadedFile\UploadedFileFacade;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use App\CoreBundle\Component\Router\Security\Annotation\CsrfProtection;
  16. class OrderPdfController extends AdminBaseController
  17. {
  18.     /**
  19.      * @var \App\CoreBundle\Model\AdminNavigation\BreadcrumbOverrider
  20.      */
  21.     protected $breadcrumbOverrider;
  22.     /**
  23.      * @var \App\CoreBundle\Component\Grid\GridFactory
  24.      */
  25.     protected $gridFactory;
  26.     /**
  27.      * @var \App\CoreBundle\Model\OrderPdf\OrderPdfFacade
  28.      */
  29.     protected $orderPdfFacade;
  30.     /**
  31.      * @var \App\CoreBundle\Model\Administrator\AdministratorGridFacade
  32.      */
  33.     protected $administratorGridFacade;
  34.     /**
  35.      * @var UploadedFileFacade
  36.      */
  37.     protected $uploadedFileFacade;
  38.     public function __construct(
  39.         BreadcrumbOverrider $breadcrumbOverrider,
  40.         GridFactory $gridFactory,
  41.         OrderPdfFacade $orderPdfFacade,
  42.         AdministratorGridFacade $administratorGridFacade,
  43.         UploadedFileFacade $uploadedFileFacade
  44.     ) {
  45.         $this->breadcrumbOverrider $breadcrumbOverrider;
  46.         $this->gridFactory $gridFactory;
  47.         $this->orderPdfFacade $orderPdfFacade;
  48.         $this->administratorGridFacade $administratorGridFacade;
  49.         $this->uploadedFileFacade $uploadedFileFacade;
  50.     }
  51.     /**
  52.      * @Route("/order-pdf/list", name="admin_order_pdf_list")
  53.      * @param \Symfony\Component\HttpFoundation\Request $request
  54.      */
  55.     public function listAction(Request $request)
  56.     {
  57.         $administrator $this->getUser();
  58.         /* @var $administrator \App\CoreBundle\Model\Administrator\Administrator */
  59.         $quickSearchForm $this->createForm(QuickSearchFormType::class, new QuickSearchFormData());
  60.         $quickSearchForm->handleRequest($request);
  61.         $queryBuilder $this->orderPdfFacade->getOrderPdfListQueryBuilderByQuickSearchData($quickSearchForm->getData());
  62.         $dataSource = new QueryBuilderWithRowManipulatorDataSource(
  63.             $queryBuilder,
  64.             'op.id',
  65.             function ($row) {
  66.                 return $this->addOrderPdfEntityToDataSource($row);
  67.             }
  68.         );
  69.         $grid $this->gridFactory->create('orderPdfList'$dataSource);
  70.         $grid->enablePaging();
  71.         $grid->setDefaultOrder('created_at'DataSourceInterface::ORDER_DESC);
  72.         $grid->addColumn('info''op.info't('Info'), false);
  73.         $grid->addColumn('status''op.status't('Status'), false);
  74.         $grid->addColumn('tags''tags't('Tags'), false);
  75.         $grid->addColumn('orders''orders't('Orders'), false);
  76.         $grid->addColumn('pdfs''pdfs't('PDF Document'), false);
  77.         $grid->addColumn('created_at''op.createdAt't('Created'), true);
  78.         $grid->setActionColumnClassAttribute('table-col table-col-10');
  79.         $grid->addDeleteActionColumn('admin_order_pdf_delete', ['id' => 'id'], [])
  80.             ->setConfirmMessage(t('Do you really want to remove the documents?'));
  81.         $grid->setTheme('Admin/Content/OrderPdf/listGrid.html.twig');
  82.         $this->administratorGridFacade->restoreAndRememberGridLimit($administrator$grid);
  83.         return $this->render('Admin/Content/OrderPdf/list.html.twig', [
  84.             'gridView' => $grid->createView(),
  85.             'totalCount' => $grid->getTotalCount(),
  86.             'quickSearchForm' => $quickSearchForm->createView(),
  87.         ]);
  88.     }
  89.     /**
  90.      * @param array $row
  91.      * @return array
  92.      */
  93.     protected function addOrderPdfEntityToDataSource(array $row)
  94.     {
  95.         $orderPdf $this->orderPdfFacade->getById($row['id']);
  96.         $row['orderPdf'] = $orderPdf;
  97.         $row['orders'] = $orderPdf->getOrders();
  98.         $row['tags'] = $orderPdf->getTags();
  99.         $row['attr']['class'] = 'grid-group grid-group--' $orderPdf->getGridGroup();
  100.         $ordersPacketa = array();
  101.         foreach ($orderPdf->getOrders() as $order) {
  102.             $ordersPacketa[$order->getId()] = $order->getPacketa();
  103.         }
  104.         $row['ordersPacketa'] = $ordersPacketa;
  105.         $row['pdfs'] = $this->uploadedFileFacade->getUploadedFilesByEntity($orderPdf);
  106.         return $row;
  107.     }
  108.     /**
  109.      * @Route("/order-pdf/delete/{id}", requirements={"id" = "\d+"}, name="admin_order_pdf_delete")
  110.      * @CsrfProtection
  111.      * @param int $id
  112.      */
  113.     public function deleteAction($id)
  114.     {
  115.         $this->orderPdfFacade->deleteById($id);
  116.         return $this->redirectToRoute('admin_order_pdf_list');
  117.     }
  118. }