src/Admin/DevolucaoAlmoxarifadoAdmin.php line 14

Open in your IDE?
  1. <?php
  2. namespace App\Admin;
  3. use App\Entity\DevolucaoAlmoxarifado;
  4. use App\Services\ToolService;
  5. use Sonata\AdminBundle\Admin\AbstractAdmin;
  6. use Sonata\AdminBundle\Form\FormMapper;
  7. use Sonata\AdminBundle\Datagrid\ListMapper;
  8. use Sonata\AdminBundle\Show\ShowMapper;
  9. use Sonata\AdminBundle\Form\Type\ModelType;
  10. use Sonata\Form\Type\CollectionType;
  11. use Symfony\Component\Form\Extension\Core\Type\TextType;
  12. final class DevolucaoAlmoxarifadoAdmin extends AbstractAdmin
  13. {
  14.     private $movService;
  15.     protected $baseRoutePattern 'devolucaoalmoxarifado';
  16.     protected $baseRouteName 'admin_app_devolucaoalmoxarifado';
  17.     public function __construct($code$class$baseControllerNameToolService $movService)
  18.     {
  19.         parent::__construct($code$class$baseControllerName);
  20.         $this->movService $movService;
  21.     }
  22.     public function getTemplate($name)
  23.     {
  24.         if ($name === 'edit' || $name === 'create') {
  25.             return 'DevolucaoAlmoxarifado/' $name '.html.twig';
  26.         }
  27.         return parent::getTemplate($name);
  28.     }
  29.     protected function configureFormFields(FormMapper $formMapper)
  30.     {
  31.         $formMapper
  32.             ->with('Dados', ['description' => 'Primeiro selecione a saída, depois adicione os itens a devolver'])
  33.                 ->add('saida'ModelType::class, [
  34.                     'placeholder' => '-- Selecione a Saída --',
  35.                     'label' => 'Saída do Almoxarifado',
  36.                     'required' => true,
  37.                     'expanded' => false,
  38.                     'multiple' => false,
  39.                     'btn_add' => false,
  40.                     'help' => 'IMPORTANTE: Selecione a saída primeiro. Após selecionar, os itens disponíveis para devolução serão filtrados automaticamente.'
  41.                 ])
  42.                 ->add('recebidoPor'TextType::class, [
  43.                     'label' => 'Recebido por',
  44.                     'required' => false,
  45.                     'attr' => ['placeholder' => 'Nome de quem recebeu']
  46.                 ])
  47.                 ->add('devolvidoPor'TextType::class, [
  48.                     'label' => 'Devolvido por',
  49.                     'required' => false,
  50.                     'attr' => ['placeholder' => 'Nome de quem devolveu']
  51.                 ])
  52.             ->end()
  53.             ->with('Itens')
  54.                 ->add('itens'CollectionType::class, [
  55.                     'label' => 'Itens de devolução',
  56.                     'by_reference' => false,
  57.                 ], [
  58.                     'edit' => 'inline',
  59.                     'inline' => 'table'
  60.                 ])
  61.             ->end();
  62.     }
  63.     protected function configureListFields(ListMapper $listMapper)
  64.     {
  65.         $listMapper
  66.             ->addIdentifier('id')
  67.             ->add('saida')
  68.             ->add('recebidoPor')
  69.             ->add('createdAt')
  70.             ->add('_action'null, [
  71.                 'actions' => [
  72.                     'show' => [],
  73.                     'edit' => [],
  74.                     'delete' => [],
  75.                 ]
  76.             ])
  77.         ;
  78.     }
  79.     protected function configureShowFields(\Sonata\AdminBundle\Show\ShowMapper $showMapper)
  80.     {
  81.         $showMapper
  82.             ->with('Informações da Devolução')
  83.                 ->add('id'null, ['label' => 'ID'])
  84.                 ->add('saida'null, ['label' => 'Saída do Almoxarifado'])
  85.                 ->add('recebidoPor'null, ['label' => 'Recebido por'])
  86.                 ->add('devolvidoPor'null, ['label' => 'Devolvido por'])
  87.                 ->add('createdAt'null, ['label' => 'Data de Criação''format' => 'd/m/Y H:i'])
  88.             ->end()
  89.             ->with('Itens Devolvidos')
  90.                 ->add('itens'null, [
  91.                     'label' => 'Itens',
  92.                     'template' => 'DevolucaoAlmoxarifado/show_itens.html.twig'
  93.                 ])
  94.             ->end();
  95.     }
  96.     public function prePersist($dev)
  97.     {
  98.         // Setar a devolução em cada item
  99.         foreach ($dev->getItens() as $item) {
  100.             $item->setDevolucao($dev);
  101.         }
  102.         
  103.         $this->movService->registrarDevolucao($dev);
  104.     }
  105.     public function preUpdate($dev)
  106.     {
  107.         // Setar a devolução em cada item
  108.         foreach ($dev->getItens() as $item) {
  109.             $item->setDevolucao($dev);
  110.         }
  111.     }
  112. }