src/Controller/AppController.php line 24

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Form\AppSupplyCriteriaType;
  4. use App\Repository\SupplyRepository;
  5. use App\Repository\CustomerRepository;
  6. use Knp\Component\Pager\PaginatorInterface;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use App\Repository\SupplyActionHistoryRepository;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  13. use Symfony\Component\HttpFoundation\RequestStack;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. class AppController extends AbstractController
  16. {
  17.     /**
  18.      * @Security("is_granted('ROLE_ADMIN') or is_granted('ROLE_ISPROD')")
  19.      * @Route("/", name="app", methods={"POST", "GET"})
  20.      */
  21.     public function index(
  22.         SupplyActionHistoryRepository $supplyActionHistoryRepository,
  23.         CustomerRepository $customerRepository,
  24.         SupplyRepository $supplyRepository,
  25.         PaginatorInterface $paginator,
  26.         Request $request
  27.     ): Response {
  28.         $lastSuppliesAction $supplyActionHistoryRepository->findBy([], ['id' => 'DESC'], 5);
  29.         $limit          15;
  30.         $page           $request->query->getInt('page'1);
  31.         /** @var array $supplyCriteria */
  32.         $supplyCriteria $request->query->get('app_supply_criteria');
  33.         $customer       $supplyCriteria['customer'] ?? null;
  34.         $criteria       = [];
  35.         $form $this->createForm(AppSupplyCriteriaType::class, $customerRepository->getCustomersNames());
  36.         $form->handleRequest($request);
  37.         // AppSupplyCriteriaType contains only customer field
  38.         if (!is_null($customer) && $customer !== '0') {
  39.             $criteria['customer'] = $customer;
  40.         }
  41.         $supplies $supplyRepository->getSuppliesWhereCustomerAndSupplyActive($criteria);
  42.         $paginateSupplies $paginator->paginate($supplies$page$limit);
  43.         return $this->render('app/index.html.twig', [
  44.             'last_supplies_action_history' => $lastSuppliesAction,
  45.             'form' => $form->createView(),
  46.             'paginate_supplies' => $paginateSupplies,
  47.         ]);
  48.     }
  49.     /**
  50.      * @Route("/ui/sidebar/state", name="app_ui_sidebar_state", methods={"POST"})
  51.      */
  52.     public function saveSidebarStatus(Request $requestRequestStack $requestStack): JsonResponse
  53.     {
  54.         $content json_decode($request->getContent(), true);
  55.         $session $requestStack->getSession();
  56.         $session->set('sidebar_state'$content['sidebar_state']);
  57.         return new JsonResponse($session->get('sidebar_state'), Response::HTTP_OK);
  58.     }
  59. }