src/Form/Frontend/InscripcionParejaType.php line 115

Open in your IDE?
  1. <?php
  2. namespace App\Form\Frontend;
  3. use Symfony\Component\Form\AbstractType;
  4. use Symfony\Component\Form\FormBuilderInterface;
  5. use Doctrine\ORM\EntityRepository;
  6. use App\DBAL\Backend\EnumTurnoHorarioType as EnumTurnoHorarioType;
  7. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  8. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  9. use Symfony\Component\Form\Extension\Core\Type\FileType;
  10. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  11. use Symfony\Component\Form\Extension\Core\Type\IntegerType;
  12. use Symfony\Component\Validator\Constraints as Assert;
  13. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  14. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  15. use Symfony\Component\Form\Extension\Core\Type\TextType;
  16. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  17. use Doctrine\Persistence\ManagerRegistry;
  18. use App\Entity\Backend\Tarifa;
  19. use App\Entity\Backend\Categoria;
  20. use App\Util\UtilInscritos;
  21. class InscripcionParejaType extends AbstractType {
  22.     private $em;
  23.     private $utilInscritos;
  24.     //AƱadimos el EntityManager para poder ir a la BD y traernos las barra-categorias disponibles de esa competicion, para evitar fallos de validacion en el formulario
  25.     public function __construct(ManagerRegistry $emUtilInscritos $utilInscritos){
  26.         $this->em $em;
  27.         $this->utilInscritos $utilInscritos;
  28.     }
  29.     public function buildForm(FormBuilderInterface $builder, array $options) {
  30.         $idc $options['attr']['competicion']->getId();
  31.         $permitirExtranjeros $options['attr']['competicion']->getpermitirExtranjeros() ? "-andEnglish" "";
  32.         $builder
  33.                 ->add('save'SubmitType::class, array('label' => 'competicion.inscritos.continue''translation_domain' => 'FrontendBundle''attr' => array('class' => 'ui big blue fluid circular disabled button')))
  34.                 ->add('nombre_jugador1'TextType::class, array('required' => true'mapped' => false'label' => 'competicion.inscritos.name' $permitirExtranjeros'translation_domain' => 'FrontendBundle''attr' => array('class' => 'jugador''disabled' => 'disabled')))
  35.                 ->add('nombre_jugador2'TextType::class, array('required' => true'mapped' => false'label' => 'competicion.inscritos.name' $permitirExtranjeros'translation_domain' => 'FrontendBundle''attr' => array('class' => 'jugador''disabled' => 'disabled')))
  36.                 ->add('licencia1'TextType::class, array('required' => true'mapped' => false'attr' => array('class' => 'prompt licencia''autocomplete' => 'off'), 'label' => 'competicion.inscritos.licencia' $permitirExtranjeros'translation_domain' => 'FrontendBundle'))
  37.                 ->add('licencia2'TextType::class, array('required' => true'mapped' => false'attr' => array('class' => 'prompt licencia''autocomplete' => 'off'), 'label' => 'competicion.inscritos.licencia' $permitirExtranjeros'translation_domain' => 'FrontendBundle'))
  38.                 ->add('tarifa_select1'EntityType::class, array('attr' => array('class' => 'tarifa''disabled' => 'disabled'),
  39.                     'label' => 'competicion.inscritos.fare' $permitirExtranjeros,
  40.                     'translation_domain' => 'FrontendBundle',
  41.                     'required' => true,
  42.                     'mapped' => false,
  43.                     'class' => Tarifa::class,
  44.                     'placeholder' => 'competicion.inscritos.fare-empty' $permitirExtranjeros,
  45.                     'query_builder' => function (EntityRepository $e) use ($idc) {
  46.                         $now = new \DateTime('now');
  47.                         return $e->createQueryBuilder('a')
  48.                         ->innerJoin('Backend:Competicion''c''WITH''c.id = a.competicion')
  49.                         ->innerJoin('Backend:Club''cl''WITH''c.club = cl.id')
  50.                         ->innerJoin('Backend:Timezone''t''WITH''t.id = cl.timezone')
  51.                         ->where('a.competicion = :competicion')
  52.                         ->andWhere("a.inicio IS NULL OR CONVERT_TZ(a.inicio, t.nombre, '" date_default_timezone_get() . "') <= :now")
  53.                         ->andWhere("a.fin IS NULL OR CONVERT_TZ(a.fin, t.nombre, '"date_default_timezone_get() . "') >= :now")
  54.                         ->setParameter('now'$now)
  55.                         ->setParameter('competicion'$idc);
  56.                     }
  57.                 ))
  58.                 ->add('tarifa_select2'EntityType::class, array('attr' => array('class' => 'tarifa''disabled' => 'disabled'),
  59.                     'label' => 'competicion.inscritos.fare' $permitirExtranjeros,
  60.                     'translation_domain' => 'FrontendBundle',
  61.                     'required' => true,
  62.                     'mapped' => false,
  63.                     'class' => Tarifa::class,
  64.                     'placeholder' => 'competicion.inscritos.fare-empty' $permitirExtranjeros,
  65.                     'query_builder' => function (EntityRepository $e) use ($idc) {
  66.                         $now = new \DateTime('now');
  67.                         return $e->createQueryBuilder('a')
  68.                         ->innerJoin('Backend:Competicion''c''WITH''c.id = a.competicion')
  69.                         ->innerJoin('Backend:Club''cl''WITH''c.club = cl.id')
  70.                         ->innerJoin('Backend:Timezone''t''WITH''t.id = cl.timezone')
  71.                         ->where('a.competicion = :competicion')
  72.                         ->andWhere("a.inicio IS NULL OR CONVERT_TZ(a.inicio, t.nombre, '" date_default_timezone_get() . "') <= :now")
  73.                         ->andWhere("a.fin IS NULL OR CONVERT_TZ(a.fin, t.nombre, '"date_default_timezone_get() . "') >= :now")
  74.                         ->setParameter('now'$now)
  75.                         ->setParameter('competicion'$idc);
  76.                     }
  77.                 ))
  78.                 ->add('email'EmailType::class, array('label' => 'competicion.inscritos.email''translation_domain' => 'FrontendBundle''mapped' => false'required' => true'attr' => array('data-help' => 'competicion.inscritos.email-help''disabled' => 'disabled''class' => 'form_email')))
  79.                 ->add('observaciones'TextareaType::class, array('label' => 'competicion.inscritos.annotation' $permitirExtranjeros'translation_domain' => 'FrontendBundle''required' => false'attr' => array('maxlength' => 100'rows' => 7)))
  80.                 ->add('id1'HiddenType::class, array('mapped' => false))
  81.                 ->add('id2'HiddenType::class, array('mapped' => false))
  82.                 ->add('categoria1'HiddenType::class, array('mapped' => false))
  83.                 ->add('categoria2'HiddenType::class, array('mapped' => false))
  84.                 ->add('tarifa1'HiddenType::class, array('required' => true'mapped' => false))
  85.                 ->add('tarifa2'HiddenType::class, array('required' => true'mapped' => false))
  86.                 ->add('sgCliente1'HiddenType::class, array('mapped' => false))
  87.                 ->add('sgCliente2'HiddenType::class, array('mapped' => false))
  88.                 ->add('documentoHcp1'FileType::class, array('label' => 'competicion.inscritos.document' $permitirExtranjeros'translation_domain' => 'FrontendBundle''mapped' => false'required' => false'attr' => array('class' => 'documentoHcp''accept' => "application/pdf"'data-help' => 'competicion.inscritos.document-help' $permitirExtranjeros'disabled' => 'disabled')))
  89.                 ->add('documentoHcp2'FileType::class, array('label' => 'competicion.inscritos.document' $permitirExtranjeros'translation_domain' => 'FrontendBundle''mapped' => false'required' => false'attr' => array('class' => 'documentoHcp''accept' => "application/pdf"'data-help' => 'competicion.inscritos.document-help' $permitirExtranjeros'disabled' => 'disabled')))
  90.                 ->add('telefono_jugador1'TextType::class, array('required' => false'mapped' => false'label' => 'competicion.inscritos.phone''translation_domain' => 'FrontendBundle''attr' => array('disabled' => 'disabled''class' => 'tlfnJug phone-input''data-help' => 'competicion.inscritos.phone-help' $permitirExtranjeros)))
  91.                 ->add('tlfnPrefix1'HiddenType::class, array('mapped' => false'attr' => array('class' => 'phone-prefix-input')))
  92.                 ->add('telefono_jugador2'TextType::class, array('required' => false'mapped' => false'label' => 'competicion.inscritos.phone''translation_domain' => 'FrontendBundle''attr' => array('disabled' => 'disabled''class' => 'tlfnJug phone-input''data-help' => 'competicion.inscritos.phone-help' $permitirExtranjeros)))
  93.                 ->add('tlfnPrefix2'HiddenType::class, array('mapped' => false'attr' => array('class' => 'phone-prefix-input')))
  94.         ;
  95.         if (count(($options['attr']['competicion']->getVouchers())) > 0) {
  96.             $builder->add('voucher''text', array('mapped' => false'required' => false'attr' => array('class' => 'form-control')));
  97.         }
  98.         if (!$options['attr']['competicion']->getBarraSalida()) {
  99.             $builder->add('categoria_select1'EntityType::class, array('attr' => array('class' => 'categoria''disabled' => 'disabled'),
  100.                         'label' => 'competicion.inscritos.category' $permitirExtranjeros,
  101.                         'translation_domain' => 'FrontendBundle',
  102.                     'mapped' => false,
  103.                     'required' => true,
  104.                     'class' => Categoria::class,
  105.                         'placeholder' => 'competicion.inscritos.category-empty' $permitirExtranjeros,
  106.                     'query_builder' => function(EntityRepository $e) use ($idc) {
  107.                         return $e->createQueryBuilder('a')
  108.                                 ->where('a.competicion = :competicion')
  109.                                 ->setParameter('competicion'$idc);
  110.                     }
  111.                 ))
  112.                 ->add('categoria_select2'EntityType::class, array('attr' => array('class' => 'categoria''disabled' => 'disabled'),
  113.                         'label' => 'competicion.inscritos.category' $permitirExtranjeros,
  114.                         'translation_domain' => 'FrontendBundle',
  115.                     'mapped' => false,
  116.                     'required' => true,
  117.                     'class' => Categoria::class,
  118.                         'placeholder' => 'competicion.inscritos.category-empty' $permitirExtranjeros,
  119.                     'query_builder' => function(EntityRepository $e) use ($idc) {
  120.                         return $e->createQueryBuilder('a')
  121.                                 ->where('a.competicion = :competicion')
  122.                                 ->setParameter('competicion'$idc);
  123.                     }
  124.             ));
  125.         } else {
  126.             $builder->add('barra1'ChoiceType::class, array('attr' => ['class' => 'barraSalida barraSalida1 '], //el espacio posterior es necesario
  127.                         'label' => 'competicion.inscritos.tee' $permitirExtranjeros,
  128.                         'translation_domain' => 'FrontendBundle',
  129.                         'mapped' => false,
  130.                         'required' => false,
  131.                         'empty_data' => 'competicion.inscritos.tee-empty' $permitirExtranjeros,
  132.                         'placeholder' => 'competicion.inscritos.tee-empty' $permitirExtranjeros,
  133.                         'choices' => $this->utilInscritos->barrasCategorias($idc)     //nos traemos los barra-categoria de la competicion
  134.                 ))
  135.                     ->add('barra2'ChoiceType::class, array('attr' => ['class' => 'barraSalida barraSalida2 '],  //el espacio posterior es necesario
  136.                         'label' => 'competicion.inscritos.tee' $permitirExtranjeros,
  137.                         'translation_domain' => 'FrontendBundle',
  138.                         'mapped' => false,
  139.                         'required' => true,
  140.                         'empty_data' => 'competicion.inscritos.tee-empty' $permitirExtranjeros,
  141.                         'placeholder' => 'competicion.inscritos.tee-empty' $permitirExtranjeros,
  142.                         'choices' => $this->utilInscritos->barrasCategorias($idc)     //nos traemos los barra-categoria de la competicion
  143.             ));
  144.         }
  145.         if (count(($options['attr']['competicion']->getVouchers())) > 0) {
  146.             $builder->add('voucher''text', array('mapped' => false'required' => false'attr' => array('class' => 'form-control')));
  147.         }
  148.         //Se cambia segun tarea NEX-1447-5
  149.         //Pablo 21/04/2022: Se elimina la peticion de documentos FLP para FGM
  150. //        if (strpos($options['attr']['org'], "CM00") !== false) {
  151. //            $builder
  152. //                    ->add('documentoCovid1', 'file', array('label' => "Adjuntar PDF", 'mapped' => false, 'required' => false, 'attr' => array('class' => 'documentoCovid', 'accept' => "application/pdf")))
  153. //                    ->add('formCompleto1', 'checkbox', array('label' => "He completado y revisado el formulario", 'mapped' => false, 'required' => false, 'attr' => array('class' => 'formCompleto')))
  154. //                    ->add('documentoCovid2', 'file', array('label' => "Adjuntar PDF", 'mapped' => false, 'required' => false, 'attr' => array('class' => 'documentoCovid', 'accept' => "application/pdf")))
  155. //                    ->add('formCompleto2', 'checkbox', array('label' => "He completado y revisado el formulario", 'mapped' => false, 'required' => false, 'attr' => array('class' => 'formCompleto')));
  156. //        }
  157.         //solo mostramos turno si hay plazas definidas
  158.         if (($options['attr']['competicion']->getPlazasManana() > 0) || ($options['attr']['competicion']->getPlazasTarde() > 0)) {
  159.             $dispManana $options['attr']['dispManana'];   //las plazas que hay vacantes aun (totales menos las usadas)
  160.             $dispTarde $options['attr']['dispTarde'];
  161.             if (($dispManana >= 2) && ($dispTarde >= 2)) {
  162.                 $builder->add('turno'ChoiceType::class, array('choices' => EnumTurnoHorarioType::getSmallChoices(), 'expanded' => false'mapped' => false'required' => true'attr' => array('class' => 'form-control')));
  163.             } elseif (($dispManana >= 2) && ($dispTarde 1)) {
  164.                 $builder->add('turno'ChoiceType::class, array('choices' => EnumTurnoHorarioType::getMananaChoices(), 'expanded' => false'mapped' => false'required' => true'attr' => array('class' => 'form-control')));
  165.             } elseif (($dispManana 1) && ($dispTarde >= 2)) {
  166.                 $builder->add('turno'ChoiceType::class, array('choices' => EnumTurnoHorarioType::getTardeChoices(), 'expanded' => false'mapped' => false'required' => true'attr' => array('class' => 'form-control')));
  167.             }
  168.         }
  169.         // ->add('captcha', 'captcha', array('width' => 240, 'height' => 60, 'max_front_lines' => 1, 'max_behind_lines' => 3, 'distortion' => true, 'quality' => 150, 'length' => 6, 'interpolation' => true, 'background_color' => [245, 245, 245]));
  170.     }
  171. //    public function getDefaultOptions() {
  172. //        return array(
  173. //            'data_class' => 'App\Entity\Backend\Competicion',
  174. //            'id' => null
  175. //        );
  176. //    }
  177.     public function getName() {
  178.         return $this->getBlockPrefix();
  179.     }
  180.     public function getBlockPrefix(): string {
  181.         return 'inscripcion_pareja';
  182.     }
  183. }