Commit c5cc560241b6e6e4e07e1bb7a717d76d8c7cc478

Authored by Wilmer
1 parent ea074776e5
Exists in master

crea los permisos por estudio y extranjero ademas de crear la entidad que guarda…

… el tiempo para calcular los nuevos permisos y su caducidad para formalizarlos, también permite aprobar o rechazar los mismos
app/Resources/views/cea/servicios_mostar.html.twig
@@ -261,6 +261,8 @@ @@ -261,6 +261,8 @@
261 {% else %} 261 {% else %}
262 <div class="col-md-5"> 262 <div class="col-md-5">
263 <h3>Documentos Para confirmar</h3> 263 <h3>Documentos Para confirmar</h3>
  264 + Permisio inicia: {{ servicio.docentePermisoTiempo.last.fechaInicio | date("m-d-Y") }} <br>
  265 + Permisio finaliza: {{ servicio.docentePermisoTiempo.last.fechaFinal | date("m-d-Y") }} <br>
264 <div class="widget-content"> 266 <div class="widget-content">
265 267
266 268
app/Resources/views/solicitudes/permisos_index.html.twig
@@ -51,7 +51,20 @@ @@ -51,7 +51,20 @@
51 <div id="1" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne1"> 51 <div id="1" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne1">
52 <div class="panel-body"> 52 <div class="panel-body">
53 Puedes solicitar permiso por estudio (finalizar tesis maestría o doctorado) hasta un 53 Puedes solicitar permiso por estudio (finalizar tesis maestría o doctorado) hasta un
54 - máximo de tres meses. 54 + máximo de tres meses.<br><br>
  55 +
  56 + {% form_theme formEstudio 'bootstrap_3_layout.html.twig' %}
  57 + {{ form_start(formEstudio, {'attr': {'novalidate': 'novalidate'}}) }}
  58 + <div class="row">
  59 + <div class="col-lg-5">
  60 + {{ form_row(formEstudio.fechaInicio) }}
  61 + </div>
  62 + <div class="col-lg-5">
  63 + {{ form_row(formEstudio.tiempo) }}
  64 + </div>
  65 +
  66 + </div>
  67 + {{ form_end(formEstudio) }}
55 </div> 68 </div>
56 </div> 69 </div>
57 </div> 70 </div>
@@ -67,7 +80,21 @@ @@ -67,7 +80,21 @@
67 <div class="panel-body"> 80 <div class="panel-body">
68 Necesitar salir al extranjero a realizar una ponencia, taller, entre otros, gestiona 81 Necesitar salir al extranjero a realizar una ponencia, taller, entre otros, gestiona
69 tu permiso a través del CEA@UBV. Necesario presentar un soporte que valide 82 tu permiso a través del CEA@UBV. Necesario presentar un soporte que valide
70 - el traslado al extranjero. 83 + el traslado al extranjero.<br><br>
  84 +
  85 + {% form_theme formExtranjero 'bootstrap_3_layout.html.twig' %}
  86 + {{ form_start(formExtranjero, {'attr': {'novalidate': 'novalidate'}}) }}
  87 + <div class="row">
  88 + <div class="col-lg-5">
  89 + {{ form_row(formExtranjero.fechaInicio) }}
  90 + </div>
  91 + <div class="col-lg-5">
  92 + {{ form_row(formExtranjero.fechaFinal) }}
  93 + </div>
  94 +
  95 + </div>
  96 + {{ form_end(formExtranjero) }}
  97 +
71 </div> 98 </div>
72 </div> 99 </div>
73 </div> 100 </div>
src/AppBundle/Controller/AppController.php
@@ -7,6 +7,8 @@ @@ -7,6 +7,8 @@
7 */ 7 */
8 8
9 namespace AppBundle\Controller; 9 namespace AppBundle\Controller;
  10 +use AppBundle\Entity\DocentePermisoTiempo;
  11 +use AppBundle\Entity\DocumentosVerificados;
10 use Symfony\Bundle\FrameworkBundle\Controller\Controller; 12 use Symfony\Bundle\FrameworkBundle\Controller\Controller;
11 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 13 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
12 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; 14 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
@@ -268,11 +270,25 @@ class AppController extends Controller { @@ -268,11 +270,25 @@ class AppController extends Controller {
268 270
269 $parametros = $request->request->all(); 271 $parametros = $request->request->all();
270 272
  273 +
271 //Guardar el resultado de la verificación de Documentos de los permisos sabaticos 274 //Guardar el resultado de la verificación de Documentos de los permisos sabaticos
272 if($servicios->getIdServicioCe()->getId() == 8){ 275 if($servicios->getIdServicioCe()->getId() == 8){
273 verificar_documentos4($servicios->getIdRolInstitucion(), 18, 1, $em, "", $servicios); 276 verificar_documentos4($servicios->getIdRolInstitucion(), 18, 1, $em, "", $servicios);
274 } 277 }
275 278
  279 + if($servicios->getIdServicioCe()->getId() == 9){
  280 + verificar_documentos4($servicios->getIdRolInstitucion(), 19, 1, $em, "", $servicios);
  281 + verificar_documentos4($servicios->getIdRolInstitucion(), 20, 1, $em, "", $servicios);
  282 + verificar_documentos4($servicios->getIdRolInstitucion(), 21, 1, $em, "", $servicios);
  283 + }
  284 +
  285 + if($servicios->getIdServicioCe()->getId() == 10){
  286 + verificar_documentos4($servicios->getIdRolInstitucion(), 19, 1, $em, "", $servicios);
  287 + verificar_documentos4($servicios->getIdRolInstitucion(), 20, 1, $em, "", $servicios);
  288 + verificar_documentos4($servicios->getIdRolInstitucion(), 22, 1, $em, "", $servicios);
  289 +
  290 + }
  291 +
276 292
277 293
278 }else{ 294 }else{
@@ -288,6 +304,18 @@ class AppController extends Controller { @@ -288,6 +304,18 @@ class AppController extends Controller {
288 if($servicios->getIdServicioCe()->getId() == 8){ 304 if($servicios->getIdServicioCe()->getId() == 8){
289 verificar_documentos4($servicios->getIdRolInstitucion(), 18, 3, $em, "", $servicios); 305 verificar_documentos4($servicios->getIdRolInstitucion(), 18, 3, $em, "", $servicios);
290 } 306 }
  307 +
  308 + if($servicios->getIdServicioCe()->getId() == 9){
  309 + verificar_documentos4($servicios->getIdRolInstitucion(), 19, 3, $em, "", $servicios);
  310 + verificar_documentos4($servicios->getIdRolInstitucion(), 20, 3, $em, "", $servicios);
  311 + verificar_documentos4($servicios->getIdRolInstitucion(), 21, 3, $em, "", $servicios);
  312 + }
  313 +
  314 + if($servicios->getIdServicioCe()->getId() == 10){
  315 + verificar_documentos4($servicios->getIdRolInstitucion(), 19, 3, $em, "", $servicios);
  316 + verificar_documentos4($servicios->getIdRolInstitucion(), 20, 3, $em, "", $servicios);
  317 + verificar_documentos4($servicios->getIdRolInstitucion(), 22, 3, $em, "", $servicios);
  318 + }
291 } 319 }
292 320
293 $em->persist($servicios); 321 $em->persist($servicios);
@@ -338,10 +366,11 @@ class AppController extends Controller { @@ -338,10 +366,11 @@ class AppController extends Controller {
338 } 366 }
339 367
340 function verificar_documentos4($idRolInstitucion, $tipo, $estatus, $em, $ubicacion="", $servicio){ 368 function verificar_documentos4($idRolInstitucion, $tipo, $estatus, $em, $ubicacion="", $servicio){
341 - $existe = $em->getRepository("AppBundle:DocumentosVerificados")->findOneBy(array(  
342 - 'idRolInstitucion' => $idRolInstitucion,  
343 - 'idTipoDocumentos' => $tipo  
344 - )); 369 + $existe = $em->getRepository("AppBundle:DocumentosVerificados")->findOneBy(
  370 + array('idRolInstitucion' => $idRolInstitucion, 'idTipoDocumentos' => $tipo),
  371 + array('id' => 'DESC')
  372 + );
  373 +
345 374
346 if(!$existe) { 375 if(!$existe) {
347 $verificacion = new DocumentosVerificados(); 376 $verificacion = new DocumentosVerificados();
src/AppBundle/Controller/PermisosController.php
@@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
8 8
9 namespace AppBundle\Controller; 9 namespace AppBundle\Controller;
10 10
  11 +use AppBundle\Entity\DocentePermisoTiempo;
11 use AppBundle\Entity\DocumentosVerificados; 12 use AppBundle\Entity\DocumentosVerificados;
12 use AppBundle\Entity\PidaCaducidad; 13 use AppBundle\Entity\PidaCaducidad;
13 use AppBundle\Entity\PidaEstatus; 14 use AppBundle\Entity\PidaEstatus;
@@ -56,7 +57,7 @@ class PermisosController extends Controller @@ -56,7 +57,7 @@ class PermisosController extends Controller
56 ); 57 );
57 58
58 if($sabatico && ($sabatico->getIdEstatus()->getId() == 1 || $sabatico->getIdEstatus()->getId() == 2 )){ 59 if($sabatico && ($sabatico->getIdEstatus()->getId() == 1 || $sabatico->getIdEstatus()->getId() == 2 )){
59 - $tiempoEspera = $sabatico->getFechaSolicitud()->diff(new \DateTime("now")); 60 + $tiempoEspera = $sabatico->getFechaUltimaActualizacion()->diff(new \DateTime("now"));
60 if($tiempoEspera->y >= 7 && $sabatico->getIdEstatus()->getId() == 1){ 61 if($tiempoEspera->y >= 7 && $sabatico->getIdEstatus()->getId() == 1){
61 $sabatico->setIdEstatus($this->getDoctrine()->getRepository("AppBundle:Estatus")->findOneById(4)); 62 $sabatico->setIdEstatus($this->getDoctrine()->getRepository("AppBundle:Estatus")->findOneById(4));
62 $em->persist($sabatico); 63 $em->persist($sabatico);
@@ -78,6 +79,18 @@ class PermisosController extends Controller @@ -78,6 +79,18 @@ class PermisosController extends Controller
78 $servicios->setIdServicioCe($this->getDoctrine()->getRepository('AppBundle:ServiciosCe')->findOneById(8)); 79 $servicios->setIdServicioCe($this->getDoctrine()->getRepository('AppBundle:ServiciosCe')->findOneById(8));
79 $servicios->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:estatus')->findOneById(2)); 80 $servicios->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:estatus')->findOneById(2));
80 $em->persist($servicios); 81 $em->persist($servicios);
  82 +
  83 +
  84 + $permisoTiempo = new DocentePermisoTiempo();
  85 + $permisoTiempo->setFechaInicio($formSabatico->get('fechaInicio')->getData());
  86 + $fecha = strtotime($formSabatico->get('fechaInicio')->getData()->format('d-m-Y'));
  87 + $fecha = strtotime('+1 year', $fecha );
  88 + $newformat = date('Y-m-d', $fecha);
  89 +
  90 + $permisoTiempo->setFechaFinal(new \DateTime($newformat));
  91 + $permisoTiempo->setIdDocenteServicio($servicios);
  92 + $em->persist($permisoTiempo);
  93 +
81 $em->flush(); 94 $em->flush();
82 95
83 $motivo = $formSabatico->get('motivo')->getData(); 96 $motivo = $formSabatico->get('motivo')->getData();
@@ -105,52 +118,182 @@ class PermisosController extends Controller @@ -105,52 +118,182 @@ class PermisosController extends Controller
105 'idRolInstitucion' => $docente, 'idServicioCe' => 9 ), 118 'idRolInstitucion' => $docente, 'idServicioCe' => 9 ),
106 array('id' => 'DESC') 119 array('id' => 'DESC')
107 ); 120 );
  121 + $cuantoAprobaron = $this->getDoctrine()->getRepository("AppBundle:DocentePermisoTiempo")->findOneByIdDocenteServicio($estudio);
  122 + $tiempoAprobaron = $cuantoAprobaron->getFechaFinal()->diff($cuantoAprobaron->getFechaInicio());
108 123
  124 + $caduco = $cuantoAprobaron->getFechaFinal()->diff(new \DateTime("now"));
109 if($estudio && ($estudio->getIdEstatus()->getId() == 1 || $estudio->getIdEstatus()->getId() == 2 )){ 125 if($estudio && ($estudio->getIdEstatus()->getId() == 1 || $estudio->getIdEstatus()->getId() == 2 )){
110 - $tiempoEspera = $estudio->getFechaSolicitud()->diff(new \DateTime("now")); 126 + $tiempoEspera = $cuantoAprobaron->getFechaFinal()->diff(new \DateTime("now"));
111 if($tiempoEspera->y >= 1 && $estudio->getIdEstatus()->getId() == 1){ 127 if($tiempoEspera->y >= 1 && $estudio->getIdEstatus()->getId() == 1){
112 $estudio->setIdEstatus($this->getDoctrine()->getRepository("AppBundle:Estatus")->findOneById(4)); 128 $estudio->setIdEstatus($this->getDoctrine()->getRepository("AppBundle:Estatus")->findOneById(4));
113 $em->persist($estudio); 129 $em->persist($estudio);
114 $em->flush(); 130 $em->flush();
115 - }else {  
116 - $this->addFlash('warning', 'Ya posee una solicitud en espera o activa, no puede realizar otra solicitud.'); 131 + }else if($tiempoAprobaron->m == 3 || !$estudio->getIdEstatus()->getId() == 1 || !$caduco->m > 0) {
  132 + $this->addFlash('warning', 'Todavia no puede realizar otra solicitud, debe esperar que el tiempo caduque si fue aprobado menos de tres meses o esperar un año para una nueva solicitud.');
117 return $this->redirect($this->generateUrl('servicios_index')); 133 return $this->redirect($this->generateUrl('servicios_index'));
118 } 134 }
119 } 135 }
120 136
121 137
122 - $formSabatico = $this->createForm('AppBundle\Form\PermisoSabaticoType');  
123 - $formSabatico->handleRequest($request);  
124 - if ($formSabatico->isSubmitted() && $formSabatico->isValid()) { 138 + $formEstudio = $this->createForm('AppBundle\Form\PermisoEstudioType');
  139 + $formEstudio->handleRequest($request);
  140 + if ($formEstudio->isSubmitted() && $formEstudio->isValid()) {
125 141
126 $servicios = new DocenteServicio(); 142 $servicios = new DocenteServicio();
127 143
128 $servicios->setIdRolInstitucion($this->getUser()->getIdRolInstitucion()); 144 $servicios->setIdRolInstitucion($this->getUser()->getIdRolInstitucion());
129 - $servicios->setIdServicioCe($this->getDoctrine()->getRepository('AppBundle:ServiciosCe')->findOneById(8)); 145 + $servicios->setIdServicioCe($this->getDoctrine()->getRepository('AppBundle:ServiciosCe')->findOneById(9));
130 $servicios->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:estatus')->findOneById(2)); 146 $servicios->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:estatus')->findOneById(2));
  147 + $servicios->setFechaSolicitud($formEstudio->get('fechaInicio')->getData());
131 $em->persist($servicios); 148 $em->persist($servicios);
  149 +
  150 + $permisoTiempo = new DocentePermisoTiempo();
  151 + $permisoTiempo->setFechaInicio($formEstudio->get('fechaInicio')->getData());
  152 + $fecha = strtotime($formEstudio->get('fechaInicio')->getData()->format('d-m-Y'));
  153 + $meses = $formEstudio->get('tiempo')->getData();
  154 + $fecha = strtotime('+' . $meses . ' month', $fecha );
  155 + $newformat = date('Y-m-d', $fecha);
  156 + $permisoTiempo->setFechaFinal(new \DateTime($newformat));
  157 + $permisoTiempo->setIdDocenteServicio($servicios);
  158 + $em->persist($permisoTiempo);
  159 +
  160 +
132 $em->flush(); 161 $em->flush();
133 162
134 - $motivo = $formSabatico->get('motivo')->getData();  
135 - $nombreMotivo = md5(uniqid()).'.'.$motivo->guessExtension(); 163 + $socioAcademico = $formEstudio->get('permisoSocioAcademico')->getData();
  164 + $nombreSocioAcademico = md5(uniqid()).'.'.$socioAcademico->guessExtension();
136 165
137 - $motivo->move( 166 + $socioAcademico->move(
138 $this->container->getParameter('permiso_directory'), 167 $this->container->getParameter('permiso_directory'),
139 - $nombreMotivo 168 + $nombreSocioAcademico
140 ); 169 );
141 - thumbnail3($nombreMotivo, $this->container->getParameter('permiso_directory'), $this->container->getParameter('permiso_thumb_directory')); 170 + thumbnail3($nombreSocioAcademico, $this->container->getParameter('permiso_directory'), $this->container->getParameter('permiso_thumb_directory'));
142 171
143 - verificar_documentos3($servicios->getIdRolInstitucion(),18,2,$em, $nombreMotivo, $servicios);  
144 - $this->addFlash('success', 'Permiso solicitado satisfactoriamente'); 172 + verificar_documentos3($servicios->getIdRolInstitucion(),19,2,$em, $nombreSocioAcademico, $servicios);
  173 +
  174 +
  175 +
  176 +
  177 + $regional = $formEstudio->get('permisoCoordRegional')->getData();
  178 + $nombreRegional = md5(uniqid()).'.'. $regional->guessExtension();
  179 +
  180 + $regional->move(
  181 + $this->container->getParameter('permiso_directory'),
  182 + $nombreRegional
  183 + );
  184 + thumbnail3($nombreRegional, $this->container->getParameter('permiso_directory'), $this->container->getParameter('permiso_thumb_directory'));
  185 +
  186 + verificar_documentos3($servicios->getIdRolInstitucion(),20,2,$em, $nombreRegional, $servicios);
  187 +
  188 + $cartaTesis = $formEstudio->get('cartaTesis')->getData();
  189 + $nombreCartaTesis = md5(uniqid()).'.'.$cartaTesis->guessExtension();
  190 +
  191 + $cartaTesis->move(
  192 + $this->container->getParameter('permiso_directory'),
  193 + $nombreCartaTesis
  194 + );
  195 + thumbnail3($nombreCartaTesis, $this->container->getParameter('permiso_directory'), $this->container->getParameter('permiso_thumb_directory'));
  196 +
  197 + verificar_documentos3($servicios->getIdRolInstitucion(),21,2,$em, $nombreCartaTesis, $servicios);
  198 + $this->addFlash('success', 'Permiso por estudio solicitado satisfactoriamente');
145 return $this->redirect($this->generateUrl('servicios_index')); 199 return $this->redirect($this->generateUrl('servicios_index'));
146 } 200 }
147 201
148 /* Fin Estudio */ 202 /* Fin Estudio */
149 203
150 204
151 - return $this->render('solicitudes/permisos_index.html.twig', array(  
152 - 'formSabatico' => $formSabatico->createView()  
153 205
  206 +
  207 +
  208 + /* Permiso extranjero */
  209 + $estudio = $this->getDoctrine()->getRepository("AppBundle:DocenteServicio")->findOneBy(array(
  210 + 'idRolInstitucion' => $docente, 'idServicioCe' => 9 ),
  211 + array('id' => 'DESC')
  212 + );
  213 + $cuantoAprobaron = $this->getDoctrine()->getRepository("AppBundle:DocentePermisoTiempo")->findOneByIdDocenteServicio($estudio);
  214 + $tiempoAprobaron = $cuantoAprobaron->getFechaFinal()->diff($cuantoAprobaron->getFechaInicio());
  215 +
  216 + $caduco = $cuantoAprobaron->getFechaFinal()->diff(new \DateTime("now"));
  217 + if($estudio && ($estudio->getIdEstatus()->getId() == 1 || $estudio->getIdEstatus()->getId() == 2 )){
  218 + $tiempoEspera = $cuantoAprobaron->getFechaFinal()->diff(new \DateTime("now"));
  219 + if($tiempoEspera->y >= 1 && $estudio->getIdEstatus()->getId() == 1){
  220 + $estudio->setIdEstatus($this->getDoctrine()->getRepository("AppBundle:Estatus")->findOneById(4));
  221 + $em->persist($estudio);
  222 + $em->flush();
  223 + }else{
  224 + $this->addFlash('warning', 'Ya posee una solicitud en espera o activa, no puede realizar otra solicitud.');
  225 + return $this->redirect($this->generateUrl('servicios_index'));
  226 + }
  227 + }
  228 +
  229 +
  230 + $formExtranjero = $this->createForm('AppBundle\Form\PermisoExtranjeroType');
  231 + $formExtranjero->handleRequest($request);
  232 + if ($formExtranjero->isSubmitted() && $formExtranjero->isValid()) {
  233 +
  234 + $servicios = new DocenteServicio();
  235 +
  236 + $servicios->setIdRolInstitucion($this->getUser()->getIdRolInstitucion());
  237 + $servicios->setIdServicioCe($this->getDoctrine()->getRepository('AppBundle:ServiciosCe')->findOneById(10));
  238 + $servicios->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:estatus')->findOneById(2));
  239 + $servicios->setFechaSolicitud($formExtranjero->get('fechaInicio')->getData());
  240 + $em->persist($servicios);
  241 +
  242 + $permisoTiempo = new DocentePermisoTiempo();
  243 + $permisoTiempo->setFechaInicio($formExtranjero->get('fechaInicio')->getData());
  244 + $permisoTiempo->setFechaFinal($formExtranjero->get('fechaFinal')->getData());
  245 + $permisoTiempo->setIdDocenteServicio($servicios);
  246 + $em->persist($permisoTiempo);
  247 +
  248 +
  249 + $em->flush();
  250 +
  251 + $socioAcademico = $formExtranjero->get('permisoSocioAcademico')->getData();
  252 + $nombreSocioAcademico = md5(uniqid()).'.'.$socioAcademico->guessExtension();
  253 +
  254 + $socioAcademico->move(
  255 + $this->container->getParameter('permiso_directory'),
  256 + $nombreSocioAcademico
  257 + );
  258 + thumbnail3($nombreSocioAcademico, $this->container->getParameter('permiso_directory'), $this->container->getParameter('permiso_thumb_directory'));
  259 +
  260 + verificar_documentos3($servicios->getIdRolInstitucion(),19,2,$em, $nombreSocioAcademico, $servicios);
  261 +
  262 +
  263 +
  264 +
  265 + $regional = $formExtranjero->get('permisoCoordRegional')->getData();
  266 + $nombreRegional = md5(uniqid()).'.'. $regional->guessExtension();
  267 +
  268 + $regional->move(
  269 + $this->container->getParameter('permiso_directory'),
  270 + $nombreRegional
  271 + );
  272 + thumbnail3($nombreRegional, $this->container->getParameter('permiso_directory'), $this->container->getParameter('permiso_thumb_directory'));
  273 +
  274 + verificar_documentos3($servicios->getIdRolInstitucion(),20,2,$em, $nombreRegional, $servicios);
  275 +
  276 + $cartaInvitacion = $formExtranjero->get('cartaInvitacion')->getData();
  277 + $nombreCartaInvitacion = md5(uniqid()).'.'.$cartaInvitacion->guessExtension();
  278 +
  279 + $cartaInvitacion->move(
  280 + $this->container->getParameter('permiso_directory'),
  281 + $nombreCartaInvitacion
  282 + );
  283 + thumbnail3($nombreCartaInvitacion, $this->container->getParameter('permiso_directory'), $this->container->getParameter('permiso_thumb_directory'));
  284 +
  285 + verificar_documentos3($servicios->getIdRolInstitucion(),22,2,$em, $nombreCartaInvitacion, $servicios);
  286 + $this->addFlash('success', 'Permiso para el extranjero solicitado satisfactoriamente');
  287 + return $this->redirect($this->generateUrl('servicios_index'));
  288 + }
  289 +
  290 + /* Fin extranjero */
  291 +
  292 +
  293 + return $this->render('solicitudes/permisos_index.html.twig', array(
  294 + 'formSabatico' => $formSabatico->createView(),
  295 + 'formEstudio' => $formEstudio->createView(),
  296 + 'formExtranjero' => $formExtranjero->createView()
154 )); 297 ));
155 } 298 }
156 299
src/AppBundle/Entity/DocentePermisoTiempo.php
@@ -0,0 +1,137 @@ @@ -0,0 +1,137 @@
  1 +<?php
  2 +
  3 +
  4 +namespace AppBundle\Entity;
  5 +
  6 +use Doctrine\Common\Collections\ArrayCollection;
  7 +use Doctrine\ORM\Mapping as ORM;
  8 +
  9 +
  10 +/**
  11 + * DocentePermisoTiempo
  12 + *
  13 + * @ORM\Table(name="docente_permiso_tiempo")
  14 + * @ORM\Entity
  15 + */
  16 +class DocentePermisoTiempo
  17 +{
  18 +
  19 + /**
  20 + * @var integer
  21 + *
  22 + * @ORM\Column(name="id", type="integer", nullable=false, options={"comment" = "Identificador de la AdscripcionPida"})
  23 + * @ORM\Id
  24 + * @ORM\GeneratedValue(strategy="IDENTITY")
  25 + * @ORM\SequenceGenerator(sequenceName="adscripcion_id_seq", allocationSize=1, initialValue=1)
  26 + */
  27 + private $id;
  28 +
  29 +
  30 + /**
  31 + * @var \AppBundle\Entity\DocenteServicio
  32 + *
  33 + * @ORM\ManyToOne(targetEntity="AppBundle\Entity\DocenteServicio", inversedBy="docentePermisoTiempo")
  34 + * @ORM\JoinColumns({
  35 + * @ORM\JoinColumn(name="id_docente_servicio", referencedColumnName="id", nullable=true)
  36 + * })
  37 + */
  38 + protected $idDocenteServicio;
  39 +
  40 +
  41 +
  42 +
  43 + /** @ORM\Column(type="datetime", nullable=false, options={"comment" = "Fecha que inicia el permiso"})
  44 +
  45 + */
  46 +
  47 + private $fecha_inicio;
  48 +
  49 +
  50 + /** @ORM\Column(type="datetime", nullable=false, options={"comment" = "Fecha finalizacion del permiso"})
  51 +
  52 + */
  53 +
  54 + private $fecha_final;
  55 +
  56 +
  57 +
  58 +
  59 + /**
  60 + * Get id
  61 + *
  62 + * @return integer
  63 + */
  64 + public function getId()
  65 + {
  66 + return $this->id;
  67 + }
  68 +
  69 + /**
  70 + * Set fecha_inicio
  71 + *
  72 + * @param \DateTime $fechaInicio
  73 + * @return DocentePermisoTiempo
  74 + */
  75 + public function setFechaInicio($fechaInicio)
  76 + {
  77 + $this->fecha_inicio = $fechaInicio;
  78 +
  79 + return $this;
  80 + }
  81 +
  82 + /**
  83 + * Get fecha_inicio
  84 + *
  85 + * @return \DateTime
  86 + */
  87 + public function getFechaInicio()
  88 + {
  89 + return $this->fecha_inicio;
  90 + }
  91 +
  92 + /**
  93 + * Set fecha_final
  94 + *
  95 + * @param \DateTime $fechaFinal
  96 + * @return DocentePermisoTiempo
  97 + */
  98 + public function setFechaFinal($fechaFinal)
  99 + {
  100 + $this->fecha_final = $fechaFinal;
  101 +
  102 + return $this;
  103 + }
  104 +
  105 + /**
  106 + * Get fecha_final
  107 + *
  108 + * @return \DateTime
  109 + */
  110 + public function getFechaFinal()
  111 + {
  112 + return $this->fecha_final;
  113 + }
  114 +
  115 + /**
  116 + * Set idDocenteServicio
  117 + *
  118 + * @param \AppBundle\Entity\DocenteServicio $idDocenteServicio
  119 + * @return DocentePermisoTiempo
  120 + */
  121 + public function setIdDocenteServicio(\AppBundle\Entity\DocenteServicio $idDocenteServicio = null)
  122 + {
  123 + $this->idDocenteServicio = $idDocenteServicio;
  124 +
  125 + return $this;
  126 + }
  127 +
  128 + /**
  129 + * Get idDocenteServicio
  130 + *
  131 + * @return \AppBundle\Entity\DocenteServicio
  132 + */
  133 + public function getIdDocenteServicio()
  134 + {
  135 + return $this->idDocenteServicio;
  136 + }
  137 +}
src/AppBundle/Entity/DocenteServicio.php
@@ -51,6 +51,13 @@ class DocenteServicio { @@ -51,6 +51,13 @@ class DocenteServicio {
51 * }) 51 * })
52 */ 52 */
53 protected $idRolInstitucion; 53 protected $idRolInstitucion;
  54 +
  55 +
  56 + /**
  57 + * @ORM\OneToMany(targetEntity="AppBundle\Entity\DocentePermisoTiempo", mappedBy="idDocenteServicio",cascade={"all"})
  58 + * @var \Doctrine\Common\Collections\ArrayCollection
  59 + */
  60 + private $docentePermisoTiempo;
54 61
55 62
56 /** 63 /**
@@ -201,4 +208,44 @@ class DocenteServicio { @@ -201,4 +208,44 @@ class DocenteServicio {
201 { 208 {
202 return $this->fechaUltimaActualizacion; 209 return $this->fechaUltimaActualizacion;
203 } 210 }
  211 + /**
  212 + * Constructor
  213 + */
  214 + public function __construct()
  215 + {
  216 + $this->docentePermisoTiempo = new \Doctrine\Common\Collections\ArrayCollection();
  217 + }
  218 +
  219 + /**
  220 + * Add docentePermisoTiempo
  221 + *
  222 + * @param \AppBundle\Entity\DocentePermisoTiempo $docentePermisoTiempo
  223 + * @return DocenteServicio
  224 + */
  225 + public function addDocentePermisoTiempo(\AppBundle\Entity\DocentePermisoTiempo $docentePermisoTiempo)
  226 + {
  227 + $this->docentePermisoTiempo[] = $docentePermisoTiempo;
  228 +
  229 + return $this;
  230 + }
  231 +
  232 + /**
  233 + * Remove docentePermisoTiempo
  234 + *
  235 + * @param \AppBundle\Entity\DocentePermisoTiempo $docentePermisoTiempo
  236 + */
  237 + public function removeDocentePermisoTiempo(\AppBundle\Entity\DocentePermisoTiempo $docentePermisoTiempo)
  238 + {
  239 + $this->docentePermisoTiempo->removeElement($docentePermisoTiempo);
  240 + }
  241 +
  242 + /**
  243 + * Get docentePermisoTiempo
  244 + *
  245 + * @return \Doctrine\Common\Collections\Collection
  246 + */
  247 + public function getDocentePermisoTiempo()
  248 + {
  249 + return $this->docentePermisoTiempo;
  250 + }
204 } 251 }
src/AppBundle/Form/PermisoEstudioType.php
@@ -0,0 +1,113 @@ @@ -0,0 +1,113 @@
  1 +<?php
  2 +
  3 +namespace AppBundle\Form;
  4 +
  5 +use Symfony\Component\Form\AbstractType;
  6 +use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  7 +use Symfony\Component\Form\Extension\Core\Type\DateType;
  8 +use Symfony\Component\Form\FormBuilderInterface;
  9 +use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  10 +
  11 +use Symfony\Component\Validator\Constraints\Date;
  12 +use Symfony\Component\Validator\Constraints\File;
  13 +use Symfony\Component\Validator\Constraints\NotBlank;
  14 +use Symfony\Component\Form\Extension\Core\Type\FileType;
  15 +
  16 +class PermisoEstudioType extends AbstractType
  17 +{
  18 + /**
  19 + * @param FormBuilderInterface $builder
  20 + * @param array $options
  21 + */
  22 + public function buildForm(FormBuilderInterface $builder, array $options)
  23 + {
  24 + $builder
  25 + ->add('fechaInicio',DateType::class, array(
  26 + 'widget' => 'choice',
  27 + 'label' => 'Permisio inicia desde',
  28 + 'label_attr' => array('class' => 'form-group'),
  29 + 'years' => range(date("Y")-4, date("Y")),
  30 + 'placeholder' => array(
  31 + 'year' => 'Año', 'month' => 'Mes', 'day' => 'Día',
  32 + ),
  33 + 'constraints' => array(
  34 + new NotBlank(),
  35 + new Date()
  36 + )
  37 + ))
  38 + ->add('tiempo', ChoiceType::class, array(
  39 + 'placeholder' => 'Tiempo Solicitado',
  40 + 'choices' => array(
  41 + '1' => "1 Mes",
  42 + '2' => "2 meses",
  43 + '3' => "3 meses",
  44 + ),
  45 + 'constraints' => array(
  46 + new NotBlank(),
  47 + )
  48 + ))
  49 + ->add('permisoSocioAcademico', FileType::class, array(
  50 + 'label' => 'Digital aprobación socio-académico',
  51 + 'constraints' => array(
  52 + new NotBlank(),
  53 + new File(array(
  54 + 'maxSize' => '1024K',
  55 + 'mimeTypes' => [
  56 + 'application/pdf',
  57 + 'application/x-pdf',
  58 + 'image/png',
  59 + 'image/jpg',
  60 + 'image/jpeg'
  61 + ],
  62 + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf'
  63 + ))
  64 + )
  65 + ))
  66 + ->add('permisoCoordRegional', FileType::class, array(
  67 + 'label' => 'Digital aprobación coordinación regional del CEA',
  68 + 'constraints' => array(
  69 + new NotBlank(),
  70 + new File(array(
  71 + 'maxSize' => '1024K',
  72 + 'mimeTypes' => [
  73 + 'application/pdf',
  74 + 'application/x-pdf',
  75 + 'image/png',
  76 + 'image/jpg',
  77 + 'image/jpeg'
  78 + ],
  79 + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf'
  80 + ))
  81 + )
  82 + ))
  83 +
  84 + ->add('cartaTesis', FileType::class, array(
  85 + 'label' => 'Digital carta de culminación de materias',
  86 + 'constraints' => array(
  87 + new NotBlank(),
  88 + new File(array(
  89 + 'maxSize' => '1024K',
  90 + 'mimeTypes' => [
  91 + 'application/pdf',
  92 + 'application/x-pdf',
  93 + 'image/png',
  94 + 'image/jpg',
  95 + 'image/jpeg'
  96 + ],
  97 + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf'
  98 + ))
  99 + )
  100 + ))
  101 +
  102 + ->add('send', SubmitType::class, array(
  103 + 'label' => 'Enviar motivo',
  104 + 'attr' => array(
  105 + 'class' => 'btn btn-success btn-block',
  106 + 'data-loading-text' => "<i class='fa fa-circle-o-notch fa-spin'></i> Procesando Solicitud..."
  107 + )
  108 + ))
  109 + ;
  110 + }
  111 +
  112 +
  113 +}
src/AppBundle/Form/PermisoExtranjeroType.php
@@ -0,0 +1,115 @@ @@ -0,0 +1,115 @@
  1 +<?php
  2 +
  3 +namespace AppBundle\Form;
  4 +
  5 +use Symfony\Component\Form\AbstractType;
  6 +use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  7 +use Symfony\Component\Form\Extension\Core\Type\DateType;
  8 +use Symfony\Component\Form\FormBuilderInterface;
  9 +use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  10 +
  11 +use Symfony\Component\Validator\Constraints\Date;
  12 +use Symfony\Component\Validator\Constraints\File;
  13 +use Symfony\Component\Validator\Constraints\NotBlank;
  14 +use Symfony\Component\Form\Extension\Core\Type\FileType;
  15 +
  16 +class PermisoExtranjeroType extends AbstractType
  17 +{
  18 + /**
  19 + * @param FormBuilderInterface $builder
  20 + * @param array $options
  21 + */
  22 + public function buildForm(FormBuilderInterface $builder, array $options)
  23 + {
  24 + $builder
  25 + ->add('fechaInicio',DateType::class, array(
  26 + 'widget' => 'choice',
  27 + 'label' => 'Permisio inicia desde',
  28 + 'label_attr' => array('class' => 'form-group'),
  29 + 'years' => range(date("Y"), date("Y") +4),
  30 + 'placeholder' => array(
  31 + 'year' => 'Año', 'month' => 'Mes', 'day' => 'Día',
  32 + ),
  33 + 'constraints' => array(
  34 + new NotBlank(),
  35 + new Date()
  36 + )
  37 + ))
  38 + ->add('fechaFinal',DateType::class, array(
  39 + 'widget' => 'choice',
  40 + 'label' => 'Permisio finaliza',
  41 + 'label_attr' => array('class' => 'form-group'),
  42 + 'years' => range(date("Y"), date("Y") +4),
  43 + 'placeholder' => array(
  44 + 'year' => 'Año', 'month' => 'Mes', 'day' => 'Día',
  45 + ),
  46 + 'constraints' => array(
  47 + new NotBlank(),
  48 + new Date()
  49 + )
  50 + ))
  51 + ->add('permisoSocioAcademico', FileType::class, array(
  52 + 'label' => 'Digital aprobación socio-académico',
  53 + 'constraints' => array(
  54 + new NotBlank(),
  55 + new File(array(
  56 + 'maxSize' => '1024K',
  57 + 'mimeTypes' => [
  58 + 'application/pdf',
  59 + 'application/x-pdf',
  60 + 'image/png',
  61 + 'image/jpg',
  62 + 'image/jpeg'
  63 + ],
  64 + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf'
  65 + ))
  66 + )
  67 + ))
  68 + ->add('permisoCoordRegional', FileType::class, array(
  69 + 'label' => 'Digital aprobación coordinación regional del CEA',
  70 + 'constraints' => array(
  71 + new NotBlank(),
  72 + new File(array(
  73 + 'maxSize' => '1024K',
  74 + 'mimeTypes' => [
  75 + 'application/pdf',
  76 + 'application/x-pdf',
  77 + 'image/png',
  78 + 'image/jpg',
  79 + 'image/jpeg'
  80 + ],
  81 + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf'
  82 + ))
  83 + )
  84 + ))
  85 +
  86 + ->add('cartaInvitacion', FileType::class, array(
  87 + 'label' => 'Digital carta de invitación al extranjero',
  88 + 'constraints' => array(
  89 + new NotBlank(),
  90 + new File(array(
  91 + 'maxSize' => '1024K',
  92 + 'mimeTypes' => [
  93 + 'application/pdf',
  94 + 'application/x-pdf',
  95 + 'image/png',
  96 + 'image/jpg',
  97 + 'image/jpeg'
  98 + ],
  99 + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf'
  100 + ))
  101 + )
  102 + ))
  103 +
  104 + ->add('send', SubmitType::class, array(
  105 + 'label' => 'Enviar motivo',
  106 + 'attr' => array(
  107 + 'class' => 'btn btn-success btn-block',
  108 + 'data-loading-text' => "<i class='fa fa-circle-o-notch fa-spin'></i> Procesando Solicitud..."
  109 + )
  110 + ))
  111 + ;
  112 + }
  113 +
  114 +
  115 +}
src/AppBundle/Form/PermisoSabaticoType.php
@@ -10,9 +10,11 @@ @@ -10,9 +10,11 @@
10 namespace AppBundle\Form; 10 namespace AppBundle\Form;
11 11
12 use Symfony\Component\Form\AbstractType; 12 use Symfony\Component\Form\AbstractType;
  13 +use Symfony\Component\Form\Extension\Core\Type\DateType;
13 use Symfony\Component\Form\FormBuilderInterface; 14 use Symfony\Component\Form\FormBuilderInterface;
14 use Symfony\Component\Form\Extension\Core\Type\SubmitType; 15 use Symfony\Component\Form\Extension\Core\Type\SubmitType;
15 16
  17 +use Symfony\Component\Validator\Constraints\Date;
16 use Symfony\Component\Validator\Constraints\File; 18 use Symfony\Component\Validator\Constraints\File;
17 use Symfony\Component\Validator\Constraints\NotBlank; 19 use Symfony\Component\Validator\Constraints\NotBlank;
18 use Symfony\Component\Form\Extension\Core\Type\FileType; 20 use Symfony\Component\Form\Extension\Core\Type\FileType;
@@ -23,6 +25,20 @@ class PermisoSabaticoType extends AbstractType @@ -23,6 +25,20 @@ class PermisoSabaticoType extends AbstractType
23 public function buildForm(FormBuilderInterface $builder, array $options) 25 public function buildForm(FormBuilderInterface $builder, array $options)
24 { 26 {
25 $builder 27 $builder
  28 +
  29 + ->add('fechaInicio',DateType::class, array(
  30 + 'widget' => 'choice',
  31 + 'label' => 'Permisio inicia desde',
  32 + 'label_attr' => array('class' => 'form-group'),
  33 + 'years' => range(date("Y"), date("Y")+2),
  34 + 'placeholder' => array(
  35 + 'year' => 'Año', 'month' => 'Mes', 'day' => 'Día',
  36 + ),
  37 + 'constraints' => array(
  38 + new NotBlank(),
  39 + new Date()
  40 + )
  41 + ))
26 42
27 ->add('motivo', FileType::class, array( 43 ->add('motivo', FileType::class, array(
28 'label' => 'Digital Carta Exposición de Motivos', 44 'label' => 'Digital Carta Exposición de Motivos',