src/Form/Frontend/InscripcionEquipoType.php line 91

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\EmailType;
  10. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  11. use Symfony\Component\Form\Extension\Core\Type\IntegerType;
  12. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  13. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  14. use Symfony\Component\Form\Extension\Core\Type\TextType;
  15. use Doctrine\Persistence\ManagerRegistry;
  16. use App\Entity\Backend\Tarifa;
  17. use App\Entity\Backend\Categoria;
  18. use App\Util\UtilInscritos;
  19. class InscripcionEquipoType extends AbstractType {
  20.     private $em;
  21.     private $utilInscritos;
  22.     //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
  23.     public function __construct(ManagerRegistry $emUtilInscritos $utilInscritos){
  24.         $this->em $em;
  25.         $this->utilInscritos $utilInscritos;
  26.     }
  27.     public function buildForm(FormBuilderInterface $builder, array $options) {
  28.         $idc $options['attr']['competicion']->getId();
  29.         $permitirExtranjeros $options['attr']['competicion']->getpermitirExtranjeros() ? "-andEnglish" "";
  30.         $builder
  31.                 ->add('save'SubmitType::class, array('label' => 'Continuar''attr' => array('class' => 'ui blue circular disabled button')))
  32.                 ->add('email'EmailType::class, array('label' => 'E-mail''mapped' => false'required' => true'attr' => array('data-help' => 'Se activa tras añadir licencias correctas.''disabled' => 'disabled')))
  33.                 ->add('observaciones'TextareaType::class, array('label' => 'competicion.inscritos.annotation' $permitirExtranjeros'translation_domain' => 'FrontendBundle''required' => false'attr' => array('maxlength' => 100'rows' => 7)))
  34.                 ->add("teamname"TextType::class, array('required' => false'mapped' => false'label' => 'competicion.inscritos.teamname' $permitirExtranjeros'translation_domain' => 'FrontendBundle'))
  35.         ;
  36.         if (count(($options['attr']['competicion']->getVouchers())) > 0) {
  37.             $builder->add('voucher'TextType::class, array('mapped' => false'required' => false'attr' => array('class' => 'form-control')));
  38.         }
  39.         for ($i 1$i <= $options["attr"]["jugadores"]; $i++) {
  40.             $required true;
  41.             if (!$options["attr"]['competicion']->getEstricto() && ($i == $options["attr"]["competicion"]->getJugadores())) {
  42.                 $required false;
  43.             }
  44.             $builder
  45.                     ->add("nombre_jugador$i"TextType::class, array('required' => $required'mapped' => false'label' => 'competicion.inscritos.name' $permitirExtranjeros'translation_domain' => 'FrontendBundle''attr' => array('class' => 'jugador''disabled' => 'disabled')))
  46.                     ->add("licencia$i"TextType::class, array('required' => $required'mapped' => false'attr' => array('placeholder' => "Licencia"'class' => 'prompt licencia''autocomplete' => 'off'), 'label' => 'competicion.inscritos.licencia' $permitirExtranjeros'translation_domain' => 'FrontendBundle'))
  47.                     ->add("tarifa_select$i"EntityType::class, array('attr' => array('class' => "tarifa tarifa$i"'disabled' => 'disabled'),
  48.                         'label' => 'competicion.inscritos.fare' $permitirExtranjeros,
  49.                         'translation_domain' => 'FrontendBundle'
  50.                         'required' => $required,
  51.                         'mapped' => false,
  52.                         'class' => Tarifa::class,
  53.                         'placeholder' => 'competicion.inscritos.fare-empty' $permitirExtranjeros,
  54.                         'query_builder' => function (EntityRepository $e) use ($idc) {
  55.                             $now = new \DateTime('now');
  56.                             return $e->createQueryBuilder('a')
  57.                             ->innerJoin('Backend:Competicion''c''WITH''c.id = a.competicion')
  58.                             ->innerJoin('Backend:Club''cl''WITH''c.club = cl.id')
  59.                             ->innerJoin('Backend:Timezone''t''WITH''t.id = cl.timezone')
  60.                             ->where('a.competicion = :competicion')
  61.                             ->andWhere("a.inicio IS NULL OR CONVERT_TZ(a.inicio, t.nombre, '" date_default_timezone_get() . "') <= :now")
  62.                             ->andWhere("a.fin IS NULL OR CONVERT_TZ(a.fin, t.nombre, '"date_default_timezone_get() . "') >= :now")
  63.                             ->setParameter('now'$now)
  64.                             ->setParameter('competicion'$idc);
  65.                         }
  66.                     ))
  67.                     ->add("id$i"HiddenType::class, array('mapped' => false))
  68.                     ->add("categoria$i"HiddenType::class, array('mapped' => false))
  69.                     ->add("tarifa$i"HiddenType::class, array('mapped' => false))
  70.                     ->add("telefono_jugador$i"IntegerType::class, array('required' => false'mapped' => false'label' => 'Teléfono''attr' => array('class' => 'tlfnJug''data-help' => "Se usará para informarle sobre el campeonato""min-length" => 9)))
  71.                 ;
  72.                     
  73.             if (!$options['attr']['competicion']->getBarraSalida()) {
  74.                 $builder->add("categoria_select$i"EntityType::class, array('attr' => array('class' => 'categoria''disabled' => 'disabled'),
  75.                     'label' => 'competicion.inscritos.category' $permitirExtranjeros,
  76.                     'translation_domain' => 'FrontendBundle'
  77.                     'mapped' => false,
  78.                     'required' => $required,
  79.                     'class' => Categoria::class,
  80.                     'placeholder' => 'competicion.inscritos.category-empty' $permitirExtranjeros,
  81.                     'query_builder' => function (EntityRepository $e) use ($idc) {
  82.                         return $e->createQueryBuilder('a')
  83.                         ->where('a.competicion = :competicion')
  84.                         ->setParameter('competicion'$idc);
  85.                     }
  86.                 ));
  87.             } else {
  88.                 $builder
  89.                         ->add("barra$i"ChoiceType::class, array('attr' => ['class' => "barraSalida barraSalida$i "],    //el espacio posterior es necesario
  90.                             'label' => 'competicion.inscritos.tee' $permitirExtranjeros,
  91.                             'translation_domain' => 'FrontendBundle'
  92.                             'mapped' => false,
  93.                             'required' => true,
  94.                             'empty_data' => 'competicion.inscritos.tee-empty' $permitirExtranjeros,
  95.                             'placeholder' => 'competicion.inscritos.tee-empty' $permitirExtranjeros,
  96.                             'choices' => $this->utilInscritos->barrasCategorias($idc)     //nos traemos los barra-categoria de la competicion
  97.                 ));
  98.             }
  99.         }
  100.         //solo mostramos turno si hay plazas definidas
  101.         if (($options['attr']['competicion']->getPlazasManana() > 0) || ($options['attr']['competicion']->getPlazasTarde() > 0)) {
  102.             $dispManana $options['attr']['dispManana'];   //las plazas que hay vacantes aun (totales menos las usadas)
  103.             $dispTarde $options['attr']['dispTarde'];
  104.             if (($dispManana >= $options["attr"]["jugadores"]) && ($dispTarde >= $options["attr"]["jugadores"])) {
  105.                 $builder->add('turno'ChoiceType::class, array('choices' => EnumTurnoHorarioType::getSmallChoices(), 'expanded' => false'mapped' => false'required' => true'attr' => array('class' => 'form-control')));
  106.             } elseif (($dispManana >= $options["attr"]["jugadores"]) && ($dispTarde 1)) {
  107.                 $builder->add('turno'ChoiceType::class, array('choices' => EnumTurnoHorarioType::getMananaChoices(), 'expanded' => false'mapped' => false'required' => true'attr' => array('class' => 'form-control')));
  108.             } elseif (($dispManana 1) && ($dispTarde >= $options["attr"]["jugadores"])) {
  109.                 $builder->add('turno'ChoiceType::class, array('choices' => EnumTurnoHorarioType::getTardeChoices(), 'expanded' => false'mapped' => false'required' => true'attr' => array('class' => 'form-control')));
  110.             }
  111.         }
  112.         // ->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]));
  113.     }
  114.     public function getDefaultOptions() {
  115.         return array(
  116.             'data_class' => 'App\Entity\Backend\Competicion',
  117.             'id' => null
  118.         );
  119.     }
  120.     public function getName() {
  121.         return $this->getBlockPrefix();
  122.     }
  123.     public function getBlockPrefix(): string {
  124.         return 'inscripcion_equipo';
  125.     }
  126. }