src/Admin/EmpresaAdmin.php line 34

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by Logics Tecnologia e Serviços LTDA.
  4.  * @author: Romeu Godoi <romeu@logics.com.br>
  5.  * Date: 12/09/18
  6.  * Time: 19:33
  7.  * @copyright Copyright (C) 2018 LogicSITE. Todos os Direitos Reservados.
  8.  * LogicSITE. Este software é de propriedade exclusiva da LOGICS TEC. E SERV. LTDA
  9.  * e seu uso só pode ser dado por usuários licenciados por escrito.
  10.  * O uso indevido desta plataforma, ou parte dela estará sujeita a penalidades
  11.  * previstas em lei, conforme legislação pertinente.
  12.  */
  13. namespace App\Admin;
  14. use App\Entity\Empresa;
  15. use App\Form\Type\MapType;
  16. use App\Model\ImageCacheDescriber;
  17. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  18. use Sonata\AdminBundle\Datagrid\ListMapper;
  19. use Sonata\AdminBundle\Form\FormMapper;
  20. use Sonata\AdminBundle\Form\Type\AdminType;
  21. use Sonata\AdminBundle\Form\Type\ModelListType;
  22. use Sonata\AdminBundle\Show\ShowMapper;
  23. use Sonata\Form\Type\CollectionType;
  24. use Sonata\Form\Validator\ErrorElement;
  25. use Symfony\Component\Form\Extension\Core\Type\FileType;
  26. use Symfony\Component\Form\Extension\Core\Type\NumberType;
  27. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  28. use Symfony\Component\Form\Extension\Core\Type\TelType;
  29. use Sonata\AdminBundle\Form\Type\ModelAutocompleteType;
  30. use Symfony\Component\Form\Extension\Core\Type\TextType;
  31. class EmpresaAdmin extends BaseAdmin
  32. {
  33.     public function __construct($code$class$baseControllerName)
  34.     {
  35.         parent::__construct($code$class$baseControllerName);
  36.         $this->imagensUpload = [
  37.             new ImageCacheDescriber('logomarcaOriginal''logomarca''logoFile''thumb_400px'),
  38.             new ImageCacheDescriber('imagemClientesOriginal''imagemClientes''imagemClientesFile''thumb_400px'),
  39.         ];
  40.     }
  41.     /**
  42.      * @param ErrorElement $errorElement
  43.      * @param Empresa $object
  44.      */
  45.     public function validate(ErrorElement $errorElement$object)
  46.     {
  47.         parent::validate($errorElement$object);
  48.         $container $this->getConfigurationPool()->getContainer();
  49.         /*
  50.         $usuarioAcesso = $this->getForm()->get('usuarioAcesso')->getData();
  51.         $senhaAcesso   = $this->getForm()->get('senhaAcesso')->getData();
  52.         $senhaAcessoRepeat   = $this->getForm()->get('senhaAcessoRepeat')->getData();
  53.         $um = $container->get('sonata.user.user_manager');
  54.         $userByEmail = $um->findUserByEmail($object->getEmail());
  55.         $userByUser = $um->findUserByUsername($usuarioAcesso);
  56.         if(!$object->getId()) { // No create
  57.             if (!empty($usuarioAcesso)) { // Informou o login
  58.                 if ($userByEmail) {
  59.                     $errorElement->with('email')->addViolation('Ops! Já existe uma franquia com um representante com este e-mail já cadastrado!');
  60.                 } else if($userByUser) {
  61.                     $errorElement->with('usuarioAcesso')->addViolation('Ops! Já existe um usuário com este username informado!');
  62.                 } else if (empty($senhaAcesso)) {
  63.                     $errorElement->with('senhaAcesso')->addViolation('Ops! Informe uma senha de acesso!');
  64.                 } else if(empty($senhaAcessoRepeat)){
  65.                     $errorElement->with('senhaAcessoRepeat')->addViolation('Ops! Confirme a senha de acesso!');
  66.                 } else if($senhaAcesso != $senhaAcessoRepeat){
  67.                     $errorElement->with('senhaAcessoRepeat')->addViolation('Ops! As senhas não estão iguais!');
  68.                 } else if(strlen($senhaAcesso) < 6) {
  69.                     $errorElement->with('senhaAcessoRepeat')->addViolation('Ops! Defina uma senha com no mínima 6 caracteres!');
  70.                 }
  71.             } else {
  72.                 $errorElement->with('usuarioAcesso')->addViolation('Ops! É preciso criar um usuário de acesso para a franquia acessar o sistema!');
  73.             }
  74.         } else {
  75.             if ($userByUser != $object->getUsuarioAdmin()->getUsername()) { // Não permitir a edição do usuário
  76.                 $errorElement->with('email')->addViolation('Ops! Não é permitido editar o usuário de uma franquia! Entre em contato com o suporte técnico');
  77.             } else {
  78.                 if (!empty($senhaAcesso)) { // Está tentando mudar a senha
  79.                     if (empty($senhaAcessoRepeat)) {
  80.                         $errorElement->with('senhaAcessoRepeat')->addViolation('Ops! Confirme a senha de acesso!');
  81.                     } else if ($senhaAcesso != $senhaAcessoRepeat) {
  82.                         $errorElement->with('senhaAcessoRepeat')->addViolation('Ops! As senhas não estão iguais!');
  83.                     } else if (strlen($senhaAcesso) < 6) {
  84.                         $errorElement->with('senhaAcessoRepeat')->addViolation('Ops! Defina uma senha com no mínima 6 caracteres!');
  85.                     }
  86.                 }
  87.             }
  88.         }
  89.         */
  90.     }
  91.     /**
  92.      * @param Empresa $object
  93.      * @return Empresa
  94.      */
  95.     public function prePersist($object)
  96.     {
  97.         parent::prePersist($object);
  98.         $container $this->getConfigurationPool()->getContainer();
  99.         if($object->getUsuarioAdmin()){
  100.             $object->getUsuarioAdmin()->setFranquia($object);
  101.         }
  102.         $object->setLatitude(floatval($this->getRequest()->request->get('latitude_mapa')));
  103.         $object->setLongitude(floatval($this->getRequest()->request->get('longitude_mapa')));
  104.         $object->setZoomMapa(floatval($this->getRequest()->request->get('zoom_map')));
  105.         return $object;
  106.     }
  107.     /**
  108.      * @param Empresa $object
  109.      * @return Empresa
  110.      */
  111.     public function preUpdate($object)
  112.     {
  113.         parent::preUpdate($object);
  114.         if($object->getUsuarioAdmin()){
  115.             $object->getUsuarioAdmin()->setFranquia($object);
  116.         }
  117.         $object->setLatitude($this->getRequest()->request->get('latitude_mapa'));
  118.         $object->setLongitude($this->getRequest()->request->get('longitude_mapa'));
  119.         $object->setZoomMapa($this->getRequest()->request->get('zoom_map'));
  120.         return $object;
  121.     }
  122.     protected function configureFormFields(FormMapper $formMapper)
  123.     {
  124.         /** @var Empresa $empresa */
  125.         $empresa $this->getSubject();
  126.         //$imgReq = !is_null($empresa) && is_null($empresa->getId());
  127.         $imgReq false;
  128.         $fileFieldOptions = [
  129.             'data_class' => null,
  130.             'required' => $imgReq,
  131.             'label' => 'Logo',
  132.         ];
  133.         if (!is_null($empresa) && $empresa->getLogomarca() != '') {
  134.             $fileFieldOptions['help'] = '<img src="' $empresa->getLogomarca() .
  135.                 '" class="admin-preview img-thumbnail" style="max-width:150px;max-height:250px;"/>';
  136.         }
  137.         $imgCli false;
  138.         $fileFieldOptionsCli = [
  139.             'data_class' => null,
  140.             'required' => $imgCli,
  141.             'label' => 'Imagem de clientes',
  142.         ];
  143.         if (!is_null($empresa) && $empresa->getImagemClientes() != '') {
  144.             $fileFieldOptionsCli['help'] = '<img src="' $empresa->getImagemClientes() .
  145.                 '" class="admin-preview img-thumbnail" style="max-width:150px;max-height:250px;"/>';
  146.         }
  147.         $formMapper
  148.             ->tab('Geral')
  149.                 ->with('Informações Gerais', ['class' => 'col-md-4'])
  150.                     ->add('logoFile'FileType::class, $fileFieldOptions)
  151.                     ->add('imagemClientesFile'FileType::class, $fileFieldOptionsCli)
  152.                     ->add('nome')
  153.                     ->add('cnpj'null, ['label' => 'CNPJ'])
  154.                     ->add('status'null, ['label'=>'Habilitada'])
  155.                     ->add('nomeDiretorTecnico'null, ['label' => 'Responsável Técnico'])
  156.                     ->add('isMatriz'null, ['label'=>'Matriz'])
  157.                 ->end()
  158.                 ->with('Contato', array('class' => 'col-md-4'))
  159.                     ->add('email'null, ['label'=>'E-mail','required'=>true])
  160.                     ->add('representante')
  161.                     ->add('telefone'TelType::class, [
  162.                         'attr' => [
  163.                             'placeholder' => '(__) ____-____',
  164.                             'data-inputmask' => "'mask': '(99) 9999-9999'",
  165.                         ]
  166.                     ])
  167.                 ->end()
  168.                 ->with('Acesso Sistema', array('class' => 'col-md-4'))
  169.                     ->add('usuarioAdmin'ModelListType::class, [
  170.                         'required' => true,
  171.                         'attr' => ['style'=>'margin-top:10px !important;']
  172.                     ])
  173.                 ->end()
  174.             ->end()
  175.             ->tab('Localização')
  176.                 ->with('Endereço', ['class' => 'col-md-4'])
  177.                     ->add('cep'null, [
  178.                         'label' => 'CEP',
  179.                         'attr' => [
  180.                             'class' => 'search_data_api_cep',
  181.                             'data-inputmask' => "'mask': '99999-999'",
  182.                         ]
  183.                     ])
  184.                     ->add('logradouro'null, ['attr' => ['class' => 'end_log']])
  185.                     ->add('cidade'null, ['attr' => ['class' => 'end_cidade']])
  186.                     ->add('bairro'null, ['attr' => ['class' => 'end_bairro']])
  187.                     ->add('numero'null, ['label' => 'Número'])
  188.                     ->add('complemento')
  189.                     ->add('estado'null, ['attr' => ['class' => 'end_uf']])
  190.                 ->end()
  191.                 ->with('Localização Geométrica', ['class' => 'col-md-8'])
  192.                     ->add('mapa'MapType::class, array('label' => false'mapped' => false), array('type' => 'string'))
  193.                     ->add('latitude'TextType::class, ['attr' => ['class' => 'end_lat']])
  194.                     ->add('longitude'TextType::class, ['attr' => ['class' => 'end_lng']])
  195.                 ->end()
  196.             ->end()
  197.         ;
  198.     }
  199.     protected function configureDatagridFilters(DatagridMapper $datagridMapper)
  200.     {
  201.         $datagridMapper
  202.             ->add('nome')
  203.             ->add('email')
  204.             ->add('logomarca')
  205.             ->add('logradouro')
  206.             ->add('cidade')
  207.             ->add('bairro')
  208.             ->add('estado')
  209.             ->add('latitude')
  210.             ->add('longitude');
  211.     }
  212.     protected function configureListFields(ListMapper $listMapper)
  213.     {
  214.         $listMapper
  215.             ->add('logomarca''string', ['template' => 'CRUD/thumbnail_list.html.twig'])
  216.             ->addIdentifier('cnpj')
  217.             ->addIdentifier('nome')
  218.             ->addIdentifier('email')
  219.             ->add('_action''actions', array(
  220.                 'actions' => array(
  221.                     'show' => array(),
  222.                     'edit' => array(),
  223.                     'delete' => array(),
  224.                 )
  225.             ));
  226.     }
  227.     protected function configureShowFields(ShowMapper $showMapper)
  228.     {
  229.         $showMapper
  230.             ->add('logomarca''string', ['template' => 'CRUD/thumbnail_show.html.twig'])
  231.             ->add('id')
  232.             ->add('nome')
  233.             ->add('email')
  234.             ->add('logradouro')
  235.             ->add('cidade')
  236.             ->add('bairro')
  237.             ->add('estado')
  238.             ->add('latitude')
  239.             ->add('longitude');
  240.     }
  241. }