<?php
declare(strict_types=1);
namespace App\Admin;
use App\Form\Type\MapType;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Form\Type\ModelAutocompleteType;
use Sonata\AdminBundle\Show\ShowMapper;
use Sonata\Form\Type\CollectionType;
use Symfony\Component\Form\Extension\Core\Type\NumberType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use App\Form\Type\RelatoriosType;
final class ClienteAdmin extends BaseAdmin
{
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
{
$datagridMapper
->add('cnpj', null, ['label'=>'CNPJ'])
->add('razaoSocial','doctrine_orm_callback',[
'label'=>'Razão Social',
'callback' => array($this, 'filterCliente'),
])
->add('cidade')
->add('bairro')
->add('estado')
;
}
// Filtro de condomínio por logradouro
public function filterCliente($queryBuilder, $alias, $field, $value)
{
if (!$value['value']) {
return;
}
$value = mb_strtolower($value['value']);
$queryBuilder
//->andWhere("UNACCENT(LOWER($alias.razaoSocial)) LIKE UNACCENT(:nome)" )
->andWhere("LOWER($alias.razaoSocial) LIKE :nome" )
->setParameter('nome', "%$value%");
return true;
}
protected function configureListFields(ListMapper $listMapper): void
{
$listMapper
->add('cnpj', null, ['label'=>'CNPJ'])
->add('razaoSocial', null, ['label'=>'Razão Social'])
->add('cidade')
->add('estado')
->add('franquia', null, ['label'=>'Franquia'])
->add('_action', null, [
'actions' => [
'show' => [],
'edit' => [],
'delete' => [],
],
]);
}
protected function configureFormFields(FormMapper $formMapper): void
{
$formMapper->tab('Geral')
->with('Informações Gerais', ['class' => 'col-md-4'])
->add('cnpj', null, ['label'=>'CNPJ'])
->add('razaoSocial')
->add('inscricaoEstadual')
->add('inscricaoMunicipal')
->add('isSubstitutoTributario', null, ['label'=>'Substituto Tributário'])
->end()
->with('Contato', ['class' => 'col-md-4'])
->add('telefone')
->add('nomeContatoPrincipal', null, ['label'=>'Nome do contato principal'])
->add('cargoContatoPrincipal')
->end()
->end();
$formMapper->tab('Localização')
->with('Endereço', ['class' => 'col-md-4'])
->add('cep', null, [
'label' => 'CEP',
'attr' => [
'class' => 'search_data_api_cep',
'data-inputmask' => "'mask': '99999-999'",
]
])
->add('logradouro', null, ['attr' => ['class' => 'end_log']])
->add('cidade', null, ['attr' => ['class' => 'end_cidade']])
->add('bairro', null, ['attr' => ['class' => 'end_bairro']])
->add('numero', null, ['label' => 'Número'])
->add('complemento')
->add('estado', null, ['attr' => ['class' => 'end_uf']])
->end()
->with('Localização Geométrica', ['class' => 'col-md-8'])
->add('mapa', MapType::class, array('label' => false, 'mapped' => false), array('type' => 'string'))
->add('latitude', TextType::class, ['attr' => ['class' => 'end_lat']])
->add('longitude', TextType::class, ['attr' => ['class' => 'end_lng']])
->end()
->end();
$formMapper->tab('Diretores')
->with('Informações Gerais', ['class' => 'col-md-12'])
->add('diretores', ModelAutocompleteType::class, ['property'=>'nome', 'multiple'=>true, 'btn_add'=>'Criar novo diretor'], [
'admin_code' => 'admin.diretor_cliente',
])
->end()
->end();
$formMapper->tab('Contatos')
->with('Lista de contatos', ['class' => 'col-md-12'])
->add('contatos', CollectionType::class, [
'label' => 'Contatos',
'by_reference' => false,
], [
'edit' => 'inline',
'inline' => 'table',
])
->end()
->end();
if($this->getSubject() && $this->getSubject()->getId()){
$formMapper->tab('Relatórios')
->with('Relatórios Gerados', ['class' => 'col-md-12'])
->add('relatorios',RelatoriosType::class, ['label'=>false, 'mapped'=>false])
->end()
->end();
}
}
protected function configureShowFields(ShowMapper $showMapper): void
{
$showMapper
->add('id')
->add('franquia.nome',null,['label'=>'Franquia'])
->add('cnpj')
->add('razaoSocial', null, ['label'=>'Razão Social'])
->add('telefone')
->add('email')
->add('nomeContatoPrincipal', null, ['label'=>'Contato Principal'])
->add('inscricaoEstadual', null, ['label'=>'Iscrição Estadual'])
->add('inscricaoMunicipal', null, ['label'=>'Iscrição Municipal'])
->add('isSubstitutoTributario', null, ['label'=>'É substituto tributário'])
->add('createdAt', null, ['label'=>'Data de cadastro'])
->add('cep')
->add('logradouro')
->add('cidade')
->add('bairro')
->add('numero')
->add('complemento')
->add('estado')
->add('os',null,['label'=>'OS','template'=>'Os/link-os.html.twig']);
;
}
}