Commit 1e8e3249f3d0abb67b57bf2011286f432836aafb
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
Showing
5 changed files
with
174 additions
and
99 deletions
Show diff stats
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">×</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 | +} |