<?phpnamespace App\Form\Movimientos;use App\Entity\Movimientos\OrdenReparacion;use Symfony\Component\Form\AbstractType;use Symfony\Component\Form\FormBuilderInterface;use Symfony\Component\OptionsResolver\OptionsResolver;use Symfony\Component\Form\Extension\Core\Type\DateType;use Symfony\Bridge\Doctrine\Form\Type\EntityType;use Doctrine\ORM\EntityRepository;use Doctrine\ORM\QueryBuilder;use Symfony\Component\Validator\Constraints\NotBlank;use App\Entity\Almacen\Deposito;use App\Entity\Mantenimiento\PedidoReparacionDiagramado;use App\Entity\Equipos\Maquinaria;class OrdenReparacionType extends AbstractType{ public function buildForm(FormBuilderInterface $builder, array $options): void { $deposito = ($options['user'] ? $options['user']->getDefault() : null); $builder ->add('fecha', DateType::class, [ 'widget' => 'single_text', ] ) ->add('tareaDiagramada', EntityType::class, [ 'class' => PedidoReparacionDiagramado::class, 'choice_label' => 'id', 'required' => false, 'query_builder' => function (EntityRepository $er): QueryBuilder { return $er->createQueryBuilder('u') ->join('u.diagrama', 'd') ->where('d.procesado = :p') ->setParameter('p', false); }, 'choice_attr' => function ($choice, $key, $value) { // adds a class like attending_yes, attending_no, etc return ['data-task' => $choice->getObservacionResponsable()]; } ]) ->add('tareaPreventivo', EntityType::class, [ 'class' => \App\Entity\Mantenimiento\Preventivo\TareaPlanDiagramada::class, 'choice_label' => 'id', 'required' => false, 'query_builder' => function (EntityRepository $er): QueryBuilder { return $er->createQueryBuilder('u') ->join('u.planMantenimientoDiagramado', 'p') ->where('p.realizado = :r') ->setParameter('r', false); }, ]) ->add('deposito', EntityType::class, [ 'class' => Deposito::class, 'data' => $deposito, 'constraints' => array( new NotBlank(['message' => 'Campo requerido']), ) ]) ->add('observaciones') ->add('equipos', EntityType::class, [ 'class' => Maquinaria::class, 'multiple' => true, 'query_builder' => function (EntityRepository $er): QueryBuilder { return $er->createQueryBuilder('u') ->where('u.activo = :activo') ->setParameter('activo', true) ->addOrderBy('u.nombre'); }, ]) ->add('responsable', EntityType::class, [ 'class' => \App\Entity\RRHH\Empleado::class, 'required' => false, 'choice_label' => 'legajoNombre', 'attr' => [ 'class' => 'selectpicker', 'data-live-search' => 'true', ], ]) ; } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'data_class' => OrdenReparacion::class, 'user' => null ]); }}