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 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 200 </script>
195 201  
196 202 {% endblock %}
... ...
app/Resources/views/solicitudes/adscripcion_show.twig
... ... @@ -125,8 +125,6 @@
125 125 </div>
126 126  
127 127 </div>
128   - <form action="{{ path('cea_solicitudes_actualizar', { 'id': todo.adscripcion.id}) }}" method="POST"
129   - name="rechazar">
130 128 <div class="row">
131 129  
132 130 <div class="col-md-6">
... ... @@ -141,7 +139,7 @@
141 139 <div class="form-group">
142 140 <label for="username">Fecha de Ingreso UBV:</label>
143 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 143 </div>
146 144 {% if todo.escalafones is not null %}
147 145 <div class="form-group">
... ... @@ -189,73 +187,46 @@
189 187 <div class="form-group">
190 188 <label for="titulo">Título del Trabajo:</label>
191 189 <input type="text" class="form-control"
192   - value="{{ todo.adscripcion.tituloTrabajo }}"/>
  190 + value="{{ todo.adscripcion.tituloTrabajo }}" readonly/>
193 191 </div>
194 192 {% endif %}
195 193  
196 194 </div>
197 195 </div>
198 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 198 <div class="widget-content">
202 199  
203   - {% for verificado in todo.documentosVerificados %}
  200 + {% for verificado in todo.documentosVerificados | sort %}
204 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 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 256 </div>
286 257 {% endif %}
287 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 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 263 </div>
326 264  
327 265 </div>
328   - </form>
  266 +
329 267 {% endblock %}
330 268  
331 269  
... ...
app/config/services.yml
... ... @@ -4,6 +4,8 @@ parameters:
4 4 # parameter_name: value
5 5  
6 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 578 * Encuentra y muestra una entidad de tipo Adscripción para los docentes.
579 579 *
580 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 586 $em = $this->getDoctrine()->getManager();
587 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 628 return $this->render('solicitudes/adscripcion_show.twig', array(
592 629 'servicio' => $servicio,
593 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 @@
  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 +}
... ...