src/Controller/Admin/CabeceraLinkCrudController.php line 54

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Entity\Cabecera;
  4. use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
  5. use Doctrine\ORM\QueryBuilder;
  6. use EasyCorp\Bundle\EasyAdminBundle\Collection\FieldCollection;
  7. use EasyCorp\Bundle\EasyAdminBundle\Collection\FilterCollection;
  8. use EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto;
  9. use EasyCorp\Bundle\EasyAdminBundle\Dto\SearchDto;
  10. use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
  11. use EasyCorp\Bundle\EasyAdminBundle\Field\CollectionField;
  12. use EasyCorp\Bundle\EasyAdminBundle\Field\DateTimeField;
  13. use EasyCorp\Bundle\EasyAdminBundle\Field\FormField;
  14. use EasyCorp\Bundle\EasyAdminBundle\Field\BooleanField;
  15. use EasyCorp\Bundle\EasyAdminBundle\Field\IntegerField;
  16. use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField;
  17. use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
  18. use App\Controller\Admin\StatusTrait;
  19. class CabeceraLinkCrudController extends CabeceraCrudController
  20. {
  21.     use StatusTrait;
  22.     public function configureCrud(Crud $crud): Crud
  23.     {
  24.         return parent::configureCrud($crud)
  25.             ->setPageTitle(Crud::PAGE_INDEX'Pedidos (Forma de pago: Link de pagos)')
  26.             ->setHelp(Crud::PAGE_INDEX'Estado de los pedidos con link de pagos');
  27.     }
  28.     public function configureFields(string $pageName): iterable
  29.     {
  30.         return [
  31.             FormField::addPanel('Datos De Facturación')->setIcon('fa fa-address-card'),
  32.             TextField::new('nombrecliente''Nombre'),
  33.             TextField::new('telefonocliente''Telefono'),
  34.             TextField::new('direccioncliente''Dirección'),
  35.             TextField::new('emailcliente''Email')->onlyOnDetail(),
  36.             FormField::addPanel('Datos De Envío')->setIcon('fa fa-truck '),
  37.             TextField::new('nombre_receptor''Nombre')->onlyOnDetail(),
  38.             TextField::new('telefono_receptor''Teléfono')->onlyOnDetail(),
  39.             TextField::new('observaciones_receptor''Observaciones')->onlyOnDetail(),
  40.             FormField::addPanel('Datos Del Pedido')->setIcon('fa fa-bars'),
  41.             TextField::new('sucursal''Sucursal'),
  42.             DateTimeField::new('fechareserva''Programado')->onlyOnDetail(),
  43.             TextField::new('metododepago''Metodo De Pago')->onlyOnDetail(),
  44.             TextField::new('email_linkdepago''Email Link')->onlyOnDetail(),
  45.             TextField::new('linkdepago''Link de pago')->onlyOnDetail(),
  46.             TextField::new('ultimolinkdepago''Estado de la transacción')
  47.                 ->formatValue(function ($value$entity) {
  48.                     $ultimoLinkdepago $value;
  49.                     if ($ultimoLinkdepago === null) {
  50.                         return sprintf('<span class="badge badge-%s">%s</span>''neutro'htmlspecialchars('N/A'ENT_QUOTES'UTF-8'));
  51.                     }
  52.                     $statusName $this->mapStatusNumberToName($ultimoLinkdepago); // Esta función convierte el número en un nombre de estado.
  53.                     $badgeColor $this->getBadgeColorForStatus($ultimoLinkdepago);
  54.                     return sprintf('<span class="badge badge-%s">%s</span>'$badgeColorhtmlspecialchars($statusNameENT_QUOTES'UTF-8'));
  55.                 }),
  56.             TextField::new('filename''Cod Unico')->onlyOnDetail(),
  57.             BooleanField::new('isEnviado''XML recibido')->renderAsSwitch(false)->hideOnForm()->onlyOnDetail(),
  58.             ChoiceField::new('Tipodeservicio''Tipo')
  59.                 ->setChoices([
  60.                     'DOMICILIO' => 4,
  61.                     'RECOGER' => 16,
  62.                     'PROGRAMADO' => 100,
  63.                 ])
  64.                 ->hideOnDetail(),
  65.             IntegerField::new('user''Vendedor'),
  66.             TextField::new('estado''Estado')->hideOnForm(),
  67.             DateTImeField::new('createdAt''Creado'),
  68.             FormField::addPanel('Log Link de pago')->setIcon('fa fa-list'),
  69.             CollectionField::new('CabeceraLinkdepago''Link de pago')->setTemplatePath('admin/field/linkdepago.html.twig')->onlyOnDetail(),
  70.             FormField::addPanel('Pedido')->setIcon('fa fa-tag'),
  71.             CollectionField::new('lineas''Productos')->setTemplatePath('admin/field/lineas.html.twig')->onlyOnDetail(),
  72.             NumberField::new('propinatotal''Propina')->onlyOnDetail(),
  73.             NumberField::new('Total''Total')->onlyOnDetail(),
  74.             FormField::addPanel('Log')->setIcon('fa fa-list'),
  75.             CollectionField::new('cabecera_status''Estado')->setTemplatePath('admin/field/status.html.twig')->onlyOnDetail(),
  76.             // FormField::addPanel('Datos Del Usuario')->setIcon('fa fa-user'),
  77.             // TextField::new('nombrecliente', 'Nombre Del Cliente'),
  78.             // TextField::new('telefonocliente', 'Telefono'),
  79.             // TextField::new('direccioncliente', 'Dirección'),
  80.             // IntegerField::new('user', 'Vendedor'),
  81.             // TextField::new('sucursal', 'Sucursal'),
  82.             // DateTImeField::new('createdAt', 'Creado'),
  83.             // TextField::new('metododepago', 'Metodo De Pago')->onlyOnDetail(),
  84.             // TextField::new('filename', 'Cod Unico')->onlyOnDetail(),
  85.             // BooleanField::new('isEnviado', 'XML recibido')->renderAsSwitch(false)->hideOnForm(),
  86.             // TextField::new('estado', 'Estado')->hideOnForm(),
  87.             // ChoiceField::new('Tipodeservicio', 'Tipo')
  88.             //     ->setChoices([
  89.             //         'DOMICILIO' => 4,
  90.             //         'RECOGER' => 16,
  91.             //         'PROGRAMADO' => 100,
  92.             //     ])
  93.             //     ->hideOnDetail(),
  94.             // TextField::new('ultimolinkdepago', 'Estado de la transacción')
  95.             //     ->formatValue(function ($value, $entity) {
  96.             //         $ultimoLinkdepago = $value;
  97.             //         if ($ultimoLinkdepago === null) {
  98.             //             return sprintf('<span class="badge badge-%s">%s</span>', 'neutro', htmlspecialchars('N/A', ENT_QUOTES, 'UTF-8'));
  99.             //         }
  100.             //         $statusName = $this->mapStatusNumberToName($ultimoLinkdepago); // Esta función convierte el número en un nombre de estado.
  101.             //         $badgeColor = $this->getBadgeColorForStatus($ultimoLinkdepago);
  102.             //         return sprintf('<span class="badge badge-%s">%s</span>', $badgeColor, htmlspecialchars($statusName, ENT_QUOTES, 'UTF-8'));
  103.             //     }),
  104.             // FormField::addPanel('Pedido')->setIcon('fa fa-tag'),
  105.             // CollectionField::new('lineas', 'Productos')->setTemplatePath('admin/field/lineas.html.twig')->onlyOnDetail(),
  106.             // NumberField::new('propinatotal', 'Propina')->onlyOnDetail(),
  107.             // NumberField::new('Total', 'Total')->onlyOnDetail(),
  108.             // FormField::addPanel('Log')->setIcon('fa fa-list'),
  109.             // CollectionField::new('cabecera_status', 'Estado')->setTemplatePath('admin/field/status.html.twig')->onlyOnDetail(),
  110.         ];
  111.     }
  112.     public function createIndexQueryBuilder(SearchDto $searchDtoEntityDto $entityDtoFieldCollection $fieldsFilterCollection $filters): QueryBuilder
  113.     {
  114.         return parent::createIndexQueryBuilder($searchDto$entityDto$fields$filters)
  115.             ->andWhere('entity.linkdepago IS NOT NULL')
  116.             ->andWhere('entity.metododepago = :metododepago')
  117.             ->setParameter('metododepago'30);
  118.     }
  119. }