Commit 26d06cf947bfa7c19b92d9708c6adcd7d10f3f5a
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
Showing
5 changed files
with
220 additions
and
9 deletions
Show diff stats
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">×</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 | +} | ... | ... |