src/Controller/Admin/DashboardController.php line 39

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\Cabecera;
  4. use App\Entity\ClienteBitcubo;
  5. use App\Entity\Configuracion;
  6. use App\Entity\Domicilios;
  7. use App\Entity\EcommerceCabecera;
  8. use App\Entity\Sucursal;
  9. use App\Entity\User;
  10. use App\Repository\CabeceraRepository;
  11. use App\Repository\EcommerceCabeceraRepository;
  12. use EasyCorp\Bundle\EasyAdminBundle\Config\Assets;
  13. use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;
  14. use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
  15. use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;
  16. use EasyCorp\Bundle\EasyAdminBundle\Router\CrudUrlGenerator;
  17. use Symfony\Component\HttpFoundation\Response;
  18. use Symfony\Component\Routing\Annotation\Route;
  19. class DashboardController extends AbstractDashboardController
  20. {
  21.     /**
  22.      * @var CabeceraRepository
  23.      */
  24.     protected CabeceraRepository $cabeceraRepository;
  25.     protected EcommerceCabeceraRepository $ecommerceCabeceraRepository;
  26.     public function __construct(CabeceraRepository $cabeceraRepositoryEcommerceCabeceraRepository $ecommerceCabeceraRepository)
  27.     {
  28.         $this->cabeceraRepository $cabeceraRepository;
  29.         $this->ecommerceCabeceraRepository $ecommerceCabeceraRepository;
  30.     }
  31.     /**
  32.      * @Route("/admin", name="admin")
  33.      */
  34.     public function index(): Response
  35.     {
  36.         $cabs $this->cabeceraRepository->notSend();
  37.         $indicators $this->cabeceraRepository->indicators();
  38.         $ecommerceIndicators $this->ecommerceCabeceraRepository->indicators();
  39.         $resultadosConsolidados $this->consolidarIndicadores($indicators$ecommerceIndicators);
  40.         // dd($resultadosConsolidados);
  41.         return $this->render('bundles/EasyAdminBundle/dashboard.html.twig', [
  42.             'cabs' => $cabs,
  43.             'resultadosConsolidados' => $resultadosConsolidados,
  44.         ]);
  45.         // return parent::index();
  46.         // dd($this->cabeceraRepository->indicators());
  47.         // dd($this->ecommerceCabeceraRepository->indicators());
  48.         // return $this->render('bundles/EasyAdminBundle/dashboard.html.twig', [
  49.         //     'cabs' => $this->cabeceraRepository->notSend(),
  50.         //     'indicators' => $this->cabeceraRepository->indicators(),
  51.         //     'ecommerce_indicators' => $this->ecommerceCabeceraRepository->indicators(),
  52.         // ]);
  53.         // $routeBuilder = $this->get(CrudUrlGenerator::class)->build();
  54.         // $url = $routeBuilder->setController(CabeceraCrudController::class)->generateUrl();
  55.         // return $this->redirect($url);
  56.     }
  57.     public function configureDashboard(): Dashboard
  58.     {
  59.         return Dashboard::new()
  60.             ->setTitle('CallCenter C&W');
  61.     }
  62.     public function configureMenuItems(): iterable
  63.     {
  64.         // yield MenuItem::section('Estadisticas');
  65.         if ($this->isGranted('ROLE_USER')) {
  66.             yield MenuItem::linktoDashboard('Dashboard''fa fa-home');
  67.             yield MenuItem::section('PEDIDOS CALLCENTER');
  68.             yield MenuItem::linkToCrud('Todos''fa fa-tags'Cabecera::class)
  69.                 ->setController(CabeceraCrudController::class);
  70.             yield MenuItem::linkToCrud('Programados''fa fa-clock'Cabecera::class)
  71.                 ->setController(CabeceraProgramadosCrudController::class);
  72.             yield MenuItem::linkToCrud('Link de pagos''fa fa-credit-card'Cabecera::class)
  73.                 ->setController(CabeceraLinkCrudController::class);
  74.             // yield MenuItem::linkToCrud('Programados', 'fa fa-clock', Cabecera::class)
  75.             //     ->setQueryParameter('filters[isFinalizada]', 0);
  76.             yield MenuItem::section('PEDIDOS ECOMMERCE');
  77.             yield MenuItem::linkToCrud('Todos''fa fa-cart-shopping'EcommerceCabecera::class);
  78.             yield MenuItem::section('DOMICILIOS');
  79.             yield MenuItem::linkToCrud('Domicilios''fa fa-motorcycle'Domicilios::class);
  80.         }
  81.         if ($this->isGranted('ROLE_ADMIN')) {
  82.             yield MenuItem::section('Administrar');
  83.             yield MenuItem::linkToCrud('Clientes''fa fa-users'ClienteBitcubo::class);
  84.             yield MenuItem::linkToCrud('Usuarios''fas fa-user-gear'User::class);
  85.             yield MenuItem::linkToCrud('Sucursales''fas fa-map'Sucursal::class);
  86.             yield MenuItem::linkToCrud('Configuración''fas fa-gear'Configuracion::class);
  87.         }
  88.         yield MenuItem::section('Volver');
  89.         yield MenuItem::linktoRoute('Regresar al CallCenter''fas fa-arrow-circle-left''callcenter');
  90.     }
  91.     private function consolidarIndicadores($indicators$ecommerceIndicators): array
  92.     {
  93.         $resultadosConsolidados = [];
  94.         foreach ($indicators as $resultado) {
  95.             $this->agregarDatos($resultadosConsolidados'callcenter'$resultado);
  96.         }
  97.         foreach ($ecommerceIndicators as $resultado) {
  98.             $this->agregarDatos($resultadosConsolidados'ecommerce'$resultado);
  99.         }
  100.         return $resultadosConsolidados;
  101.     }
  102.     private function agregarDatos(&$arrayConsolidado$fuente$resultado)
  103.     {
  104.         $sucursal $resultado['nombre'];
  105.         $preparacion $resultado['preparacion'];
  106.         $reparto $resultado['reparto'];
  107.         $objSucursal $resultado['sucursal'];
  108.         if (!isset($arrayConsolidado[$sucursal])) {
  109.             $arrayConsolidado[$sucursal] = [
  110.                 'detalles' => [],
  111.                 'sucursal' => $objSucursal,
  112.                 'total' => ['preparacion' => 0'reparto' => 0]
  113.             ];
  114.         }
  115.         $arrayConsolidado[$sucursal]['detalles'][$fuente][] = [
  116.             'preparacion' => $preparacion,
  117.             'reparto' => $reparto
  118.         ];
  119.         $arrayConsolidado[$sucursal]['total']['preparacion'] += $preparacion;
  120.         $arrayConsolidado[$sucursal]['total']['reparto'] += $reparto;
  121.     }
  122. }