src/Admin/ClienteAdmin.php line 19

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Admin;
  4. use App\Form\Type\MapType;
  5. use Sonata\AdminBundle\Admin\AbstractAdmin;
  6. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  7. use Sonata\AdminBundle\Datagrid\ListMapper;
  8. use Sonata\AdminBundle\Form\FormMapper;
  9. use Sonata\AdminBundle\Form\Type\ModelAutocompleteType;
  10. use Sonata\AdminBundle\Show\ShowMapper;
  11. use Sonata\Form\Type\CollectionType;
  12. use Symfony\Component\Form\Extension\Core\Type\NumberType;
  13. use Symfony\Component\Form\Extension\Core\Type\TextType;
  14. use App\Form\Type\RelatoriosType;
  15. final class ClienteAdmin extends BaseAdmin
  16. {
  17.     protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
  18.     {
  19.         $datagridMapper
  20.             ->add('cnpj'null, ['label'=>'CNPJ'])
  21.             ->add('razaoSocial','doctrine_orm_callback',[
  22.                 'label'=>'Razão Social',
  23.                 'callback'   => array($this'filterCliente'),
  24.             ])
  25.             ->add('cidade')
  26.             ->add('bairro')
  27.             ->add('estado')
  28.             ;
  29.     }
  30.     // Filtro de condomínio por logradouro
  31.     public function filterCliente($queryBuilder$alias$field$value)
  32.     {
  33.         if (!$value['value']) {
  34.             return;
  35.         }
  36.         $value mb_strtolower($value['value']);
  37.         $queryBuilder
  38.             //->andWhere("UNACCENT(LOWER($alias.razaoSocial)) LIKE UNACCENT(:nome)" )
  39.             ->andWhere("LOWER($alias.razaoSocial) LIKE :nome" )
  40.             ->setParameter('nome'"%$value%");
  41.         return true;
  42.     }
  43.     protected function configureListFields(ListMapper $listMapper): void
  44.     {
  45.         $listMapper
  46.             ->add('cnpj'null, ['label'=>'CNPJ'])
  47.             ->add('razaoSocial'null, ['label'=>'Razão Social'])
  48.             ->add('cidade')
  49.             ->add('estado')
  50.             ->add('franquia'null, ['label'=>'Franquia'])
  51.             ->add('_action'null, [
  52.                 'actions' => [
  53.                     'show' => [],
  54.                     'edit' => [],
  55.                     'delete' => [],
  56.                 ],
  57.             ]);
  58.     }
  59.     protected function configureFormFields(FormMapper $formMapper): void
  60.     {
  61.         $formMapper->tab('Geral')
  62.             ->with('Informações Gerais', ['class' => 'col-md-4'])
  63.                 ->add('cnpj'null, ['label'=>'CNPJ'])
  64.                 ->add('razaoSocial')
  65.                 ->add('inscricaoEstadual')
  66.                 ->add('inscricaoMunicipal')
  67.                 ->add('isSubstitutoTributario'null, ['label'=>'Substituto Tributário'])
  68.             ->end()
  69.             ->with('Contato', ['class' => 'col-md-4'])
  70.                 ->add('telefone')
  71.                 ->add('nomeContatoPrincipal'null, ['label'=>'Nome do contato principal'])
  72.                 ->add('cargoContatoPrincipal')
  73.             ->end()
  74.         ->end();
  75.         $formMapper->tab('Localização')
  76.             ->with('Endereço', ['class' => 'col-md-4'])
  77.                 ->add('cep'null, [
  78.                     'label' => 'CEP',
  79.                     'attr' => [
  80.                         'class' => 'search_data_api_cep',
  81.                         'data-inputmask' => "'mask': '99999-999'",
  82.                     ]
  83.                 ])
  84.                 ->add('logradouro'null, ['attr' => ['class' => 'end_log']])
  85.                 ->add('cidade'null, ['attr' => ['class' => 'end_cidade']])
  86.                 ->add('bairro'null, ['attr' => ['class' => 'end_bairro']])
  87.                 ->add('numero'null, ['label' => 'Número'])
  88.                 ->add('complemento')
  89.                 ->add('estado'null, ['attr' => ['class' => 'end_uf']])
  90.                 ->end()
  91.                 ->with('Localização Geométrica', ['class' => 'col-md-8'])
  92.                 ->add('mapa'MapType::class, array('label' => false'mapped' => false), array('type' => 'string'))
  93.                 ->add('latitude'TextType::class, ['attr' => ['class' => 'end_lat']])
  94.                 ->add('longitude'TextType::class, ['attr' => ['class' => 'end_lng']])
  95.             ->end()
  96.         ->end();
  97.         $formMapper->tab('Diretores')
  98.             ->with('Informações Gerais', ['class' => 'col-md-12'])
  99.                 ->add('diretores'ModelAutocompleteType::class, ['property'=>'nome''multiple'=>true'btn_add'=>'Criar novo diretor'], [
  100.                     'admin_code' => 'admin.diretor_cliente',
  101.                 ])
  102.             ->end()
  103.         ->end();
  104.         $formMapper->tab('Contatos')
  105.             ->with('Lista de contatos', ['class' => 'col-md-12'])
  106.             ->add('contatos'CollectionType::class, [
  107.                 'label' => 'Contatos',
  108.                 'by_reference' => false,
  109.             ], [
  110.                 'edit' => 'inline',
  111.                 'inline' => 'table',
  112.             ])
  113.             ->end()
  114.         ->end();
  115.         
  116.         
  117.         if($this->getSubject() && $this->getSubject()->getId()){
  118.             $formMapper->tab('Relatórios')
  119.                 ->with('Relatórios Gerados', ['class' => 'col-md-12'])
  120.                     ->add('relatorios',RelatoriosType::class, ['label'=>false'mapped'=>false])
  121.                 ->end()
  122.             ->end();
  123.         }
  124.     }
  125.     protected function configureShowFields(ShowMapper $showMapper): void
  126.     {
  127.         $showMapper
  128.             ->add('id')
  129.             ->add('franquia.nome',null,['label'=>'Franquia'])
  130.             ->add('cnpj')
  131.             ->add('razaoSocial'null, ['label'=>'Razão Social'])
  132.             ->add('telefone')
  133.             ->add('email')
  134.             ->add('nomeContatoPrincipal'null, ['label'=>'Contato Principal'])
  135.             ->add('inscricaoEstadual'null, ['label'=>'Iscrição Estadual'])
  136.             ->add('inscricaoMunicipal'null, ['label'=>'Iscrição Municipal'])
  137.             ->add('isSubstitutoTributario'null, ['label'=>'É substituto tributário'])
  138.             ->add('createdAt'null, ['label'=>'Data de cadastro'])
  139.             ->add('cep')
  140.             ->add('logradouro')
  141.             ->add('cidade')
  142.             ->add('bairro')
  143.             ->add('numero')
  144.             ->add('complemento')
  145.             ->add('estado')
  146.             ->add('os',null,['label'=>'OS','template'=>'Os/link-os.html.twig']);
  147.             ;
  148.     }
  149. }