Deprecated: Constant E_STRICT is deprecated in /home/pastorz/old-espace-client/vendor/symfony/error-handler/ErrorHandler.php on line 58

Deprecated: Constant E_STRICT is deprecated in /home/pastorz/old-espace-client/vendor/symfony/error-handler/ErrorHandler.php on line 76
Symfony Profiler

src/Controller/Admin/DashboardController.php line 54

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\Address;
  4. use App\Entity\Batch;
  5. use App\Entity\Booking;
  6. use App\Entity\BookingConfig;
  7. use App\Entity\Carrier;
  8. use App\Entity\DeliveryNote;
  9. use App\Entity\DiscountBanner;
  10. use App\Entity\EstimationRequest;
  11. use App\Entity\GuardChargeConfig;
  12. use App\Entity\Invoice;
  13. use App\Entity\InvoiceDraft;
  14. use App\Entity\InvoiceRowType;
  15. use App\Entity\Label;
  16. use App\Entity\MySendingBoxLetter;
  17. use App\Entity\Shipment;
  18. use App\Entity\SupportRequest;
  19. use App\Entity\SupportRequestCauseSAV;
  20. use App\Entity\User;
  21. use App\Entity\ZonePrice;
  22. use App\Service\BrandService;
  23. use App\Service\ConstantsService;
  24. use Doctrine\ORM\EntityManagerInterface;
  25. use EasyCorp\Bundle\EasyAdminBundle\Config\Assets;
  26. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  27. use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
  28. use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
  29. use EasyCorp\Bundle\EasyAdminBundle\Config\UserMenu;
  30. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
  31. use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
  32. use Symfony\Component\HttpFoundation\Response;
  33. use Symfony\Component\Routing\Annotation\Route;
  34. use Symfony\Component\Security\Core\User\UserInterface;
  35. class DashboardController extends AbstractDashboardController
  36. {
  37.     private EntityManagerInterface $em;
  38.     private BrandService $brandService;
  39.     /**
  40.      * @param EntityManagerInterface $em
  41.      * @param BrandService $brandService
  42.      */
  43.     public function __construct(EntityManagerInterface $emBrandService $brandService)
  44.     {
  45.         $this->em $em;
  46.         $this->brandService $brandService;
  47.     }
  48.     #[Route('/admin'name'admin_dashboard')]
  49.     public function index(): Response
  50.     {
  51.         $adminUrlGenerator $this->container->get(AdminUrlGenerator::class);
  52.         if ($this->isGranted('ROLE_WAREHOUSE_HAND_DELIVERY') && !$this->isGranted('ROLE_SUPER_ADMIN')) {
  53.             return $this->redirectToRoute('admin_dashboard', array('routeName' => 'admin_export_order_vouchers_hand_delivery'));
  54.         }
  55.         if ($this->isGranted('ROLE_WAREHOUSE_EMPLOYEE') && !$this->isGranted('ROLE_SUPER_ADMIN')) {
  56.             return $this->redirectToRoute('admin_dashboard', array('routeName' => 'admin_export_order_vouchers'));
  57.         }
  58.         if ($this->isGranted('ROLE_ACCOUNTING') && !$this->isGranted('ROLE_SUPER_ADMIN')) {
  59.             return $this->redirect($adminUrlGenerator->setController(InvoiceCrudController::class)->set('entityFqcn''App\Entity\Invoice')->generateUrl());
  60.         }
  61.         return $this->redirect($adminUrlGenerator->setController(UserCrudController::class)->set('entityFqcn''App\Entity\User')->generateUrl());
  62.     }
  63.     public function configureDashboard(): Dashboard
  64.     {
  65.         return Dashboard::new()->setTitle($this->brandService->getBrand()->getName())->disableDarkMode();
  66.     }
  67.     public function configureAssets(): Assets
  68.     {
  69.         return parent::configureAssets()->addWebpackEncoreEntry('admin_' $this->brandService->getBrand()->getStylesheet())
  70.             ->addWebpackEncoreEntry('admin');
  71.     }
  72.     public function configureMenuItems(): iterable
  73.     {
  74.         if ($this->isGranted('ROLE_SECRETARY_MANAGER')) {
  75.             yield MenuItem::section('Données des ventes');
  76.             yield MenuItem::linkToRoute('Import des ventes''fas fa-cloud-arrow-up''admin_import');
  77.             yield MenuItem::linkToRoute('Résumés des ventes''fas fa-cloud-arrow-up''admin_sales_summary');
  78.         }
  79.         if ($this->isGranted('ROLE_EMPLOYEE')) {
  80.             yield MenuItem::section('Tableaux');
  81.             yield MenuItem::linkToCrud('Clients''fas fa-users'User::class)
  82.                 ->setController(UserCrudController::class);
  83.             yield MenuItem::linkToCrud('Adresses''fas fa-map-location-dot'Address::class)
  84.                 ->setController(AddressCrudController::class);
  85.             yield MenuItem::linkToCrud('Bordereaux''fas fa-file-invoice'DeliveryNote::class)
  86.                 ->setController(DeliveryNoteCrudController::class);
  87.             yield MenuItem::linkToCrud('Lots''fas fa-box'Batch::class)
  88.                 ->setController(BatchCrudController::class);
  89.             yield MenuItem::linkToCrud('Rendez-vous''fas fa-calendar-check'Booking::class)
  90.                 ->setController(BookingCrudController::class);
  91.         }
  92.         if ($this->isGranted('ROLE_SUPPORT')) {
  93.             yield MenuItem::section('SAV');
  94.             yield MenuItem::linkToCrud('Demandes de support''fas fa-handshake-angle'SupportRequest::class)
  95.                 ->setController(SupportRequestCrudController::class)
  96.                 ->setQueryParameter('closed'false);
  97.             yield MenuItem::linkToCrud('Demandes clôturées''fas fa-handshake-simple-slash'SupportRequest::class)
  98.                 ->setController(SupportRequestCrudController::class)
  99.                 ->setQueryParameter('closed'true);
  100.             yield MenuItem::linkToCrud('Causes SAV''fas fa-triangle-exclamation'SupportRequestCauseSAV::class)
  101.                 ->setController(SupportRequestCauseSAVCrudController::class);
  102.             if ($this->isGranted('ROLE_SUPER_ADMIN')) {
  103.                 yield MenuItem::linkToRoute('Export SEPA''fas fa-building-columns''admin_export_sepa');
  104.             }
  105.             yield MenuItem::section('Estimations');
  106.             yield MenuItem::linkToCrud('Demandes d\'estimation''fas fa-scale-unbalanced'EstimationRequest::class)
  107.                 ->setController(EstimationRequestCrudController::class);
  108.         }
  109.         if ($this->isGranted('ROLE_SUPER_ADMIN')) {
  110.             yield MenuItem::section('Configuration');
  111.             yield MenuItem::linkToCrud('Agenda''fas fa-calendar-days'BookingConfig::class)
  112.                 ->setController(BookingConfigCrudController::class);
  113.             yield MenuItem::linkToCrud('Transporteurs''fas fa-truck-fast'Carrier::class)
  114.                 ->setController(CarrierCrudController::class);
  115.             yield MenuItem::linkToCrud('Zones tarifaires''fas fa-earth-americas'ZonePrice::class)
  116.                 ->setController(ZonePriceCrudController::class);
  117.             yield MenuItem::linkToCrud('Gardiennage''fas fa-warehouse'GuardChargeConfig::class)
  118.                 ->setController(GuardChargeConfigCrudController::class)->setAction(Crud::PAGE_EDIT)->setEntityId($this->em->getRepository(GuardChargeConfig::class)->findConfig()?->getId());
  119.         }
  120.         if ($this->isGranted('ROLE_SECRETARY')) {
  121.             yield MenuItem::section('Export');
  122.             yield MenuItem::linkToRoute('Export des paiements''fas fa-cloud-arrow-down''admin_export_payment');
  123.             yield MenuItem::linkToRoute('Export des expéditions''fas fa-cloud-arrow-down''admin_export_shipment');
  124.             yield MenuItem::linkToRoute('Export des rendez-vous''fas fa-cloud-arrow-down''admin_export_booking');
  125.             yield MenuItem::linkToRoute('Export des frais de gardiennage''fas fa-cloud-arrow-down''admin_export_guard_charge');
  126.             if ($this->brandService->getBrand()->isEnableTierCharge()) {
  127.                 yield MenuItem::linkToRoute('Export des frais de Interencheres''fas fa-cloud-arrow-down''admin_export_tier_charge');
  128.             }
  129.             if ($this->isGranted('ROLE_SUPER_ADMIN')) {
  130.                 yield MenuItem::linkToRoute('Export des demandes de support''fas fa-cloud-arrow-down''admin_export_causeSAV');
  131.             }
  132.         }
  133.         if ($this->isGranted('ROLE_ACCOUNTING')) {
  134.             yield MenuItem::section('Facturation');
  135.             yield MenuItem::linkToCrud('Factures''fas fa-file-invoice'Invoice::class)->setController(InvoiceCrudController::class);
  136.             yield MenuItem::linkToCrud('Factures soldées''fas fa-file-invoice-dollar'Invoice::class)->setController(InvoiceCrudController::class)->setQueryParameter('paid_invoice'true);
  137.             yield MenuItem::linkToCrud('Factures non soldées''fas fa-file-invoice-dollar'Invoice::class)->setController(InvoiceCrudController::class)->setQueryParameter('paid_invoice'false);
  138.             yield MenuItem::linkToCrud('Avoirs''fas fa-file-lines'InvoiceCreditCrudController::class)->setController(InvoiceCreditCrudController::class);
  139.             if ($this->isGranted('ROLE_SECRETARY')) {
  140.                 yield MenuItem::linkToCrud('Brouillons''fas fa-file-invoice'InvoiceDraft::class)->setController(InvoiceDraftCrudController::class);
  141.             }
  142.             yield MenuItem::linkToRoute('Export des factures''fas fa-cloud-arrow-down''admin_export_invoices');
  143.             yield MenuItem::linkToRoute('Export des avoirs''fas fa-cloud-arrow-down''admin_export_credits');
  144.             yield MenuItem::linkToRoute('Export MyUnisoft''fas fa-cloud-arrow-down''admin_export_accounting');
  145.             yield MenuItem::linkToRoute('Export OD''fas fa-cloud-arrow-down''admin_export_accounting_reclassification');
  146.             if ($this->isGranted('ROLE_SUPER_ADMIN')) {
  147.                 yield MenuItem::linkToCrud('Types de frais''fas fa-bookmark'InvoiceRowType::class)->setController(InvoiceRowTypeCrudController::class);
  148.             }
  149.         }
  150.         if ($this->isGranted('ROLE_SECRETARY')) {
  151.             yield MenuItem::section('Expéditions');
  152.             yield MenuItem::linkToCrud('Expéditions''fas fa-truck-fast'Shipment::class)
  153.                 ->setController(ShipmentCrudController::class);
  154.             yield MenuItem::linkToCrud('Expéditions NPAI''fas fa-truck-arrow-right'Shipment::class)
  155.                 ->setController(ShipmentCrudController::class)->setQueryParameter('npai'true)->setCssClass('reverse-dashboard-icon');
  156.         }
  157.         if ($this->isGranted('ROLE_LOGISTICIAN')) {
  158.             yield MenuItem::section('Gardiennage');
  159.             yield MenuItem::linkToCrud('Envoyer LRAR''fas fa-envelope-open-text'DeliveryNote::class)
  160.                 ->setController(GuardController::class);
  161.             yield MenuItem::linkToCrud('Gérer LRAR''fas fa-envelope-circle-check'MySendingBoxLetter::class)
  162.                 ->setController(MySendingBoxLetterCrudController::class);
  163.             yield MenuItem::linkToCrud('À remettre en vente''fas fa-envelope-open'MySendingBoxLetter::class)
  164.                 ->setController(MySendingBoxLetterCrudController::class)->setQueryParameter('re_sale'true);
  165.             yield MenuItem::linkToCrud('Bordereaux ignorés''fa-regular fa-envelope'DeliveryNote::class)
  166.                 ->setController(GuardIgnoredController::class);
  167.         }
  168.         if ($this->isGranted('ROLE_SUPER_ADMIN')) {
  169.             yield MenuItem::section('Utilisateurs');
  170.             yield MenuItem::linkToCrud('Utilisateurs''fas fa-users'User::class)
  171.                 ->setController(AdminCrudController::class);
  172.         }
  173.         if ($this->isGranted('ROLE_SALE_ADMINISTRATOR') && $this->brandService->isADN()) {
  174.             yield MenuItem::section('Mandats de vente');
  175.             yield MenuItem::linkToRoute('Mandats''fas fa-folder-open''admin_sale_request');
  176.             yield MenuItem::linkToRoute('Exporter les lots non signés''fas fa-cloud-arrow-down''admin_export_unsigned_batches');
  177.             if ($this->isGranted('ROLE_SUPER_ADMIN')) {
  178.                 yield MenuItem::linkToRoute('Importer les ventes''fas fa-cloud-arrow-up''admin_import_sales');
  179.                 yield MenuItem::linkToRoute('Importer les vendeurs''fas fa-cloud-arrow-up''admin_import_sellers');
  180.                 yield MenuItem::linkToRoute('Importer les lots''fas fa-cloud-arrow-up''admin_import_batches');
  181.             }
  182.         }
  183.         if ($this->isGranted('ROLE_WAREHOUSE_EMPLOYEE')) {
  184.             yield MenuItem::section('Service expédition');
  185.             if ($this->isGranted('ROLE_SUPER_ADMIN') || $this->isGranted('ROLE_LOGISTICIAN')) {
  186.                 yield MenuItem::linkToCrud('Bons en attente''fas fa-pause'DeliveryNote::class)->setController(PreparationVoucherCrudController::class)->setQueryParameter('status'null);
  187.             }
  188.             yield MenuItem::linkToRoute('Créer des bons''fas fa-add''admin_export_order_vouchers');
  189.             yield MenuItem::linkToCrud('Bons en cours''fas fa-spinner'DeliveryNote::class)->setController(PreparationVoucherCrudController::class)->setQueryParameter('status'ConstantsService::WAREHOUSE_STATUS_STARTED);
  190.             yield MenuItem::linkToCrud('Bons terminés''fas fa-check'DeliveryNote::class)->setController(PreparationVoucherCrudController::class)->setQueryParameter('status'ConstantsService::WAREHOUSE_STATUS_FINISHED);
  191.             yield MenuItem::linkToRoute('Validation/Export des données''fas fa-cloud-arrow-down''admin_postage_export');
  192.         }
  193.         if (!$this->brandService->isNPCJ()) {
  194.             if ($this->isGranted('ROLE_RECEPTION')) {
  195.                 yield MenuItem::section('Service réception');
  196.                 yield MenuItem::linkToCrud('Étiquettes de transport''fas fa-tag'Label::class)->setController(LabelCrudController::class);
  197.                 yield MenuItem::linkToRoute('Réception colis/palettes''fas fa-box''admin_label_reception');
  198.             }
  199.         }
  200.         if ($this->isGranted('ROLE_WAREHOUSE_HAND_DELIVERY')) {
  201.             yield MenuItem::section('Service remise MP');
  202.             yield MenuItem::linkToRoute('Créer des bons''fas fa-add''admin_export_order_vouchers_hand_delivery');
  203.             yield MenuItem::linkToCrud('Bons en cours''fas fa-spinner'DeliveryNote::class)->setController(PreparationVoucherHandDeliveryCrudController::class)->setQueryParameter('status'ConstantsService::WAREHOUSE_STATUS_STARTED);
  204.             yield MenuItem::linkToCrud('Bons en attente remise MP''fas fa-hand'DeliveryNote::class)->setController(PreparationVoucherHandDeliveryCrudController::class)->setQueryParameter('status'ConstantsService::WAREHOUSE_STATUS_HAND_DELIVERY);
  205.             yield MenuItem::linkToCrud('Bons terminés''fas fa-check'DeliveryNote::class)->setController(PreparationVoucherHandDeliveryCrudController::class)->setQueryParameter('status'ConstantsService::WAREHOUSE_STATUS_FINISHED);
  206.         }
  207.         if ($this->isGranted('ROLE_DISCOUNT_MANAGER')) {
  208.             yield MenuItem::section('Offre promotionnelle ');
  209.             yield MenuItem::linkToCrud('Configuration''fas fa-gear'DiscountBanner::class)
  210.                 ->setController(DiscountBannerCrudController::class)->setAction(Crud::PAGE_EDIT)->setEntityId(DiscountBanner::ID);
  211.             yield MenuItem::linkToCrud('Codes Promo''fas fa-percent'Booking::class)
  212.                 ->setController(DiscountCodeCrudController::class);
  213.         }
  214.     }
  215.     public function configureUserMenu(UserInterface $user): UserMenu
  216.     {
  217.         // Usually it's better to call the parent method because that gives you a
  218.         // user menu with some menu items already created ("sign out", "exit impersonation", etc.)
  219.         // if you prefer to create the user menu from scratch, use: return UserMenu::new()->...
  220.         return parent::configureUserMenu($user)
  221.             ->setName($user->getFullname())
  222.             ->displayUserAvatar(false)
  223.             //->addMenuItems([
  224.             //    MenuItem::linkToRoute('My Profile', 'fa fa-id-card', '...', ['...' => '...']),
  225.             //    MenuItem::linkToRoute('Settings', 'fa fa-user-cog', '...', ['...' => '...'])
  226.             //])
  227.             ;
  228.     }
  229. }