<?php
namespace App\Controller\Admin;
use App\Entity\Cabecera;
use EasyCorp\Bundle\EasyAdminBundle\Config\Crud;
use Doctrine\ORM\QueryBuilder;
use EasyCorp\Bundle\EasyAdminBundle\Collection\FieldCollection;
use EasyCorp\Bundle\EasyAdminBundle\Collection\FilterCollection;
use EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto;
use EasyCorp\Bundle\EasyAdminBundle\Dto\SearchDto;
use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
use EasyCorp\Bundle\EasyAdminBundle\Field\CollectionField;
use EasyCorp\Bundle\EasyAdminBundle\Field\DateTimeField;
use EasyCorp\Bundle\EasyAdminBundle\Field\FormField;
use EasyCorp\Bundle\EasyAdminBundle\Field\BooleanField;
use EasyCorp\Bundle\EasyAdminBundle\Field\IntegerField;
use EasyCorp\Bundle\EasyAdminBundle\Field\NumberField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use App\Controller\Admin\StatusTrait;
class CabeceraLinkCrudController extends CabeceraCrudController
{
use StatusTrait;
public function configureCrud(Crud $crud): Crud
{
return parent::configureCrud($crud)
->setPageTitle(Crud::PAGE_INDEX, 'Pedidos (Forma de pago: Link de pagos)')
->setHelp(Crud::PAGE_INDEX, 'Estado de los pedidos con link de pagos');
}
public function configureFields(string $pageName): iterable
{
return [
FormField::addPanel('Datos De Facturación')->setIcon('fa fa-address-card'),
TextField::new('nombrecliente', 'Nombre'),
TextField::new('telefonocliente', 'Telefono'),
TextField::new('direccioncliente', 'Dirección'),
TextField::new('emailcliente', 'Email')->onlyOnDetail(),
FormField::addPanel('Datos De Envío')->setIcon('fa fa-truck '),
TextField::new('nombre_receptor', 'Nombre')->onlyOnDetail(),
TextField::new('telefono_receptor', 'Teléfono')->onlyOnDetail(),
TextField::new('observaciones_receptor', 'Observaciones')->onlyOnDetail(),
FormField::addPanel('Datos Del Pedido')->setIcon('fa fa-bars'),
TextField::new('sucursal', 'Sucursal'),
DateTimeField::new('fechareserva', 'Programado')->onlyOnDetail(),
TextField::new('metododepago', 'Metodo De Pago')->onlyOnDetail(),
TextField::new('email_linkdepago', 'Email Link')->onlyOnDetail(),
TextField::new('linkdepago', 'Link de pago')->onlyOnDetail(),
TextField::new('ultimolinkdepago', 'Estado de la transacción')
->formatValue(function ($value, $entity) {
$ultimoLinkdepago = $value;
if ($ultimoLinkdepago === null) {
return sprintf('<span class="badge badge-%s">%s</span>', 'neutro', htmlspecialchars('N/A', ENT_QUOTES, 'UTF-8'));
}
$statusName = $this->mapStatusNumberToName($ultimoLinkdepago); // Esta función convierte el número en un nombre de estado.
$badgeColor = $this->getBadgeColorForStatus($ultimoLinkdepago);
return sprintf('<span class="badge badge-%s">%s</span>', $badgeColor, htmlspecialchars($statusName, ENT_QUOTES, 'UTF-8'));
}),
TextField::new('filename', 'Cod Unico')->onlyOnDetail(),
BooleanField::new('isEnviado', 'XML recibido')->renderAsSwitch(false)->hideOnForm()->onlyOnDetail(),
ChoiceField::new('Tipodeservicio', 'Tipo')
->setChoices([
'DOMICILIO' => 4,
'RECOGER' => 16,
'PROGRAMADO' => 100,
])
->hideOnDetail(),
IntegerField::new('user', 'Vendedor'),
TextField::new('estado', 'Estado')->hideOnForm(),
DateTImeField::new('createdAt', 'Creado'),
FormField::addPanel('Log Link de pago')->setIcon('fa fa-list'),
CollectionField::new('CabeceraLinkdepago', 'Link de pago')->setTemplatePath('admin/field/linkdepago.html.twig')->onlyOnDetail(),
FormField::addPanel('Pedido')->setIcon('fa fa-tag'),
CollectionField::new('lineas', 'Productos')->setTemplatePath('admin/field/lineas.html.twig')->onlyOnDetail(),
NumberField::new('propinatotal', 'Propina')->onlyOnDetail(),
NumberField::new('Total', 'Total')->onlyOnDetail(),
FormField::addPanel('Log')->setIcon('fa fa-list'),
CollectionField::new('cabecera_status', 'Estado')->setTemplatePath('admin/field/status.html.twig')->onlyOnDetail(),
// FormField::addPanel('Datos Del Usuario')->setIcon('fa fa-user'),
// TextField::new('nombrecliente', 'Nombre Del Cliente'),
// TextField::new('telefonocliente', 'Telefono'),
// TextField::new('direccioncliente', 'Dirección'),
// IntegerField::new('user', 'Vendedor'),
// TextField::new('sucursal', 'Sucursal'),
// DateTImeField::new('createdAt', 'Creado'),
// TextField::new('metododepago', 'Metodo De Pago')->onlyOnDetail(),
// TextField::new('filename', 'Cod Unico')->onlyOnDetail(),
// BooleanField::new('isEnviado', 'XML recibido')->renderAsSwitch(false)->hideOnForm(),
// TextField::new('estado', 'Estado')->hideOnForm(),
// ChoiceField::new('Tipodeservicio', 'Tipo')
// ->setChoices([
// 'DOMICILIO' => 4,
// 'RECOGER' => 16,
// 'PROGRAMADO' => 100,
// ])
// ->hideOnDetail(),
// TextField::new('ultimolinkdepago', 'Estado de la transacción')
// ->formatValue(function ($value, $entity) {
// $ultimoLinkdepago = $value;
// if ($ultimoLinkdepago === null) {
// return sprintf('<span class="badge badge-%s">%s</span>', 'neutro', htmlspecialchars('N/A', ENT_QUOTES, 'UTF-8'));
// }
// $statusName = $this->mapStatusNumberToName($ultimoLinkdepago); // Esta función convierte el número en un nombre de estado.
// $badgeColor = $this->getBadgeColorForStatus($ultimoLinkdepago);
// return sprintf('<span class="badge badge-%s">%s</span>', $badgeColor, htmlspecialchars($statusName, ENT_QUOTES, 'UTF-8'));
// }),
// FormField::addPanel('Pedido')->setIcon('fa fa-tag'),
// CollectionField::new('lineas', 'Productos')->setTemplatePath('admin/field/lineas.html.twig')->onlyOnDetail(),
// NumberField::new('propinatotal', 'Propina')->onlyOnDetail(),
// NumberField::new('Total', 'Total')->onlyOnDetail(),
// FormField::addPanel('Log')->setIcon('fa fa-list'),
// CollectionField::new('cabecera_status', 'Estado')->setTemplatePath('admin/field/status.html.twig')->onlyOnDetail(),
];
}
public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): QueryBuilder
{
return parent::createIndexQueryBuilder($searchDto, $entityDto, $fields, $filters)
->andWhere('entity.linkdepago IS NOT NULL')
->andWhere('entity.metododepago = :metododepago')
->setParameter('metododepago', 30);
}
}