src/Form/Mantenimiento/PedidoReparacionType.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Form\Mantenimiento;
  3. use App\Entity\Mantenimiento\PedidoReparacion;
  4. use Symfony\Component\Form\AbstractType;
  5. use Symfony\Component\Form\FormBuilderInterface;
  6. use Symfony\Component\OptionsResolver\OptionsResolver;
  7. use Symfony\Component\Security\Core\Security;
  8. use Doctrine\ORM\EntityRepository;
  9. use Doctrine\ORM\QueryBuilder;
  10. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  11. use App\Entity\Mantenimiento\SectorPlanta;
  12. use  App\Entity\Equipos\Maquinaria;
  13. use App\Entity\Mantenimiento\Departamento;
  14. use App\Entity\Mantenimiento\SolicitantePedidoReparacion;
  15. use Symfony\Component\Form\Extension\Core\Type\FileType;
  16. use Symfony\Component\Validator\Constraints\Image;
  17. use Symfony\Component\Validator\Constraints\File
  18. class PedidoReparacionType extends AbstractType
  19. {
  20.     private $security;
  21.     public function __construct(Security $security)
  22.     {
  23.         $this->security $security;
  24.     }
  25.     public function buildForm(FormBuilderInterface $builder, array $options): void
  26.     {
  27.         $user $options['user'];
  28.         $builder
  29.             ->add('detalle')
  30.             ->add('tipo')
  31.             ->add('fecha', \Symfony\Component\Form\Extension\Core\Type\DateType::class, [
  32.                 'widget' => 'single_text',
  33.                 'required' => true,
  34.                 'data' => new \DateTime(),
  35.             ])
  36.             ->add('departamento'
  37.                    EntityType::class, [ 'class' => Departamento::class, 
  38.                    'required' => !$options['depto'], 
  39.                    'choices' => $user->getDepartamentos()->toArray() ])
  40.             ->add('sector'
  41.                     EntityType::class, 
  42.                     [
  43.                         'class' => SectorPlanta::class,
  44.                         'choices' => $user->getAllSectoresActivos(),
  45.                                                                                          
  46.                     ]
  47.                 )
  48.             ->add('solicitante'
  49.                     EntityType::class, 
  50.                     [
  51.                         'class' => SolicitantePedidoReparacion::class,
  52.                         'required' => false
  53.                         'query_builder' => function (EntityRepository $er) {
  54.                             return $er->createQueryBuilder('s')
  55.                                       ->andWhere('s.activo = :activo')
  56.                                       ->setParameter('activo'true)
  57.                                       ->orderBy('s.nombre''ASC');
  58.                         }
  59.                     ])
  60.             ->add('equipo'
  61.                     EntityType::class, 
  62.                     [
  63.                         'class' => Maquinaria::class,
  64.                         'required' => false
  65.                         'group_by' => function($choice$key$value) {
  66.                                                                             if ($choice->getSector()) 
  67.                                                                             {
  68.                                                                                 return $choice->getSector() . '';
  69.                                                                             }
  70.                                                                             return 'Sin Sector';
  71.                                                                         },
  72.                         'query_builder' => function (EntityRepository $er) use ($user): QueryBuilder {
  73.                                                                                             return $er->createQueryBuilder('u')
  74.                                                                                                       ->andWhere('u.sector IN (:sectores)')
  75.                                                                                                       ->setParameter('sectores'$user->getSectores())
  76.                                                                                                       ->orderBy('u.nombre''ASC');
  77.                                                                                          }
  78.                     ]
  79.                 )
  80.                 ->add('archivoImagen'FileType::class, [
  81.                         'label' => 'Imagen del Pedido',
  82.                         'mapped' => false// MUY IMPORTANTE: No mapear directamente a Doctrine
  83.                         'required' => false,
  84.                     ])
  85.         ;
  86.         if ($this->security->isGranted('ROLE_DIAGRAMA_TAREAS')) 
  87.         {
  88.            /* $builder
  89.                 ->add('observacionResponsable')
  90.                 ->add('responsables');*/
  91.         }
  92.     }
  93.     public function configureOptions(OptionsResolver $resolver): void
  94.     {
  95.         $resolver->setDefaults([
  96.             'data_class' => PedidoReparacion::class,
  97.             'depto' => false
  98.         ])
  99.         ->setRequired('user')
  100.         ->setRequired('depto');
  101.     }
  102. }