<?php
declare(strict_types=1);
namespace App\Admin;
use App\Admin\TabMenu\ModuloMaestrosTabMenuAdmin;
use App\Entity\Marca;
use Doctrine\ORM\EntityManagerInterface;
use Knp\Menu\ItemInterface;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Admin\AdminInterface;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Show\ShowMapper;
use Sonata\DoctrineORMAdminBundle\Filter\CallbackFilter;
use Vich\UploaderBundle\Form\Type\VichImageType;
final class MarcaAdmin extends AbstractAdmin
{
public function __construct(
$code,
$class,
$baseControllerName,
private ModuloMaestrosTabMenuAdmin $moduloMaestrosTabMenuAdmin,
private EntityManagerInterface $em
) {
parent::__construct($code, $class, $baseControllerName);
}
protected function configureTabMenu(ItemInterface $menu, string $action, ?AdminInterface $childAdmin = null): void
{
$this->moduloMaestrosTabMenuAdmin->configureTabMenu($this, $menu, $action, $childAdmin);
parent::configureTabMenu($menu, $action, $childAdmin); // TODO: Change the autogenerated stub
}
protected function configureDefaultSortValues(array &$sortValues): void
{
parent::configureDefaultSortValues($sortValues);
$sortValues['_sort_by'] = 'nombre';
$sortValues['_sort_order']='ASC';
}
protected function configureDatagridFilters(DatagridMapper $filter): void
{
if($this->getRequest()->get('nav_prometeo')) {
$this->getDatagrid()->setValue('_per_page', null, $_ENV['REGISTROS_PER_PAGE_MODAL']);
}
$filter
->add('busqueda', CallbackFilter::class, [
'label' => false,
'attr' => [
'class' => 'filter-to-navbar-left filter-to-navbar',
'data-order' => '1',
'placeholder' => 'filter.placeholder.busqueda',
],
'callback' => function($queryBuilder, $alias, $field, $value)
{
if (!$value->hasValue()) return;
$this->em->getRepository(Marca::class)->cbFilter($queryBuilder, $alias, $field, $value);
return true;
},
])
;
}
protected function configureListFields(ListMapper $list): void
{
$parent = $this->getRequest()->get('pcode');
$list
->add('nombre', null, [
'label' => 'list.marca.label.nombre',
'identifier' => !$parent ? true : false,
'route' => [
'name' => 'edit'
]
])
// ->add(ListMapper::NAME_ACTIONS, null, [
// 'actions' => [
// 'show' => [],
// 'edit' => [],
// 'delete' => [],
// ],
// ])
;
}
protected function configureFormFields(FormMapper $form): void
{
$form
->add('logoFile', VichImageType::class, [
'label' => false,
'required' => false,
'allow_delete' => true,
'download_uri' => true,
'download_label' => false,
// 'download_label' => 'form.marca.label.logo',
'attr' => [
'data-title_image_delete' => null,
'data-message_image_delete' => null,
'class' => 'vich-image-load'
]
])
->add('nombre', null, [
'label' => false,
'attr' => [
'placeholder' => 'form.marca.placeholder.nombre'
]
])
;
}
protected function configureShowFields(ShowMapper $show): void
{
$show
->add('id')
->add('nombre')
->add('logo')
->add('deletedAt')
->add('updatedAt')
->add('createdAt')
;
}
}