From ea074776e5739755674fa169580eaea6ab03e7aa Mon Sep 17 00:00:00 2001 From: Wilmer Date: Tue, 16 May 2017 14:45:39 -0400 Subject: [PATCH] controla el permiso sabatico de los docentes --- app/Resources/views/cea/servicios.html.twig | 7 + app/Resources/views/cea/servicios_mostar.html.twig | 28 +++- app/Resources/views/solicitudes/index.html.twig | 3 + .../views/solicitudes/permisos_index.html.twig | 19 ++- src/AppBundle/Controller/AdscripcionController.php | 32 ++-- src/AppBundle/Controller/AppController.php | 50 +++++- src/AppBundle/Controller/PermisosController.php | 176 ++++++++++++++++++++- src/AppBundle/Form/PermisoSabaticoType.php | 10 +- 8 files changed, 291 insertions(+), 34 deletions(-) diff --git a/app/Resources/views/cea/servicios.html.twig b/app/Resources/views/cea/servicios.html.twig index 8037a78..18007ed 100644 --- a/app/Resources/views/cea/servicios.html.twig +++ b/app/Resources/views/cea/servicios.html.twig @@ -86,6 +86,13 @@ {% elseif servicio.idServicioCe.id == 7 %} + {% elseif servicio.idServicioCe.id == 6 %} + + {% elseif servicio.idServicioCe.id == 7 %} + + {% elseif servicio.idServicioCe.id > 7 %} + + {% endif %} diff --git a/app/Resources/views/cea/servicios_mostar.html.twig b/app/Resources/views/cea/servicios_mostar.html.twig index 7684776..994eeae 100644 --- a/app/Resources/views/cea/servicios_mostar.html.twig +++ b/app/Resources/views/cea/servicios_mostar.html.twig @@ -284,7 +284,7 @@
- + @@ -293,7 +293,7 @@ class="fa fa-close"> + id="no_radio{{ loop.index }}" {% if documento.idEstatus.id == 3 %} checked="checked" {% endif %} >
@@ -324,7 +324,29 @@ var buttonpressed; $('#aprobado').click(function() { //alert("click"); return false; - buttonpressed = $(this).attr('name') + buttonpressed = $(this).attr('name'); + console.log($(':radio:checked').length); + for (var i = 0; i < $(':radio:checked').length; i ++){ + console.log($(':radio:checked')[i]); + if ( ($(':radio:checked')[i].value == "")) { + alert('Debes revisar todos los documentos para poder enviar la solicitud!'); + $("#aprobado").button('reset'); + return false; + } + + } + console.log($("input[type=submit][clicked=true]").val()); + if (buttonpressed == "aprobado") { + for (var i = 0; i < $(':radio:checked').length; i++) { + console.log($(':radio:checked')[i]); + if (($(':radio:checked')[i].value == "3")) { + alert('No puedes aprobar una solicitud con documentos en estatus de rechazado'); + $("#aprobado").button('reset'); + return false; + } + + } + } }); $('#rechazar').click(function() { diff --git a/app/Resources/views/solicitudes/index.html.twig b/app/Resources/views/solicitudes/index.html.twig index 23bc89f..fe2034e 100644 --- a/app/Resources/views/solicitudes/index.html.twig +++ b/app/Resources/views/solicitudes/index.html.twig @@ -74,6 +74,9 @@
{% endif %} {%endif%} + {% if servicio.idServicioCe.id > 7 %} + + {% endif %} {% endfor %} diff --git a/app/Resources/views/solicitudes/permisos_index.html.twig b/app/Resources/views/solicitudes/permisos_index.html.twig index 99230c6..e1bd2eb 100644 --- a/app/Resources/views/solicitudes/permisos_index.html.twig +++ b/app/Resources/views/solicitudes/permisos_index.html.twig @@ -2,9 +2,17 @@ {% block body %}
- {% for message in app.session.flashBag.get('notice') %} + {% for message in app.session.flashBag.get('success') %}

{{ message }}

{%endfor %} + + {% for message in app.session.flashBag.get('warning') %} +

{{ message }}

+ {%endfor %} + + {% for message in app.session.flashBag.get('danger') %} +

{{ message }}

+ {%endfor %}
@@ -74,7 +82,14 @@
Al tener el escalafón de asistente, puedes solicitar tu año sabático, siempre y - cuando lo hayas contemplado dentro de tus actividades del PIDA + cuando lo hayas contemplado dentro de tus actividades del PIDA y + nos incluyas una exposición de motivos +

+ + {% form_theme formSabatico 'bootstrap_3_layout.html.twig' %} + {{ form_start(formSabatico, {'attr': {'novalidate': 'novalidate'}}) }} + {{ form_widget(formSabatico) }} + {{ form_end(formSabatico) }}
diff --git a/src/AppBundle/Controller/AdscripcionController.php b/src/AppBundle/Controller/AdscripcionController.php index 02f76b2..084080d 100644 --- a/src/AppBundle/Controller/AdscripcionController.php +++ b/src/AppBundle/Controller/AdscripcionController.php @@ -434,21 +434,24 @@ class AdscripcionController extends Controller array('form' => $form->createView()) ); } - - + + + /** * Solicita información al docente sobre su PIDA * - * @Route("/solicitud/pida/{id}", name="solicitud_pida") + * @Route("/solicitud/pida/", name="solicitud_pida") * @Method({"GET", "POST"}) */ - public function pidaAction(DocenteServicio $servicio, Request $request) + public function pidaAction(Request $request) { - + + //var_dump($servicio->getId()); exit; + //verificar en las solicitudes la adscripcion del docente $adscripcion = $this->getDoctrine()->getRepository('AppBundle:DocenteServicio')-> findOneBy(array( - 'idRolInstitucion' => $servicio->getIdRolInstitucion()->getId(), + 'idRolInstitucion' => $this->getUser()->getIdRolInstitucion()->getId(), 'idServicioCe' => 2 )); //si no ha solicitado adscripción regresa a la pagina de adscripcion @@ -458,6 +461,11 @@ class AdscripcionController extends Controller $pid = false; + $servicio = $this->getDoctrine()->getRepository("AppBundle:DocenteServicio")->findOneBy(array( + 'idRolInstitucion' => $this->getUser()->getIdRolInstitucion()->getId(), + 'idServicioCe' => 4 + )); + if($servicio) { //si el servicio está cadudado, debe solicitar uno nuevo if ($servicio->getIdEstatus()->getId() == 5) { @@ -501,19 +509,19 @@ class AdscripcionController extends Controller $em = $this->getDoctrine()->getManager(); //Crear la solicitud de Servicio if(!$servicio) { - $serv = new DocenteServicio(); + $servicio = new DocenteServicio(); - $serv->setIdRolInstitucion($this->getUser()->getIdRolInstitucion()); - $serv->setIdServicioCe($this->getDoctrine()->getRepository('AppBundle:ServiciosCe')->findOneById(4)); - $serv->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:estatus')->findOneById(2)); - $em->persist($serv); + $servicio->setIdRolInstitucion($this->getUser()->getIdRolInstitucion()); + $servicio->setIdServicioCe($this->getDoctrine()->getRepository('AppBundle:ServiciosCe')->findOneById(4)); + $servicio->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:estatus')->findOneById(2)); + $em->persist($servicio); } $pida->setIdRolInstitucion($this->getUser()->getIdRolInstitucion()); $pida->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:Estatus')->findOneById(2)); - $pida->setIdDocenteServicio($serv); + $pida->setIdDocenteServicio($servicio); foreach($pida->getPidaTareaEspecifico() as $especifico){ //var_dump($especifico); exit; $especifico->setAdscripcionPidaId($pida); diff --git a/src/AppBundle/Controller/AppController.php b/src/AppBundle/Controller/AppController.php index adacadc..69c7e30 100644 --- a/src/AppBundle/Controller/AppController.php +++ b/src/AppBundle/Controller/AppController.php @@ -65,7 +65,7 @@ class AppController extends Controller { $em = $this->getDoctrine()->getManager(); if(!$pida){ $this->addFlash('warning', 'Estimado Docente Mientras se verifica su adscripción, le solicitamos que por favor cree su PIDA.'); - return $this->redirectToRoute('solicitud_pida', array('id' => $servicioAdscripcion->getId())); + return $this->redirectToRoute('solicitud_pida'); }else{ $caducidad = $this->getDoctrine()->getRepository("AppBundle:PidaCaducidad")->findOneByIdDocenteServicio($pida); if($caducidad){ @@ -265,6 +265,14 @@ class AppController extends Controller { $user->addRol($this->getDoctrine()->getRepository('AppBundle:Role')->findOneByName("ROLE_ESTUDIANTE")); $em->persist($user); } + + $parametros = $request->request->all(); + + //Guardar el resultado de la verificación de Documentos de los permisos sabaticos + if($servicios->getIdServicioCe()->getId() == 8){ + verificar_documentos4($servicios->getIdRolInstitucion(), 18, 1, $em, "", $servicios); + } + }else{ @@ -275,6 +283,11 @@ class AppController extends Controller { $user->removeRol($this->getDoctrine()->getRepository('AppBundle:Role')->findOneByName("ROLE_ESTUDIANTE")); $em->persist($user); } + + //Guardar el resultado de la verificación de Documentos de los permisos sabaticos + if($servicios->getIdServicioCe()->getId() == 8){ + verificar_documentos4($servicios->getIdRolInstitucion(), 18, 3, $em, "", $servicios); + } } $em->persist($servicios); @@ -282,7 +295,7 @@ class AppController extends Controller { $user = $this->getDoctrine()->getRepository('AppBundle:Usuarios')->findOneByIdRolInstitucion($servicios->getIdRolInstitucion()); - $message = \Swift_Message::newInstance() + /*$message = \Swift_Message::newInstance() ->setSubject('Resultado Solicitud de Servicio Docente CEA@UBV') ->setFrom('wilmer.ramones@gmail.com') ->setTo($user->getEmail()) @@ -299,7 +312,7 @@ class AppController extends Controller { 'text/html' ) ; - $this->get('mailer')->send($message); + $this->get('mailer')->send($message);*/ $this->addFlash('notice', 'Servicio Actualizada Correctamente, hemos enviado un correo al docente notificandole los cambios.'); @@ -320,10 +333,31 @@ class AppController extends Controller { } + - - - - } - \ No newline at end of file + +function verificar_documentos4($idRolInstitucion, $tipo, $estatus, $em, $ubicacion="", $servicio){ + $existe = $em->getRepository("AppBundle:DocumentosVerificados")->findOneBy(array( + 'idRolInstitucion' => $idRolInstitucion, + 'idTipoDocumentos' => $tipo + )); + + if(!$existe) { + $verificacion = new DocumentosVerificados(); + $verificacion->setIdEstatus($em->getRepository("AppBundle:Estatus")->findOneById($estatus)); + $verificacion->setIdRolInstitucion($idRolInstitucion); + $verificacion->setIdServicio($servicio); + $verificacion->setIdTipoDocumentos($em->getRepository("AppBundle:TipoDocumentos")->findOneById($tipo)); + $verificacion->setUbicacion($ubicacion); + $em->persist($verificacion); + $em->flush(); + }else{ + $existe->setIdEstatus($em->getRepository("AppBundle:Estatus")->findOneById($estatus)); + $em->persist($existe); + $em->flush(); + } + +} + + diff --git a/src/AppBundle/Controller/PermisosController.php b/src/AppBundle/Controller/PermisosController.php index b0644bf..4a165a8 100644 --- a/src/AppBundle/Controller/PermisosController.php +++ b/src/AppBundle/Controller/PermisosController.php @@ -34,15 +34,185 @@ class PermisosController extends Controller /** * @Route("/solicitud/permisos", name="permisos_index") */ - public function permisosIndexAction() + public function permisosIndexAction( Request $request) { + $em = $this->getDoctrine()->getManager(); + $docente = $this->getUser()->getIdRolInstitucion(); + $escalafones = $em->getRepository("AppBundle:DocenteEscala")->findOneBy(array( + 'idRolInstitucion' => $docente, + 'idEscala' => $em->getRepository("AppBundle:Escalafones")->findOneById(2) + )); + + if(!$escalafones){ + $this->addFlash('danger', 'Estimado Docente, debe ser mínimo Asistente para poder realizar esta solicitud'); + return $this->redirect($this->generateUrl('permisos_index')); + } + + + /* Permiso sabatico */ + $sabatico = $this->getDoctrine()->getRepository("AppBundle:DocenteServicio")->findOneBy(array( + 'idRolInstitucion' => $docente, 'idServicioCe' => 8 ), + array('id' => 'DESC') + ); + + if($sabatico && ($sabatico->getIdEstatus()->getId() == 1 || $sabatico->getIdEstatus()->getId() == 2 )){ + $tiempoEspera = $sabatico->getFechaSolicitud()->diff(new \DateTime("now")); + if($tiempoEspera->y >= 7 && $sabatico->getIdEstatus()->getId() == 1){ + $sabatico->setIdEstatus($this->getDoctrine()->getRepository("AppBundle:Estatus")->findOneById(4)); + $em->persist($sabatico); + $em->flush(); + }else { + $this->addFlash('warning', 'Ya posee una solicitud en espera o activa, no puede realizar otra solicitud.'); + return $this->redirect($this->generateUrl('servicios_index')); + } + } + + + $formSabatico = $this->createForm('AppBundle\Form\PermisoSabaticoType'); + $formSabatico->handleRequest($request); + if ($formSabatico->isSubmitted() && $formSabatico->isValid()) { + + $servicios = new DocenteServicio(); + + $servicios->setIdRolInstitucion($this->getUser()->getIdRolInstitucion()); + $servicios->setIdServicioCe($this->getDoctrine()->getRepository('AppBundle:ServiciosCe')->findOneById(8)); + $servicios->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:estatus')->findOneById(2)); + $em->persist($servicios); + $em->flush(); + + $motivo = $formSabatico->get('motivo')->getData(); + $nombreMotivo = md5(uniqid()).'.'.$motivo->guessExtension(); + + $motivo->move( + $this->container->getParameter('permiso_directory'), + $nombreMotivo + ); + thumbnail3($nombreMotivo, $this->container->getParameter('permiso_directory'), $this->container->getParameter('permiso_thumb_directory')); + + verificar_documentos3($servicios->getIdRolInstitucion(),18,2,$em,$nombreMotivo, $servicios); + $this->addFlash('success', 'Permiso solicitado satisfactoriamente'); + return $this->redirect($this->generateUrl('servicios_index')); + } + + /* Fin Sabatico */ + + + + + + /* Permiso Estudio */ + $estudio = $this->getDoctrine()->getRepository("AppBundle:DocenteServicio")->findOneBy(array( + 'idRolInstitucion' => $docente, 'idServicioCe' => 9 ), + array('id' => 'DESC') + ); + + if($estudio && ($estudio->getIdEstatus()->getId() == 1 || $estudio->getIdEstatus()->getId() == 2 )){ + $tiempoEspera = $estudio->getFechaSolicitud()->diff(new \DateTime("now")); + if($tiempoEspera->y >= 1 && $estudio->getIdEstatus()->getId() == 1){ + $estudio->setIdEstatus($this->getDoctrine()->getRepository("AppBundle:Estatus")->findOneById(4)); + $em->persist($estudio); + $em->flush(); + }else { + $this->addFlash('warning', 'Ya posee una solicitud en espera o activa, no puede realizar otra solicitud.'); + return $this->redirect($this->generateUrl('servicios_index')); + } + } + + + $formSabatico = $this->createForm('AppBundle\Form\PermisoSabaticoType'); + $formSabatico->handleRequest($request); + if ($formSabatico->isSubmitted() && $formSabatico->isValid()) { + + $servicios = new DocenteServicio(); + + $servicios->setIdRolInstitucion($this->getUser()->getIdRolInstitucion()); + $servicios->setIdServicioCe($this->getDoctrine()->getRepository('AppBundle:ServiciosCe')->findOneById(8)); + $servicios->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:estatus')->findOneById(2)); + $em->persist($servicios); + $em->flush(); + + $motivo = $formSabatico->get('motivo')->getData(); + $nombreMotivo = md5(uniqid()).'.'.$motivo->guessExtension(); + + $motivo->move( + $this->container->getParameter('permiso_directory'), + $nombreMotivo + ); + thumbnail3($nombreMotivo, $this->container->getParameter('permiso_directory'), $this->container->getParameter('permiso_thumb_directory')); + + verificar_documentos3($servicios->getIdRolInstitucion(),18,2,$em, $nombreMotivo, $servicios); + $this->addFlash('success', 'Permiso solicitado satisfactoriamente'); + return $this->redirect($this->generateUrl('servicios_index')); + } + + /* Fin Estudio */ + + return $this->render('solicitudes/permisos_index.html.twig', array( + 'formSabatico' => $formSabatico->createView() )); } + + + + +} + + + +function thumbnail3 ($filename, $fuente, $destino){ + $im = false; + if(preg_match('/[.](jpeg)$/', $filename)) { + $im = imagecreatefromjpeg($fuente . "/" . $filename); + } else if (preg_match('/[.](jpg)$/', $filename)) { + $im = imagecreatefromjpeg($fuente . "/" . $filename); + }else if (preg_match('/[.](gif)$/', $filename)) { + $im = imagecreatefromgif($fuente . "/" . $filename); + } else if (preg_match('/[.](png)$/', $filename)) { + $im = imagecreatefrompng($fuente . "/" . $filename); + } + if($im){ + $ox = imagesx($im); + $oy = imagesy($im); + + $nx = 80; + $ny = 80; + + $nm = imagecreatetruecolor($nx, $ny); + + imagecopyresized($nm, $im, 0,0,0,0,$nx,$ny,$ox,$oy); + + imagejpeg($nm, $destino . "/" . $filename); + }else{ + move_uploaded_file($filename, $destino); + } } - - + + +function verificar_documentos3($idRolInstitucion, $tipo, $estatus, $em, $ubicacion="", $servicio = 2){ + $existe = $em->getRepository("AppBundle:DocumentosVerificados")->findOneBy(array( + 'idRolInstitucion' => $idRolInstitucion, + 'idTipoDocumentos' => $tipo, + 'idServicio' => $servicio + )); + + if(!$existe) { + $verificacion = new DocumentosVerificados(); + $verificacion->setIdEstatus($em->getRepository("AppBundle:Estatus")->findOneById($estatus)); + $verificacion->setIdRolInstitucion($idRolInstitucion); + $verificacion->setIdServicio($servicio); + $verificacion->setIdTipoDocumentos($em->getRepository("AppBundle:TipoDocumentos")->findOneById($tipo)); + $verificacion->setUbicacion($ubicacion); + $em->persist($verificacion); + $em->flush(); + }else{ + $existe->setIdEstatus($em->getRepository("AppBundle:Estatus")->findOneById($estatus)); + $em->persist($existe); + $em->flush(); + } + +} \ No newline at end of file diff --git a/src/AppBundle/Form/PermisoSabaticoType.php b/src/AppBundle/Form/PermisoSabaticoType.php index 09d4de4..10b52fd 100644 --- a/src/AppBundle/Form/PermisoSabaticoType.php +++ b/src/AppBundle/Form/PermisoSabaticoType.php @@ -11,23 +11,21 @@ namespace AppBundle\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; -use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Validator\Constraints\File; use Symfony\Component\Validator\Constraints\NotBlank; use Symfony\Component\Form\Extension\Core\Type\FileType; -use Symfony\Bridge\Doctrine\Form\Type\EntityType; -class ReconocimientoEscalaType extends AbstractType +class PermisoSabaticoType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder - ->add('reconocimiento', FileType::class, array( - 'label' => 'Digital Aprobación de Escala', + ->add('motivo', FileType::class, array( + 'label' => 'Digital Carta Exposición de Motivos', 'constraints' => array( new NotBlank(), new File(array( @@ -44,7 +42,7 @@ class ReconocimientoEscalaType extends AbstractType ) )) ->add('send', SubmitType::class, array( - 'label' => 'Enviar reconocimiento de Escala', + 'label' => 'Enviar motivo', 'attr' => array( 'class' => 'btn btn-success btn-block', 'data-loading-text' => " Procesando Solicitud..." -- 2.0.0