<?phpnamespace App\Form\Movimientos;use App\Entity\Movimientos\ItemMovimiento;use Symfony\Component\Form\AbstractType;use Symfony\Component\Form\FormBuilderInterface;use Symfony\Component\OptionsResolver\OptionsResolver;use Symfony\Bridge\Doctrine\Form\Type\EntityType;use App\Entity\Almacen\Articulo;use Doctrine\ORM\EntityRepository;use App\Entity\Mantenimiento\PedidoReparacionDiagramado;use App\Entity\Equipos\Maquinaria;use Doctrine\ORM\QueryBuilder;class ItemMovimientoType extends AbstractType{ public function buildForm(FormBuilderInterface $builder, array $options): void { $movimiento = $options['movimiento']; $usuario = $options['user']; $builder ->add('cantidad') ->add('articulo', EntityType::class, [ 'class' => Articulo::class, 'query_builder' => function (EntityRepository $er) use ($movimiento, $usuario): QueryBuilder { if ($usuario && $usuario->getAplicaciones()->count()) { $qb = $er->createQueryBuilder('a') ->distinct() ->join('a.aplicaciones', 'ap') ->andWhere('a.activo = :activo') ->setParameter('activo', true) ->orderBy('a.descripcion', 'ASC'); $qb->andWhere('ap.id IN (:aplicaciones)') ->setParameter('aplicaciones', $usuario->getAplicaciones()->toArray()); } else{ $qb = $er->createQueryBuilder('a') ->andWhere('a.activo = :activo') ->setParameter('activo', true) ->orderBy('a.descripcion', 'ASC'); } return $qb; }, ]) ; if (($movimiento) && ($movimiento->getAsociaPedidoReparacion())) { $builder->add('tareaDiagramada', EntityType::class, [ 'class' => PedidoReparacionDiagramado::class, 'choice_label' => 'id', 'required' => false, 'data' => $movimiento->getTareaDiagramada(), '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()]; } ]); } } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'data_class' => ItemMovimiento::class, 'movimiento' => null, 'user' => null, ]); }}