Commit 1e8e3249f3d0abb67b57bf2011286f432836aafb

Authored by Wilmer
1 parent dd222cdb2b
Exists in master

creada a traves de los listeners el fomulario de envio de documentos rechazados,…

… se creo su servicio y solo muestra los que le faltan al docente; así como tambien se realizó el guardado
app/Resources/views/base_app.html.twig
@@ -191,6 +191,12 @@ @@ -191,6 +191,12 @@
191 191
192 }); 192 });
193 193
  194 + //boton para mostrarle al usuario que estamos esperando
  195 + $('.btn').on('click', function() {
  196 + var $this = $(this);
  197 + $this.button('loading');
  198 + });
  199 +
194 </script> 200 </script>
195 201
196 {% endblock %} 202 {% endblock %}
app/Resources/views/solicitudes/adscripcion_show.twig
@@ -125,8 +125,6 @@ @@ -125,8 +125,6 @@
125 </div> 125 </div>
126 126
127 </div> 127 </div>
128 - <form action="{{ path('cea_solicitudes_actualizar', { 'id': todo.adscripcion.id}) }}" method="POST"  
129 - name="rechazar">  
130 <div class="row"> 128 <div class="row">
131 129
132 <div class="col-md-6"> 130 <div class="col-md-6">
@@ -141,7 +139,7 @@ @@ -141,7 +139,7 @@
141 <div class="form-group"> 139 <div class="form-group">
142 <label for="username">Fecha de Ingreso UBV:</label> 140 <label for="username">Fecha de Ingreso UBV:</label>
143 <input type="date" class="form-control" id="username" name="primerApellido" 141 <input type="date" class="form-control" id="username" name="primerApellido"
144 - value="{{ todo.adscripcion.fechaIngreso|date('Y-m-d') }}"/> 142 + value="{{ todo.adscripcion.fechaIngreso|date('Y-m-d') }}" readonly/>
145 </div> 143 </div>
146 {% if todo.escalafones is not null %} 144 {% if todo.escalafones is not null %}
147 <div class="form-group"> 145 <div class="form-group">
@@ -189,73 +187,46 @@ @@ -189,73 +187,46 @@
189 <div class="form-group"> 187 <div class="form-group">
190 <label for="titulo">Título del Trabajo:</label> 188 <label for="titulo">Título del Trabajo:</label>
191 <input type="text" class="form-control" 189 <input type="text" class="form-control"
192 - value="{{ todo.adscripcion.tituloTrabajo }}"/> 190 + value="{{ todo.adscripcion.tituloTrabajo }}" readonly/>
193 </div> 191 </div>
194 {% endif %} 192 {% endif %}
195 193
196 </div> 194 </div>
197 </div> 195 </div>
198 <div class="col-md-5"> 196 <div class="col-md-5">
199 - <h3>Documentos Consignados</h3>  
200 - 197 + <h4>Documentos en <span style="color: red;">Rojo</span> (rechazados), en <span style="color: green;">verde</span> (aprobados)</h4>
201 <div class="widget-content"> 198 <div class="widget-content">
202 199
203 - {% for verificado in todo.documentosVerificados %} 200 + {% for verificado in todo.documentosVerificados | sort %}
204 {% if verificado.idServicio.id == servicio.id %} 201 {% if verificado.idServicio.id == servicio.id %}
205 - {% set extension = verificado.ubicacion | split('.') | last %}  
206 - <div {% if extension != "pdf" %}class="col-xs-6"{% else %}class="col-xs-12"{% endif %}>  
207 -  
208 - <div class="thumbnail">  
209 - {% if extension == "pdf" %}  
210 - {% if verificado.idTipoDocumentos.id <= 4 %}  
211 - <object type="application/pdf" data="{{asset('uploads/adscripcion/'~ verificado.ubicacion)}}" width="100%" height="300px"></object>  
212 - {% else %}  
213 - <object type="application/pdf" data="{{asset('uploads/ascenso/'~ verificado.ubicacion)}}" width="100%" height="300px"></object>  
214 - {% endif %}  
215 - {% else %}  
216 - {% if verificado.idTipoDocumentos.id <= 4 %}  
217 - <a href="{{ asset('uploads/adscripcion/'~ verificado.ubicacion) }}"  
218 - data-lightbox="adscripcion">  
219 - <img src="{{ asset('uploads/adscripcion/thumb/'~ verificado.ubicacion) }}"/>  
220 - </a>  
221 - {% else %}  
222 - <a href="{{ asset('uploads/ascenso/'~ verificado.ubicacion) }}"  
223 - data-lightbox="adscripcion">  
224 - <img src="{{ asset('uploads/ascenso/thumb/'~ verificado.ubicacion) }}"/>  
225 - </a>  
226 - {% endif %}  
227 - {% endif %}  
228 -  
229 - <div class="caption">  
230 - <p>{{ verificado.idTipoDocumentos.nombre }}</p>  
231 - {% if verificado.idEstatus.id == 2 or verificado.idEstatus.id == 3 %}  
232 - <div class="wrapper">  
233 - <label for="yes_radio{{ loop.index }}" class="yes-lbl"><i class="fa fa-check"></i>  
234 - </label>  
235 - <input type="radio" value="1" name="{{ verificado.idTipoDocumentos.identificador }}" class="yes_radio" id="yes_radio{{ loop.index }}" {% if verificado.idEstatus.id == 1 %} checked="checked" {% endif %}>  
236 - <label for="maybe_radio{{ loop.index }}" class="maybe-lbl">  
237 - <i class="fa fa-question"></i>  
238 - </label>  
239 - <input type="radio" value="" name="{{ verificado.idTipoDocumentos.identificador }}" class="maybe_radio" id="maybe_radio{{ loop.index }}" {% if verificado.idEstatus.id == 2 %} checked="checked" {% endif %} disabled>  
240 - <label for="no_radio{{ loop.index }}" class="no-lbl"><i  
241 - class="fa fa-close"></i></label><input type="radio" value="3"  
242 - name="{{ verificado.idTipoDocumentos.identificador }}"  
243 - class="no_radio"  
244 - id="no_radio{{ loop.index }}" {% if verificado.idEstatus.id == 3 %} checked="checked" {% endif %}>  
245 -  
246 - <div class="toggle"></div>  
247 - </div>  
248 - {% endif %}  
249 - </div>  
250 - {% endif %}  
251 - </div>  
252 -  
253 - </div> 202 + {% if verificado.idEstatus.id == 3 %}
  203 + {% if verificado.idTipoDocumentos.id <= 4 %}
  204 + <a style="color:red;" target="_blank" href="{{ asset('uploads/adscripcion/' ~ verificado.ubicacion) }}">{{ verificado.idTipoDocumentos.nombre }}</a><br>
  205 + {% else %}
  206 + <a style="color:red;" target="_blank" href="{{ asset('uploads/ascenso/' ~ verificado.ubicacion) }}">{{ verificado.idTipoDocumentos.nombre }}</a><br>
  207 + {% endif %}
  208 +
  209 + {% elseif verificado.idEstatus.id == 1 %}
  210 + {% if verificado.idTipoDocumentos.id <= 4 %}
  211 + <a style="color:green;" target="_blank" href="{{ asset('uploads/adscripcion/' ~ verificado.ubicacion) }}">{{ verificado.idTipoDocumentos.nombre }}</a><br>
  212 + {% else %}
  213 + <a style="color:green;" target="_blank" href="{{ asset('uploads/ascenso/' ~ verificado.ubicacion) }}">{{ verificado.idTipoDocumentos.nombre }}</a>
  214 + {% endif %}
  215 + {% else %}
  216 + {% if verificado.idTipoDocumentos.id <= 4 %}
  217 + <a target="_blank" style="color:yellow;" href="{{ asset('uploads/adscripcion/' ~ verificado.ubicacion) }}">{{ verificado.idTipoDocumentos.nombre }}</a><br>
  218 + {% else %}
  219 + <a style="color:yellow;" target="_blank" href="{{ asset('uploads/ascenso/' ~ verificado.ubicacion) }}">{{ verificado.idTipoDocumentos.nombre }}</a>
  220 + {% endif %}
  221 + {% endif %}
  222 + {% endif %}
254 223
255 {% endfor %} 224 {% endfor %}
256 225
257 -  
258 - 226 + {% form_theme form 'bootstrap_3_layout.html.twig' %}
  227 + {{ form_start(form, {'attr': {'novalidate': 'novalidate'}}) }}
  228 + {{ form_widget(form) }}
  229 + {{ form_end(form) }}
259 230
260 231
261 232
@@ -285,47 +256,14 @@ @@ -285,47 +256,14 @@
285 </div> 256 </div>
286 {% endif %} 257 {% endif %}
287 {% if servicio.idEstatus.id == 3 %} 258 {% if servicio.idEstatus.id == 3 %}
288 - <button type="submit" class="btn btn-success" id="aprobar" name="aprobar">Aprobar</button>  
289 - {% elseif servicio.idEstatus.id == 2 %}  
290 - <button type="submit" class="btn btn-success" id="aprobar" name="aprobar">Aprobar</button>  
291 - <a data-toggle="modal" data-target="#motivo_rechazo" class="btn btn-danger">Rechazar</a> 259 + <button type="submit" class="btn btn-success" id="actualizar" name="actualizar">Actualizar Adscripción</button>
292 {% endif %} 260 {% endif %}
293 261
294 262
295 - <!-- Modal -->  
296 - <div class="modal fade" id="motivo_rechazo" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">  
297 - <div class="modal-dialog" role="document">  
298 -  
299 - <div class="modal-content">  
300 - <div class="modal-header">  
301 - <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span  
302 - aria-hidden="true">&times;</span></button>  
303 - <h4 class="modal-title" id="myModalLabel">Rechazo de Solicitud</h4>  
304 - </div>  
305 -  
306 - <div class="modal-body">  
307 -  
308 -  
309 - <div class="form-group">  
310 - <label for="message-text" class="control-label">Mensaje:</label>  
311 - <textarea class="form-control" id="message-text" name="message-text"></textarea>  
312 - </div>  
313 -  
314 - </div>  
315 - <div class="modal-footer">  
316 - <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>  
317 - <button type="submit" class="btn btn-primary" name="rechazar" id="rechazar">Enviar  
318 - Correo  
319 - </button>  
320 - </div>  
321 - </div>  
322 -  
323 - </div>  
324 - </div>  
325 </div> 263 </div>
326 264
327 </div> 265 </div>
328 - </form> 266 +
329 {% endblock %} 267 {% endblock %}
330 268
331 269
app/config/services.yml
@@ -4,6 +4,8 @@ parameters: @@ -4,6 +4,8 @@ parameters:
4 # parameter_name: value 4 # parameter_name: value
5 5
6 services: 6 services:
7 -# service_name:  
8 -# class: AppBundle\Directory\ClassName  
9 -# arguments: ["@another_service_name", "plain_value", "%parameter_name%"] 7 + app.form.adscripcion_edit:
  8 + class: AppBundle\Form\AdscripcionEditType
  9 + arguments: ['@security.token_storage']
  10 + tags:
  11 + - { name: form.type }
src/AppBundle/Controller/AdscripcionController.php
@@ -578,20 +578,58 @@ class AdscripcionController extends Controller @@ -578,20 +578,58 @@ class AdscripcionController extends Controller
578 * Encuentra y muestra una entidad de tipo Adscripción para los docentes. 578 * Encuentra y muestra una entidad de tipo Adscripción para los docentes.
579 * 579 *
580 * @Route("/adscripcion_show/{id}", name="adscripcion_show") 580 * @Route("/adscripcion_show/{id}", name="adscripcion_show")
581 - * @Method("GET") 581 + * @Method({"GET", "POST"})
582 * 582 *
583 */ 583 */
584 - public function adscripcionShowAction(DocenteServicio $servicio) 584 + public function adscripcionShowAction(DocenteServicio $servicio, Request $request)
585 { 585 {
586 $em = $this->getDoctrine()->getManager(); 586 $em = $this->getDoctrine()->getManager();
587 $todo = $em->getRepository("AppBundle:RolInstitucion")->findOneById($servicio->getIdRolInstitucion()); 587 $todo = $em->getRepository("AppBundle:RolInstitucion")->findOneById($servicio->getIdRolInstitucion());
588 588
  589 + $form = $this->createForm('AppBundle\Form\AdscripcionEditType');
  590 +
  591 +
  592 +
  593 + $form->handleRequest($request);
  594 +
  595 +
  596 + if ($form->isSubmitted() && $form->isValid()) {
  597 +
  598 + foreach ($form->getData() as $key => $value) {
  599 +
  600 + //var_dump($key); exit;
  601 + $constancia = $form->get($key)->getData();
  602 + $nombre = md5(uniqid()).'.'.$constancia->guessExtension();
  603 + $constancia->move(
  604 + $this->container->getParameter('adscripcion_directory'),
  605 + $nombre
  606 + );
  607 + thumbnail($nombre, $this->container->getParameter('adscripcion_directory'), $this->container->getParameter('adscripcion_thumb_directory'));
  608 +
  609 + $documento = $this->getDoctrine()->getRepository("AppBundle:DocumentosVerificados")->findOneBy(array(
  610 + 'idRolInstitucion' => $servicio->getIdRolInstitucion()->getId(),
  611 + 'idTipoDocumentos' => $this->getDoctrine()->getRepository("AppBundle:TipoDocumentos")->findOneByIdentificador($key)->getId(),
  612 + 'idEstatus' => 3
  613 + ));
  614 +
  615 + $documento->setUbicacion($nombre);
  616 + $documento->setIdEstatus($this->getDoctrine()->getRepository("AppBundle:Estatus")->findOneById(2));
  617 + $em = $this->getDoctrine()->getManager();
  618 + $em->persist($documento);
  619 + $em->flush();
  620 + }
  621 +
  622 +
  623 +
  624 + return $this->redirect($this->generateUrl('adscripcion_show', array('id' => $servicio->getId())));
  625 + }
589 626
590 627
591 return $this->render('solicitudes/adscripcion_show.twig', array( 628 return $this->render('solicitudes/adscripcion_show.twig', array(
592 'servicio' => $servicio, 629 'servicio' => $servicio,
593 'servicio' => $servicio, 630 'servicio' => $servicio,
594 - 'todo' => $todo 631 + 'todo' => $todo,
  632 + 'form' => $form->createView()
595 )); 633 ));
596 } 634 }
597 635
src/AppBundle/Form/AdscripcionEditType.php
@@ -0,0 +1,91 @@ @@ -0,0 +1,91 @@
  1 +<?php
  2 +/**
  3 + * Created by Netbeans.
  4 + * User: Wilmer Ramones
  5 + * Date: 29/06/16
  6 + * Time: 09:07 AM
  7 + * Modificado: 07/07/2016
  8 + */
  9 +
  10 +namespace AppBundle\Form;
  11 +
  12 +
  13 +use Symfony\Component\Form\AbstractType;
  14 +use Symfony\Component\Form\Extension\Core\Type\FileType;
  15 +use Symfony\Component\Form\FormBuilderInterface;
  16 +use Symfony\Component\Form\FormEvents;
  17 +use Symfony\Component\Form\FormEvent;
  18 +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  19 +use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  20 +use Symfony\Component\Validator\Constraints\File;
  21 +use Symfony\Component\Validator\Constraints\NotBlank;
  22 +
  23 +class AdscripcionEditType extends AbstractType
  24 +{
  25 +
  26 + private $tokenStorage;
  27 +
  28 + public function __construct(TokenStorageInterface $tokenStorage)
  29 + {
  30 + $this->tokenStorage = $tokenStorage;
  31 + }
  32 +
  33 + public function buildForm(FormBuilderInterface $builder, array $options)
  34 + {
  35 + // grab the user, do a quick sanity check that one exists
  36 + $user = $this->tokenStorage->getToken()->getUser();
  37 + if (!$user) {
  38 + throw new \LogicException(
  39 + 'The FriendMessageFormType cannot be used without an authenticated user!'
  40 + );
  41 + }
  42 +
  43 + $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($user) {
  44 +
  45 + $form = $event->getForm();
  46 + $existe = false;
  47 + foreach ($user->getIdRolInstitucion()->getDocumentosVerificados() as $documentos){
  48 + if($documentos->getIdServicio()->getIdServicioCe()->getId() == 2 && $documentos->getIdEstatus()->getId() == 3){
  49 + $existe = true;
  50 + $form->add($documentos->getIdTipoDocumentos()->getIdentificador(), FileType::class, array(
  51 + 'label' => $documentos->getIdTipoDocumentos()->getNombre(),
  52 + 'constraints' => array(
  53 + new NotBlank(),
  54 + new File(array(
  55 + 'maxSize' => '1024K',
  56 + 'mimeTypes' => [
  57 + 'application/pdf',
  58 + 'application/x-pdf',
  59 + 'image/png',
  60 + 'image/jpg',
  61 + 'image/jpeg'
  62 + ],
  63 + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf'
  64 + ))
  65 + )
  66 + ));
  67 +
  68 +
  69 + }
  70 +
  71 + }
  72 + if($existe){
  73 + $form->add('send', SubmitType::class, array(
  74 + 'label' => 'Reenviar Documentos Rechazados',
  75 + 'attr' => array(
  76 + 'class' => 'btn btn-success btn-block',
  77 + 'data-loading-text' => "<i class='fa fa-circle-o-notch fa-spin'></i> Procesando Solicitud..."
  78 + )
  79 + ));
  80 + }
  81 +
  82 +
  83 + });
  84 +
  85 + }
  86 +
  87 +
  88 +
  89 +
  90 +
  91 +}