src/Admin/EquipamentoAdmin.php line 20

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Admin;
  4. use Sonata\AdminBundle\Admin\AbstractAdmin;
  5. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  6. use Sonata\AdminBundle\Datagrid\ListMapper;
  7. use Sonata\AdminBundle\Form\FormMapper;
  8. use Sonata\AdminBundle\Show\ShowMapper;
  9. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  10. use Symfony\Component\Form\Extension\Core\Type\NumberType;
  11. use App\Enums\UnidadeMedidaEnum;
  12. use Sonata\Form\Type\DatePickerType;
  13. use Knp\Menu\ItemInterface as MenuItemInterface;
  14. use App\Services\ToolService;
  15. final class EquipamentoAdmin extends AbstractAdmin {
  16.     /** @var ToolService */
  17.     private $toolService;
  18.     protected $classnameLabel 'Equipamento';
  19.     public function __construct($code$class$baseControllerNameToolService $toolService)
  20.     {
  21.         parent::__construct($code$class$baseControllerName);
  22.         $this->toolService $toolService;
  23.     }
  24.     protected function configureTabMenu(MenuItemInterface $menu$action$admin null): void
  25.     {
  26.         if (!$admin) {
  27.             return;
  28.         }
  29.         if ($action === 'list') {
  30.             $menu->addChild('Relatórios', [
  31.                 'dropdown' => true,
  32.                 'icon' => 'fa fa-file-text-o'
  33.             ]);
  34.             $menu['Relatórios']->addChild('Equipamentos Fora do Almoxarifado', [
  35.                 'uri' => $this->getRouteGenerator()->generate('equipamento_relatorio_fora_almoxarifado'),
  36.                 'icon' => 'fa fa-external-link'
  37.             ]);
  38.         }
  39.     }
  40.     public function prePersist($object)
  41.     {
  42.         $object->setCreatedAt(new \DateTime('now'));
  43.         parent::prePersist($object);
  44.     }
  45.     
  46.     protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
  47.     {
  48.         $datagridMapper
  49.             ->add('id')
  50.             ->add('codigo')
  51.             ->add('franquia')
  52.             ->add('titulo')
  53.             ->add('isCalibravel')
  54.             ->add('marca')
  55.             ->add('modelo')
  56.             ->add('capacidade')
  57.             ->add('serie')
  58.             ->add('createdAt')
  59.             ->add('ultimaCalibracao')
  60.             ->add('descricao')
  61.             ->add('unidadeMedidaCapacidade')
  62.             ->add('capacidadeMaxima')
  63.             ;
  64.     }
  65.     protected function configureListFields(ListMapper $listMapper): void
  66.     {
  67.         $this->setTemplate('list''Equipamento/list.html.twig');
  68.         
  69.         $listMapper
  70.             ->add('codigo'null, ['label'=>'Código'])
  71.             ->add('titulo'null, ['label'=>'Título'])
  72.             ->add('quantidade''string', ['label' => 'Quantidade'])
  73.             ->add('disponivel''string', [
  74.                 'label' => 'Qtd. Disponível',
  75.                 'template' => 'Equipamento/list_disponivel.html.twig'
  76.             ])
  77.             ->add('isCalibravel'null, ['label'=>'Calibrável'])
  78.             ->add('marca'null, ['label'=>'Marca'])
  79.             ->add('modelo'null, ['label'=>'Modelo'])
  80.             ->add('_action'null, [
  81.                 'actions' => [
  82.                     'show' => [],
  83.                     'edit' => [],
  84.                     'delete' => [],
  85.                 ],
  86.             ]);
  87.     }
  88.     protected function configureFormFields(FormMapper $formMapper): void
  89.     {
  90.         $formMapper
  91.         ->with('Informações I', ['class' => 'col-md-4'])
  92.             ->add('franquia'null, ['label'=>'Franquia'])
  93.             ->add('isCalibravel'null, ['label'=>'Calibrável'])
  94.             ->add('codigo'null, ['label'=>'Código'])
  95.             ->add('titulo'null, ['label'=>'Título'])
  96.             ->add('marca'null, ['label'=>'Marca'])
  97.             ->add('modelo'null, ['label'=>'Modelo'])
  98.             ->add('serie'null, ['label'=>'Série'])
  99.             ->add('cadastradoPor'null, ['label'=>'Cadastrado por'])
  100.         ->end()
  101.         
  102.         ->with('Informações II', ['class' => 'col-md-4'])
  103.             ->add('faixaOperacao'null, ['label'=>'Faixa de Operação'])
  104.             ->add('localEquipamento'null, ['label'=>'Local do equipamento'])
  105.             ->add('periodicidadeCalibragem'null, ['label'=>'Periodicidade calibração'])
  106.             ->add('pontosCalibracao'null, ['label'=>'Pontos de calibração'])
  107.             ->add('pontosQualificacao'null, ['label'=>'Pontos de qualificação'])
  108.             ->add('dataProximaCalibragem'DatePickerType::class, ['label'=> 'Data da próxima calibração'])
  109.         ->end()
  110.         ->with('Informações III', ['class' => 'col-md-4'])
  111.             ->add('ema'null, ['label'=>'E.M.A'])
  112.             ->add('descricao'null, ['label'=>'Descrição'])
  113.             ->add('unidadeMedidaCapacidade'ChoiceType::class, [
  114.                 'label' => 'Unidade de medida',
  115.                 'choices' => UnidadeMedidaEnum::getAssociatedValues(),
  116.             ])
  117.             ->add('capacidade'null, ['label'=>'Capacidade'])
  118.             ->add('capacidadeMaxima'null, ['label'=>'Capacidade Máxima''attr'=>['type'=>'number','min'=>0]])
  119.             ->add('resolucao'null, ['label'=>'Resolução'])
  120.             ->add('quantidade'null, ['label'=>'Quantidade'])
  121.         ->end()
  122.             ;
  123.     }
  124.     protected function configureShowFields(ShowMapper $showMapper): void
  125.     {
  126.         $showMapper
  127.             ->add('codigo'null, ['label'=>'Código'])
  128.             ->add('titulo'null, ['label'=>'Título'])
  129.             ->add('quantidade'null, ['label'=>'Quantidade'])
  130.             ->add('isCalibravel'null, ['label'=>'Calibrável'])
  131.             ->add('marca'null, ['label'=>'Marca'])
  132.             ->add('modelo'null, ['label'=>'Modelo'])
  133.             ->add('capacidade'null, ['label'=>'Capacidade'])
  134.             ->add('serie'null, ['label'=>'Série'])
  135.             ->add('descricao'null, ['label'=>'Descrição'])
  136.             ->add('unidadeMedidaCapacidade'null, ['label'=>'Unidade de medida'])
  137.             ->add('capacidadeMaxima'null, ['label'=>'Capacidade Máxima'])
  138.             ->add('resolucao'null, ['label'=>'Resolução'])
  139.             ;
  140.     }
  141. }