src/Form/SolicitudType.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Solicitud;
  4. use App\Entity\Ubicacion;
  5. use App\Entity\Usuario;
  6. use Doctrine\ORM\EntityRepository;
  7. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  8. use Symfony\Component\Form\AbstractType;
  9. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  10. use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
  11. use Symfony\Component\Form\Extension\Core\Type\DateType;
  12. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  13. use Symfony\Component\Form\Extension\Core\Type\TextType;
  14. use Symfony\Component\Form\FormBuilderInterface;
  15. use Symfony\Component\OptionsResolver\OptionsResolver;
  16. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  17. use Symfony\Component\Validator\Constraints\Ip;
  18. use Symfony\Component\Validator\Constraints\NotBlank;
  19. class SolicitudType extends AbstractType
  20. {
  21.     private TokenStorageInterface $token;
  22.     public function __construct(TokenStorageInterface $token)
  23.     {
  24.         $this->token $token;
  25.     }
  26.     public function buildForm(FormBuilderInterface $builder, array $options): void
  27.     {
  28.         $builder
  29.             //->add('tipoEquipo')
  30.             ->add('tipoEquipo'TextType::class, [
  31.                 'label' => 'Tipo de equipo: ',
  32.                 'attr' => [
  33.                     'class' => 'form-control form-control-sm'
  34.                 ]
  35.             ])
  36.             //->add('idEquipo')
  37.             ->add('idEquipo'TextType::class, [
  38.                 'label' => 'Identificador del equipo:',
  39.                 'attr' => [
  40.                     'class' => 'form-control form-control-sm'
  41.                 ]
  42.             ])
  43.             //->add('periodo')
  44.             ->add('periodo'TextType::class, [
  45.                 'label' => 'Periodo',
  46.                 'attr' => [
  47.                     'class' => 'form-control form-control-sm'
  48.                 ]
  49.             ])
  50.             //->add('tipoMantenimiento')
  51.             /*->add('tipoMantenimiento', TextType::class, [
  52.                 'label' => 'Mantenimiento',
  53.                 'attr' => [
  54.                     'class' => 'form-control form-control-sm'
  55.                 ]
  56.             ])*/
  57.             ->add('tipoMantenimiento'ChoiceType::class, [
  58.                 'label' => 'Mantenimiento',
  59.                 'choices'  => [
  60.                     'Mantenimiento Correctivo' => 'MC',
  61.                     'Soporte Técnico' => 'ST',
  62.                 ],
  63.                 'attr' => ['class' => 'form-control form-control-sm']
  64.             ])
  65.             ->add('falla'TextareaType::class, [
  66.                 'label' => '* Acción a realizar',
  67.                 'attr' => [
  68.                     'class' => 'form-control form-control-sm'
  69.                 ]
  70.             ])
  71.             ->add('srealizado'TextareaType::class, [
  72.                 'label' => 'Servicio realizado',
  73.                 'attr' => [
  74.                     'class' => 'form-control form-control-sm',
  75.                 ],
  76.                 'required' => true,
  77.                 'constraints' => [
  78.                     new NotBlank([
  79.                         'message' => 'El campo no debe estar vacío',
  80.                     ])
  81.                 ],
  82.             ])
  83.             ->add('fregistro'DateType::class, [
  84.                 'label' => 'Fecha de registro',
  85.                 'required' => false,
  86.             ])
  87.             ->add('fatencion'DateType::class, [
  88.                 'label' => 'Fecha limite de atención',
  89.                 'required' => false,
  90.             ])
  91.             ->add('ffin'DateType::class, [
  92.                 'label' => 'Fecha limite de atención',
  93.                 'required' => false,
  94.             ])
  95.             /*->add('fevaluacion')*/
  96.             ->add('refacciones'ChoiceType::class, [
  97.                 'label' => 'Uso refacciones',
  98.                 'choices'  => [
  99.                     'No' => 0,
  100.                     'Si' => 1,
  101.                 ],
  102.                 'attr' => ['class' => 'form-control form-control-sm']
  103.             ])
  104.             ->add('estatus'ChoiceType::class, [
  105.                 'label' => 'Estatus',
  106.                 'required' => true,
  107.                 'choices'  => [
  108.                     'Pendiente' => 1,
  109.                     'En Proceso' => 2,
  110.                     'Atendido' => 3,
  111.                 ],
  112.                 'attr' => ['class' => 'form-control form-control-sm'],
  113.                 'constraints' => [
  114.                     new NotBlank(['message' => 'El campo no debe estar vacío.']),
  115.                 ]
  116.             ])
  117.             //->add('usuario')
  118.             ->add('usuario'EntityType::class, [
  119.                 'label' => 'Resguardatario',
  120.                 'required' => true,
  121.                 'class' => Usuario::class,
  122.                 'attr' => [
  123.                     'class' => 'form-control form-control-sm'
  124.                 ],
  125.                 'constraints' => [
  126.                     new NotBlank(['message' => 'El campo no debe estar vacío.']),
  127.                 ],
  128.                 'query_builder' => function(EntityRepository $entityRepository) use ($options) {
  129.                     /** @var Usuario $user */
  130.                     $user $this->token->getToken()->getUser();
  131.                     $query $entityRepository->createQueryBuilder('u');
  132.                     if (!$options['unidad']) {
  133.                         $query->andWhere('u.unidad = :unidad');
  134.                         $query->setParameter('unidad'$user->getUnidad());
  135.                     }
  136.                     $query->orderBy('u.nombre''ASC');
  137.                     return $query;
  138.                 }
  139.             ])
  140.             //->add('ubicacion')
  141.             ->add('ubicacion'EntityType::class, [
  142.                 'label' => 'Ubicación',
  143.                 'required' => true,
  144.                 'class' => Ubicacion::class,
  145.                 'attr' => [
  146.                     'class' => 'form-control form-control-sm'
  147.                 ],
  148.                 'constraints' => [
  149.                     new NotBlank(['message' => 'El campo no debe estar vacío.']),
  150.                 ],
  151.                 'query_builder' => function(EntityRepository $entityRepository) use ($options) {
  152.                     /** @var Usuario $user */
  153.                     $user $this->token->getToken()->getUser();
  154.                     $query $entityRepository->createQueryBuilder('a');
  155.                     if (!$options['unidad']) {
  156.                         $query->andWhere('a.unidad = :unidad');
  157.                         $query->setParameter('unidad'$user->getUnidad());
  158.                     }
  159.                     $query->orderBy('a.area''ASC');
  160.                     return $query;
  161.                 }
  162.             ])
  163.             //->add('gestor')
  164.             ->add('gestor'EntityType::class, [
  165.                 'label' => 'Resguardatario1111',
  166.                 'class' => Usuario::class,
  167.                 'attr' => [
  168.                     'class' => 'form-control form-control-sm'
  169.                 ],
  170.                 'query_builder' => function(EntityRepository $entityRepository) use ($options) {
  171.                     /** @var Usuario $user */
  172.                     $user $this->token->getToken()->getUser();
  173.                     $query $entityRepository->createQueryBuilder('u');
  174.                     if (!$options['unidad']) {
  175.                         $query->andWhere('u.unidad = :unidad');
  176.                         $query->setParameter('unidad'$user->getUnidad());
  177.                     }
  178.                     $query->orderBy('u.nombre''ASC');
  179.                     return $query;
  180.                 }
  181.             ])
  182.         ;
  183.     }
  184.     public function configureOptions(OptionsResolver $resolver): void
  185.     {
  186.         $resolver->setDefaults([
  187.             'data_class' => Solicitud::class,
  188.             'unidad' => false,
  189.         ]);
  190.     }
  191.     //Para subir formulario
  192. }