src/Admin/AcessoClienteAdmin.php line 16

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 Sonata\Form\Type\DatePickerType;
  10. use Sonata\AdminBundle\Form\Type\ModelType;
  11. use Sonata\AdminBundle\Form\Type\ModelAutocompleteType;
  12. final class AcessoClienteAdmin extends BaseAdmin
  13. {
  14.     public function createQuery($context 'list')
  15.     {
  16.         $idFranquia $this->getUserLogado()->getFranquia()->getId();
  17.         if(!$idFranquia){
  18.             exit('Nenhuma franquia para este usuário!');
  19.         }
  20.         
  21.         $query parent::createQuery($context);
  22.         $query->join($query->getRootAliases()[0].'.cliente''cli');
  23.         $query->join('cli.franquia''fr');
  24.         $query->andWhere('fr.id = :idFranquia');
  25.         $query->setParameter('idFranquia'$idFranquia);
  26.         return $query;
  27.     }
  28.     
  29.     protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
  30.     {
  31.         $datagridMapper
  32.             ->add('email')
  33.             ;
  34.     }
  35.     protected function configureListFields(ListMapper $listMapper): void
  36.     {
  37.         $listMapper
  38.             ->add('cliente.razaoSocial'null, ['label'=>'Razão Social'])
  39.             ->add('email'null, ['label'=>'E-mail'])
  40.             ->add('dataInicial'null, ['label'=>'Data Inicial'])
  41.             ->add('dataFinal'null, ['label'=>'Data Final'])
  42.             ->add('_action'null, [
  43.                 'actions' => [
  44.                     'show' => [],
  45.                     'edit' => [],
  46.                     'delete' => [],
  47.                 ],
  48.             ]);
  49.     }
  50.     protected function configureFormFields(FormMapper $formMapper): void
  51.     {
  52.         $formMapper
  53.             ->add('cliente'ModelType::class, [
  54.                 'placeholder' => '-- Selecione --',
  55.                 'label' => 'Cliente',
  56.                 'required' => true,
  57.                 'expanded' => false,
  58.                 'multiple' => false,
  59.                 'btn_add'  => false
  60.             ])
  61.             ->add('email'null, ['label'=>'E-mail'])
  62.             ->add('senha')
  63.             ->add('os_acessos'ModelAutocompleteType::class, ['property'=>'proposta.numero''multiple'=>true'btn_add'=>false], [
  64.                 'admin_code' => 'admin.ordem_de_servico',
  65.             ])
  66.             ->add('dataInicial'DatePickerType::class, ['label'=>'Data Inicial''required' => false])
  67.             ->add('dataFinal'DatePickerType::class, ['label'=>'Data Final''required' => false])
  68.             ;
  69.     }
  70.     protected function configureShowFields(ShowMapper $showMapper): void
  71.     {
  72.         $showMapper
  73.             ->add('id')
  74.             ->add('email'null, ['label'=>'E-mail'])
  75.             ->add('senha')
  76.             ->add('token')
  77.             ->add('dataInicial'null, ['label'=>'Data Inicial'])
  78.             ->add('dataFinal'null, ['label'=>'Data Final'])
  79.             ;
  80.     }
  81.     
  82.     public function prePersist($object)
  83.     {
  84.         /** @var OrdemDeServico $object */
  85.         parent::preUpdate($object); // TODO: Change the autogenerated stub
  86.         
  87.         $object->setToken($this->generateToken(40));
  88.         
  89.         return $object;
  90.         
  91.     }
  92.     
  93.     
  94.     private function generateToken($length 20
  95.     {
  96.         $characters '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  97.         $charactersLength strlen($characters);
  98.         $randomString '';
  99.         for ($i 0$i $length$i++) {
  100.             $randomString .= $characters[rand(0$charactersLength 1)];
  101.         }
  102.         return $randomString;
  103.     }
  104. }