<?php
namespace App\Controller;
use App\Form\AppSupplyCriteriaType;
use App\Repository\SupplyRepository;
use App\Repository\CustomerRepository;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Repository\SupplyActionHistoryRepository;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class AppController extends AbstractController
{
/**
* @Security("is_granted('ROLE_ADMIN') or is_granted('ROLE_ISPROD')")
* @Route("/", name="app", methods={"POST", "GET"})
*/
public function index(
SupplyActionHistoryRepository $supplyActionHistoryRepository,
CustomerRepository $customerRepository,
SupplyRepository $supplyRepository,
PaginatorInterface $paginator,
Request $request
): Response {
$lastSuppliesAction = $supplyActionHistoryRepository->findBy([], ['id' => 'DESC'], 5);
$limit = 15;
$page = $request->query->getInt('page', 1);
/** @var array $supplyCriteria */
$supplyCriteria = $request->query->get('app_supply_criteria');
$customer = $supplyCriteria['customer'] ?? null;
$criteria = [];
$form = $this->createForm(AppSupplyCriteriaType::class, $customerRepository->getCustomersNames());
$form->handleRequest($request);
// AppSupplyCriteriaType contains only customer field
if (!is_null($customer) && $customer !== '0') {
$criteria['customer'] = $customer;
}
$supplies = $supplyRepository->getSuppliesWhereCustomerAndSupplyActive($criteria);
$paginateSupplies = $paginator->paginate($supplies, $page, $limit);
return $this->render('app/index.html.twig', [
'last_supplies_action_history' => $lastSuppliesAction,
'form' => $form->createView(),
'paginate_supplies' => $paginateSupplies,
]);
}
/**
* @Route("/ui/sidebar/state", name="app_ui_sidebar_state", methods={"POST"})
*/
public function saveSidebarStatus(Request $request, RequestStack $requestStack): JsonResponse
{
$content = json_decode($request->getContent(), true);
$session = $requestStack->getSession();
$session->set('sidebar_state', $content['sidebar_state']);
return new JsonResponse($session->get('sidebar_state'), Response::HTTP_OK);
}
}