Commit 26d06cf947bfa7c19b92d9708c6adcd7d10f3f5a

Authored by Wilmer Ramones
1 parent cd280b1e95
Exists in master

comenzado a crear la vista solicitando los tutores junto con el AJAX que busca en la Base de datos

app/Resources/views/solicitudes/ascenso.html.twig
... ... @@ -45,11 +45,45 @@
45 45 </div>
46 46  
47 47 </div>
  48 +
  49 + <!-- Ventanas Modales -->
  50 +
  51 + <!-- Ventana de buscar adscripcion -->
  52 + <div class="modal fade bs-example-modal-sm" id="buscarTutores" tabindex="-1" role="dialog">
  53 + <div class="modal-dialog" role="document">
  54 + <div class="modal-content">
  55 + <div class="modal-header">
  56 + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  57 + <h4 class="modal-title" id="myModalLabel">El tutor debe tener la escala de {{ nueva_escala.nombre }} o superior</h4>
  58 + </div>
  59 + <div class="modal-body">
  60 +
  61 + <h2>Introduzla la cedula y presione buscar</h2>
  62 + {% form_theme tutorForm 'bootstrap_3_layout.html.twig' %}
  63 +
  64 +
  65 +
  66 + {{ form_start(tutorForm) }}
  67 +
  68 + {{ form_widget(tutorForm) }}
  69 + {{ form_end(tutorForm) }}
  70 +
  71 + </div>
  72 + <div class="modal-footer">
  73 + <button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
  74 + <button class="btn btn-primary" type="submit">Buscar Adscripcion</button>
  75 + </div>
  76 + </div>
  77 + </div>
  78 + </div><!-- Fin de la ventanta modal buscar adscripcion -->
48 79  
49 80  
50 81 {% endblock %}
51 82  
52 83  
  84 +
  85 +
  86 +
53 87  
54 88  
55 89 {% block javascripts %}
... ... @@ -59,7 +93,40 @@
59 93  
60 94 $('.esc_oposicion')[this.checked ? "show" : "hide"]();
61 95  
62   - });
  96 + });
  97 +
  98 + $( "#tutores_ascenso_buscarTutor" ).click(function() {
  99 + if($("#tutores_ascenso_cedulaPasaporte").val() == ""){
  100 + alert("cedula no puede estar vacia");
  101 + return false;
  102 + }
  103 + $.ajax({
  104 + method: "GET",
  105 + url: "{{ url('ajax_buscar_tutor') }}",
  106 + async: true,
  107 + cache: false,
  108 + data: ({cedula: $("#tutores_ascenso_cedulaPasaporte").val(), documento: $("#tutores_ascenso_idDocumentoIdentidad").val()}),
  109 + success: function (data) {
  110 +
  111 + var posts = JSON.parse(data.posts);
  112 + console.log(posts);
  113 + if (posts == ""){
  114 + $('.oculto').removeClass('hidden');
  115 + }else{
  116 + $('#ascenso_tutores_asignados').append($('<option>', {
  117 + value: 1,
  118 + text: 'My option'
  119 + }));
  120 + }
  121 +
  122 + },
  123 + error: function (XMLHttpRequest, textStatus, errorThrown) {
  124 + console.log(errorThrown);
  125 +
  126 + }
  127 +
  128 + });
  129 + });
63 130  
64 131 </script>
65 132 {% endblock %}
... ...
src/AppBundle/Controller/AjaxController.php
... ... @@ -35,7 +35,7 @@ class AjaxController extends Controller {
35 35 * @Method({"GET"})
36 36 */
37 37 public function contadorAction(Request $request){
38   - if($request->isXmlHttpRequest()){
  38 + if($request->isXmlHttpRequest()){
39 39 $encoders = array(new JsonEncoder());
40 40 $normalizers = array(new ObjectNormalizer());
41 41  
... ... @@ -71,4 +71,40 @@ class AjaxController extends Controller {
71 71  
72 72 }
73 73  
  74 +
  75 + /**
  76 + * @Route("/ajax/buscar_tutor", name="ajax_buscar_tutor")
  77 + * @Method({"GET"})
  78 + */
  79 + public function buscarTutorAction(Request $request){
  80 + if($request->isXmlHttpRequest()){
  81 + $encoders = array(new JsonEncoder());
  82 + $normalizers = array(new ObjectNormalizer());
  83 +
  84 + $serializer = new Serializer($normalizers, $encoders);
  85 + $cedula = filter_input(INPUT_GET, 'cedula', FILTER_SANITIZE_SPECIAL_CHARS);
  86 + $documento = filter_input(INPUT_GET, 'documento', FILTER_SANITIZE_SPECIAL_CHARS);
  87 +
  88 +
  89 + $repository = $this->getDoctrine()
  90 + ->getRepository('AppBundle:TutoresAscenso');
  91 + $query = $repository->createQueryBuilder('p')
  92 + ->where('p.cedulaPasaporte = :cedula')
  93 + ->andWhere('p.institucion = :documento')
  94 + ->setParameters(array('cedula'=> $cedula, 'documento' => $documento))
  95 + ->getQuery();
  96 +
  97 + $posts = $query->getResult();
  98 +
  99 + $response = new JsonResponse();
  100 + $response->setStatusCode(200);
  101 + $response->setData(array(
  102 + 'response' => 'success',
  103 + 'posts' => $serializer->serialize($posts, 'json')
  104 + ));
  105 + return $response;
  106 + }
  107 +
  108 + }
  109 +
74 110 }
... ...
src/AppBundle/Controller/AscensoController.php
... ... @@ -122,8 +122,9 @@ class AscensoController extends Controller
122 122  
123 123  
124 124 $form = $this->createForm('AppBundle\Form\AscensoType');
  125 + $tutorForm = $this->createForm('AppBundle\Form\TutoresAscensoType');
125 126 $form->handleRequest($request);
126   -
  127 +
127 128  
128 129 if ($form->isSubmitted() && $form->isValid()) {
129 130  
... ... @@ -245,6 +246,7 @@ class AscensoController extends Controller
245 246 'solicitudes/ascenso.html.twig',
246 247 array(
247 248 'form' => $form->createView(),
  249 + 'tutorForm' => $tutorForm->createView(),
248 250 'ultima_escala' => $escala,
249 251 'nueva_escala' => $nueva_escala,
250 252 'antiguedad' => $formalizarTiempo
... ...
src/AppBundle/Form/AscensoType.php
... ... @@ -15,7 +15,7 @@ use Symfony\Component\Validator\Constraints\NotBlank;
15 15 use Symfony\Component\Form\AbstractType;
16 16 use Symfony\Component\Form\FormBuilderInterface;
17 17 use Symfony\Component\Form\Extension\Core\Type\TextType;
18   -use Symfony\Component\Form\Extension\Core\Type\BirthdayType;
  18 +use Symfony\Component\Form\Extension\Core\Type\ButtonType;
19 19 use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
20 20 use Symfony\Component\Form\Extension\Core\Type\FileType;
21 21 use Symfony\Component\Form\Extension\Core\Type\SubmitType;
... ... @@ -111,7 +111,20 @@ class AscensoType extends AbstractType
111 111 ->add('tutores_asignados', EntityType::class, array(
112 112 'placeholder' => 'Añadir Tutores...',
113 113 'class' => 'AppBundle:TutoresAscenso',
114   - 'label' => false
  114 + 'label' => false,
  115 + 'multiple' => true,
  116 + 'attr' => array(
  117 + 'disabled' => 'true',
  118 + )
  119 + ))
  120 +
  121 + ->add('añadir_tutor', ButtonType::class, array(
  122 + 'label' => 'Añadir Tutor',
  123 + 'attr' => array(
  124 + 'class' => 'btn btn-success btn-sm',
  125 + 'data-toggle' => "modal",
  126 + 'data-target' => "#buscarTutores"
  127 + )
115 128 ))
116 129  
117 130  
... ... @@ -165,10 +178,10 @@ class AscensoType extends AbstractType
165 178  
166 179  
167 180  
168   - ->add('send', SubmitType::class, array(
169   - 'label' => 'Crear Solicitud de Ascenso',
170   - 'attr' => array('class' => 'btn btn-success btn-block')
171   - ))
  181 + ->add('send', SubmitType::class, array(
  182 + 'label' => 'Crear Solicitud de Ascenso',
  183 + 'attr' => array('class' => 'btn btn-success btn-block')
  184 + ))
172 185  
173 186  
174 187 ;
... ...
src/AppBundle/Form/TutoresAscensoType.php
... ... @@ -0,0 +1,93 @@
  1 +<?php
  2 +
  3 +namespace AppBundle\Form;
  4 +
  5 +use Symfony\Component\Form\AbstractType;
  6 +use Symfony\Component\Form\FormBuilderInterface;
  7 +use Symfony\Component\OptionsResolver\OptionsResolver;
  8 +use Symfony\Component\Form\Extension\Core\Type\EmailType;
  9 +use Symfony\Component\Form\Extension\Core\Type\TextType;
  10 +use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  11 +use Symfony\Component\Form\Extension\Core\Type\ButtonType;
  12 +
  13 +
  14 +class TutoresAscensoType extends AbstractType
  15 +{
  16 + /**
  17 + * @param FormBuilderInterface $builder
  18 + * @param array $options
  19 + */
  20 + public function buildForm(FormBuilderInterface $builder, array $options)
  21 + {
  22 + $builder
  23 + ->add('idDocumentoIdentidad', EntityType::class, array(
  24 + 'label' => false,
  25 + 'placeholder' => 'Tipo Documento...',
  26 + 'class' => 'AppBundle:DocumentoIdentidad',
  27 + 'attr' => array(
  28 + 'class' => 'col-lg-4',
  29 + )
  30 + ))
  31 + ->add('cedulaPasaporte', TextType::class, array(
  32 + 'label' => false,
  33 + 'attr' => array(
  34 + 'placeholder' => 'introudzca la cédula',
  35 + 'class' => 'col-lg-4 form-control',
  36 + )
  37 + ))
  38 +
  39 + ->add('buscarTutor', ButtonType::class, array(
  40 + 'label' => 'Añadir',
  41 + 'attr' => array('class' => 'btn btn-primary col-lg-4'),
  42 + ))
  43 +
  44 + ->add('etiqueta', TextType::class, array(
  45 + 'label' => false,
  46 + 'data' => "Tutor no Encontrado, por favor Registre al nuevo Tutor",
  47 + 'attr' => array(
  48 + 'placeholder' => 'Nombres del tutor...',
  49 + 'class' => 'alert alert-warning col-lg-12 hidden oculto',
  50 + )
  51 + ))
  52 +
  53 +
  54 + ->add('nombres', TextType::class, array(
  55 + 'label' => 'nombres',
  56 + 'label_attr' => array('class' => 'hidden oculto'),
  57 + 'attr' => array(
  58 + 'class' => 'col-lg-6 form-control hidden oculto',
  59 + )
  60 + ))
  61 +
  62 + ->add('apellidos', TextType::class, array(
  63 + 'label' => false,
  64 + 'attr' => array(
  65 + 'placeholder' => 'apellidos del tutor...',
  66 + 'class' => 'col-lg-3 form-control hidden oculto',
  67 + )
  68 + ))
  69 + /*->add('correoElectronico', EmailType::class, array(
  70 + 'label' => false,
  71 + 'attr' => array(
  72 + 'placeholder' => 'introudzca correo Electrónico del tutor',
  73 + 'class' => 'col-lg-6 form-group',
  74 + )
  75 + ))
  76 + ->add('nombres')
  77 + ->add('apellidos')
  78 + ->add('institucion')
  79 + ->add('idEscala')*/
  80 + //->add('ascenso')
  81 + ;
  82 + }
  83 +
  84 + /**
  85 + * @param OptionsResolver $resolver
  86 + */
  87 + public function configureOptions(OptionsResolver $resolver)
  88 + {
  89 + $resolver->setDefaults(array(
  90 + 'data_class' => 'AppBundle\Entity\TutoresAscenso'
  91 + ));
  92 + }
  93 +}
... ...