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 261 {% else %}
262 262 <div class="col-md-5">
263 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 266 <div class="widget-content">
265 267  
266 268  
... ...
app/Resources/views/solicitudes/permisos_index.html.twig
... ... @@ -51,7 +51,20 @@
51 51 <div id="1" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne1">
52 52 <div class="panel-body">
53 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 68 </div>
56 69 </div>
57 70 </div>
... ... @@ -67,7 +80,21 @@
67 80 <div class="panel-body">
68 81 Necesitar salir al extranjero a realizar una ponencia, taller, entre otros, gestiona
69 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 98 </div>
72 99 </div>
73 100 </div>
... ...
src/AppBundle/Controller/AppController.php
... ... @@ -7,6 +7,8 @@
7 7 */
8 8  
9 9 namespace AppBundle\Controller;
  10 +use AppBundle\Entity\DocentePermisoTiempo;
  11 +use AppBundle\Entity\DocumentosVerificados;
10 12 use Symfony\Bundle\FrameworkBundle\Controller\Controller;
11 13 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
12 14 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
... ... @@ -268,11 +270,25 @@ class AppController extends Controller {
268 270  
269 271 $parametros = $request->request->all();
270 272  
  273 +
271 274 //Guardar el resultado de la verificación de Documentos de los permisos sabaticos
272 275 if($servicios->getIdServicioCe()->getId() == 8){
273 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 294 }else{
... ... @@ -288,6 +304,18 @@ class AppController extends Controller {
288 304 if($servicios->getIdServicioCe()->getId() == 8){
289 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 321 $em->persist($servicios);
... ... @@ -338,10 +366,11 @@ class AppController extends Controller {
338 366 }
339 367  
340 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 375 if(!$existe) {
347 376 $verificacion = new DocumentosVerificados();
... ...
src/AppBundle/Controller/PermisosController.php
... ... @@ -8,6 +8,7 @@
8 8  
9 9 namespace AppBundle\Controller;
10 10  
  11 +use AppBundle\Entity\DocentePermisoTiempo;
11 12 use AppBundle\Entity\DocumentosVerificados;
12 13 use AppBundle\Entity\PidaCaducidad;
13 14 use AppBundle\Entity\PidaEstatus;
... ... @@ -56,7 +57,7 @@ class PermisosController extends Controller
56 57 );
57 58  
58 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 61 if($tiempoEspera->y >= 7 && $sabatico->getIdEstatus()->getId() == 1){
61 62 $sabatico->setIdEstatus($this->getDoctrine()->getRepository("AppBundle:Estatus")->findOneById(4));
62 63 $em->persist($sabatico);
... ... @@ -78,6 +79,18 @@ class PermisosController extends Controller
78 79 $servicios->setIdServicioCe($this->getDoctrine()->getRepository('AppBundle:ServiciosCe')->findOneById(8));
79 80 $servicios->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:estatus')->findOneById(2));
80 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 94 $em->flush();
82 95  
83 96 $motivo = $formSabatico->get('motivo')->getData();
... ... @@ -105,52 +118,182 @@ class PermisosController extends Controller
105 118 'idRolInstitucion' => $docente, 'idServicioCe' => 9 ),
106 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 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 127 if($tiempoEspera->y >= 1 && $estudio->getIdEstatus()->getId() == 1){
112 128 $estudio->setIdEstatus($this->getDoctrine()->getRepository("AppBundle:Estatus")->findOneById(4));
113 129 $em->persist($estudio);
114 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 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 142 $servicios = new DocenteServicio();
127 143  
128 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 146 $servicios->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:estatus')->findOneById(2));
  147 + $servicios->setFechaSolicitud($formEstudio->get('fechaInicio')->getData());
131 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 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 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 199 return $this->redirect($this->generateUrl('servicios_index'));
146 200 }
147 201  
148 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 @@
  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 51 * })
52 52 */
53 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 208 {
202 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 @@
  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 @@
  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 10 namespace AppBundle\Form;
11 11  
12 12 use Symfony\Component\Form\AbstractType;
  13 +use Symfony\Component\Form\Extension\Core\Type\DateType;
13 14 use Symfony\Component\Form\FormBuilderInterface;
14 15 use Symfony\Component\Form\Extension\Core\Type\SubmitType;
15 16  
  17 +use Symfony\Component\Validator\Constraints\Date;
16 18 use Symfony\Component\Validator\Constraints\File;
17 19 use Symfony\Component\Validator\Constraints\NotBlank;
18 20 use Symfony\Component\Form\Extension\Core\Type\FileType;
... ... @@ -23,6 +25,20 @@ class PermisoSabaticoType extends AbstractType
23 25 public function buildForm(FormBuilderInterface $builder, array $options)
24 26 {
25 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 43 ->add('motivo', FileType::class, array(
28 44 'label' => 'Digital Carta Exposición de Motivos',
... ...