src/Controller/Admin/DashboardController.php line 53

  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\User;
  4. use App\Repository\CommandeRepository;
  5. use App\Repository\FilieresRepository;
  6. use App\Repository\UserRepository;
  7. use App\Repository\LignecommandeRepository;
  8. use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
  9. use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
  10. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
  11. use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Component\Security\Core\Security;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\HttpFoundation\RequestStack;
  17. use Doctrine\ORM\EntityManagerInterface;
  18. use Symfony\Component\Console\Helper\ProgressBar;
  19. use Symfony\Component\Console\Output\StreamOutput;
  20. class DashboardController extends AbstractDashboardController
  21. {
  22.     private $security;
  23.     private $filieresRepository;
  24.     private $ligneCommandeRepository;
  25.     private $commandeRepository;
  26.     private $userRepository;
  27.     private $requestStack;
  28.     public function __construct(
  29.         Security $security
  30.         FilieresRepository $filieresRepository
  31.         LignecommandeRepository $ligneCommandeRepository
  32.         CommandeRepository $commandeRepository
  33.         UserRepository $userRepository,
  34.         RequestStack $requestStack
  35.         )
  36.     {
  37.         $this->security $security;
  38.         $this->filieresRepository $filieresRepository;
  39.         $this->ligneCommandeRepository $ligneCommandeRepository;
  40.         $this->commandeRepository $commandeRepository;
  41.         $this->userRepository $userRepository;
  42.         $this->requestStack $requestStack;
  43.     }
  44.     #[Route('/'name'home')]
  45.     #[Route('/admin'name'admin')]
  46.     #[Route('/adresses'name'adresses')]
  47.     public function index(): Response
  48.     {
  49.         $adminUrlGenerator $this->container->get(AdminUrlGenerator::class);
  50.         $url $adminUrlGenerator->setRoute('adresses', [])->generateUrl();
  51.         return $this->redirect($url);
  52.         //return parent::index();
  53.         // Option 1. You can make your dashboard redirect to some common page of your backend
  54.         //
  55.         // $adminUrlGenerator = $this->container->get(AdminUrlGenerator::class);
  56.         // return $this->redirect($adminUrlGenerator->setController(OneOfYourCrudController::class)->generateUrl());
  57.         // Option 2. You can make your dashboard redirect to different pages depending on the user
  58.         //
  59.         // if ('jane' === $this->getUser()->getUsername()) {
  60.         //     return $this->redirect('...');
  61.         // }
  62.         // Option 3. You can render some custom template to display a proper dashboard with widgets, etc.
  63.         // (tip: it's easier if your template extends from @EasyAdmin/page/content.html.twig)
  64.         //
  65.         //return $this->render('pages/default/dashboard.html.twig');
  66.         //return $this->redirectToRoute('adresses');
  67.         
  68.         //return $this->render('pages/default/autres_adresses.html.twig');
  69.         
  70.         //return parent::index();
  71.     }
  72.     public function goListeAdresses(FilieresRepository $filieresUserRepository $userRequest $request): Response
  73.     {
  74.         $login $request->getSession()->get(Security::LAST_USERNAME);
  75.         $listeAdresses $filieres->getListeAdresses($login);
  76.         $adresseSTA $filieres->getAdresseParType($login,'STA');
  77.         $aInfosClient $user->getInfosUtilisateurParCodeClient($login,false);
  78.         return $this->render('pages/default/autres_adresses.html.twig', [
  79.             '$aInfosClient' => $aInfosClient,
  80.             'listeAdresses' => $listeAdresses,
  81.             'adresseSTA' => $adresseSTA
  82.         ]);
  83.     }
  84.     public function configureDashboard(): Dashboard
  85.     {
  86.         return Dashboard::new()
  87.             ->setTitle('Commande MGS')
  88.             ->disableDarkMode()
  89.             ->setFaviconPath('');
  90.     }
  91.     public function configureMenuItems(): iterable
  92.     {
  93.         $adminUrlGenerator $this->container->get(AdminUrlGenerator::class);
  94.         $routeName $_GET["routeName"];
  95.         
  96.         $session $this->requestStack->getSession();
  97.         //dd($session->get('code_client_connecte'));
  98.         // on récupère les infos de la filière
  99.         $oFilieres $this->filieresRepository->findOneBy([
  100.             'commande_par' => $session->get('code_regroupement'),
  101.             'compte_client_livre' => $session->get('compte_client_choisi'),
  102.         ]);
  103.         //dd($oFilieres);
  104.         $oUser $this->userRepository->findOneBy([
  105.             'code_client' => $session->get('code_client_connecte'),
  106.         ]);
  107.         //dd($oUser);
  108.         
  109.         // on compte le nombre de commandes dans le panier
  110.         $aLigneCommande $this->ligneCommandeRepository->getLigneCommandeEnCoursDerniereCommande($oFilieres);
  111.         // Liste des adresses de filieres pour afficher ou nom le menu "Autres adresses"
  112.         //$aListeAdressesFilieres = $this->filieresRepository->getListeAdresses($oFilieres->getCompteClientLivre(),false,true);
  113.         
  114.         // on recherche si pour ce client, on a une commande à valider
  115.         /*$oFilieresCommandeAttente = $this->filieresRepository->findBy([
  116.             'compte_client_livre' => $session->get('code_client_connecte'),
  117.         ]);*/
  118.         $oCommandeAttente $this->commandeRepository->getCommandesByFiliere($session->get('compte_client_choisi'), "V""");
  119.         /*if(isset($oFilieresCommandeAttente))
  120.         {
  121.             $iCountCommandeEnAttente = 0;
  122.             foreach($oFilieresCommandeAttente as $filiere)
  123.             {
  124.                 $iCountCommandeEnAttente += $this->commandeRepository->count([
  125.                     'valide' => 'V',
  126.                     'filiere' => $filiere->getId()
  127.                 ]);
  128.             }
  129.         }
  130.         else
  131.         {
  132.             $iCountCommandeEnAttente = 0;
  133.         }*/
  134.         //if(count($aListeAdressesFilieres) > 1)
  135.         if($oUser->getCommande() == "C")
  136.         {
  137.             yield MenuItem::linkToUrl('Autres adresses''fa fa-address-book'$adminUrlGenerator->setRoute('adresses', [])->generateUrl());
  138.         }
  139.         if($routeName != "adresses" && $session->get('compte_client_choisi') !== null)
  140.         {
  141.             yield MenuItem::linkToUrl('Vos tarifs''fa fa-euro-sign'$adminUrlGenerator->setRoute('tarifs', [])->generateUrl());
  142.         }
  143.         if($routeName != "adresses" && $session->get('compte_client_choisi') !== null)
  144.         {
  145.             //yield MenuItem::linkToUrl('Panier ('.count($aLigneCommande).')', 'fa fa-cart-shopping', $adminUrlGenerator->setRoute('panier', [])->generateUrl());
  146.             yield MenuItem::linkToUrl('Panier''fa fa-cart-shopping'$adminUrlGenerator->setRoute('panier', [])->generateUrl());
  147.         }
  148.         // s'il y a au moins une commande à valider alors on affiche dans le menu "Commande en attente"
  149.         if($routeName != "adresses" && count($oCommandeAttente) > 0)
  150.         {
  151.             yield MenuItem::linkToUrl('Commande en attente ('.count($oCommandeAttente).')''fa fa-hourglass-half'$adminUrlGenerator->setRoute('commandeenattente', [])->generateUrl());
  152.         }
  153.         if($routeName != "adresses" && $session->get('compte_client_choisi') !== null)
  154.         {
  155.             yield MenuItem::linkToUrl('Suivi de commande''fa fa-truck'$adminUrlGenerator->setRoute('suiviCommande', [])->generateUrl());
  156.         }
  157.         yield MenuItem::linkToUrl('Statistiques''fa fa-area-chart'$adminUrlGenerator->setRoute('statistiques', [])->generateUrl());
  158.     }
  159. }