src/Controller/Admin/AdminHomeController.php line 43

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Repository\ArticleOrderOutOfStockRepository;
  4. use App\Repository\RequestModificationRepository;
  5. use App\Repository\RequestModificationStatusRepository;
  6. use App\Repository\UsersRepository;
  7. use App\Repository\OrdersRepository;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\JsonResponse;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. use DateTime;
  14. /**
  15.  * @Route("/admin")
  16.  */
  17. class AdminHomeController extends AbstractController
  18. {
  19.     private $usersRepository;
  20.     private $requestModificationRepository;
  21.     public function __construct(
  22.         UsersRepository $usersRepository,
  23.         RequestModificationRepository $requestModificationRepository,
  24.         RequestModificationStatusRepository $requestModificationStatusRepository,
  25.         ArticleOrderOutOfStockRepository $articleOrderOutOfStockRepository,
  26.         OrdersRepository $ordersRepository
  27.     ) {
  28.         $this->usersRepository $usersRepository;
  29.         $this->requestModificationRepository $requestModificationRepository;
  30.         $this->requestModificationStatusRepository $requestModificationStatusRepository;
  31.         $this->articleOrderOutOfStockRepository $articleOrderOutOfStockRepository;
  32.         $this->ordersRepository $ordersRepository;
  33.     }
  34.     /**
  35.      * @Route("/", name="admin_index")
  36.      */
  37.     public function index(): Response
  38.     {
  39.         $notPresentUsers $this->usersRepository->findBy(['notPresent' => true'deleted' => false]);
  40.         $unreadTicketsNumbers = [];
  41.         foreach ($notPresentUsers as $user) {
  42.             $unreadTicketsNumbers[$user->getId()] = count($this->requestModificationRepository->findBy([
  43.                 'responsable' => $user,
  44.                 'isRead' => false,
  45.                 'deleted' => false
  46.             ]));
  47.         }
  48.         $requestStatus $this->requestModificationStatusRepository->find(3);
  49.         $articlesOutOfStock $this->articleOrderOutOfStockRepository->findBy(['deleted'=>false]);
  50.         $articleOutOfStock = [];
  51.         foreach ($articlesOutOfStock as $article){
  52.             $orderId $article->getOrder()->getId();
  53.             $filteredArticlesOutOfStock array_filter($articlesOutOfStock, function ($articleOrder) use ($article) {
  54.                 return $articleOrder->getOrder() == $article->getOrder();
  55.             });
  56.             $numberMissing count($filteredArticlesOutOfStock);
  57.             if (!isset($articleOutOfStock[$orderId])) {
  58.                 $newArticleOutOfStock['id'] = $article->getId();
  59.                 $newArticleOutOfStock['user'] = $article->getUser()->getId();
  60.                 $newArticleOutOfStock['order'] = $article->getOrder()->getId();
  61.                 $newArticleOutOfStock['establishmentId'] = $article->getEstablishment()->getId();
  62.                 $newArticleOutOfStock['establishment'] = $article->getEstablishment()->getName();
  63.                 $newArticleOutOfStock['name'] = $article->getArticle()->getName();
  64.                 $newArticleOutOfStock['articleId'] = $article->getArticle()->getId();
  65.                 $newArticleOutOfStock['quantitySent'] = $article->getQuantitySent();
  66.                 $newArticleOutOfStock['quantityOrdered'] = $article->getQuantityOrdered();
  67.                 $newArticleOutOfStock['date'] = $article->getOrder()->getCreatedAt()->format('d-m-Y');
  68.                 $newArticleOutOfStock['numberArticles'] = $numberMissing;
  69.                 $articleOutOfStock[$orderId] = $newArticleOutOfStock;
  70.             }
  71.         }
  72.         return $this->render('admin/base.html.twig', [
  73.             'unreadTickets' => count($this->requestModificationRepository->findBy(['responsable' => $this->getUser(), 'isRead' => false'deleted' => false])),
  74.             'closedTickets' => count($this->requestModificationRepository->findBy(['responsable' => $this->getUser(), 'isRead' => true'deleted' => false])),
  75.             'notPresentUsers' => $notPresentUsers,
  76.             'unreadTicketsNumbers' => $unreadTicketsNumbers,
  77.             'customerUnLinkRequests' => $this->requestModificationRepository->findBy(['deleted'=>false'responsable'=>null'RequestModificationStatus'=>$requestStatus]),
  78.             'articlesOutOfStock' => $articleOutOfStock
  79.         ]);
  80.     }
  81.     /**
  82.      * @Route("/mark-as-missing", name="admin_mark_as_missing", methods={"POST"})
  83.      */
  84.     public function markAsMissing(Request $request): Response
  85.     {
  86.         $user $this->usersRepository->find($request->get('id'));
  87.         $user->setNotPresent(!$user->isNotPresent());
  88.         $em $this->getDoctrine()->getManager();
  89.         $em->persist($user);
  90.         $em->flush();
  91.         return new JsonResponse(['missing' => $user->isNotPresent()], Response::HTTP_OK);
  92.     }
  93.     /**
  94.      * @Route("/get-outofstock-articles", name="admin_get_outofstock_articles", methods={"POST"})
  95.      */
  96.     public function getOutOfStockArticles(Request $request): JsonResponse
  97.     {
  98.         $date = new DateTime($request->get('date'));
  99.         $articleOrders $this->articleOrderOutOfStockRepository->findArticlesOnDate($date);
  100.         if (empty($articleOrders))
  101.             return new JsonResponse(['error' => 'no article found'], Response::HTTP_NOT_FOUND);
  102.         $articlesOutOfStock = array();
  103.         foreach ($articleOrders as $articleOrder)
  104.         {
  105.             $articlesOutOfStock[] = [
  106.                 'id' => $articleOrder->getArticle()->getId(),
  107.                 'punchId' => $articleOrder->getArticle()->getIdPunch(),
  108.                 'name' => $articleOrder->getArticle()->getName(),
  109.                 'quantitySent' => $articleOrder->getQuantitySent(),
  110.                 'quantityOrdered' => $articleOrder->getQuantityOrdered(),
  111.                 'date' => $articleOrder->getOrder()->getCreatedAt()->format('d/m/y'),
  112.                 'customerId'=>$articleOrder->getEstablishment()->getIdPunch(),
  113.                 'customerName'=>$articleOrder->getEstablishment()->getName(),
  114.             ];
  115.         }
  116.         return new JsonResponse(['articles' => $articlesOutOfStock], Response::HTTP_OK);
  117.     }
  118. }