Commit 32adfbad7bf2100bdee5d1b4e3ea823b74d0494c
1 parent
901bbe6e0a
Exists in
master
creada la estructura, la entidad, el controlador, la vista y la plantilla para solicitar ascenso
Showing
6 changed files
with
1274 additions
and
1 deletions
Show diff stats
app/Resources/views/base_app.html.twig
... | ... | @@ -59,7 +59,7 @@ |
59 | 59 | </a> |
60 | 60 | <ul class="dropdown-menu"> |
61 | 61 | <li><a href="{{ path('servicios_index') }}">Mis Servicios</a></li> |
62 | - <li><a href="#">Solicitar Ascenso</a></li> | |
62 | + <li><a href="{{ path('cea_solicitud_ascenso') }}">Solicitar Ascenso</a></li> | |
63 | 63 | <li><a href="{{ path( 'cea_solicitudes_estado_academico' ) }}">Solicitar Estado Académico</a></li> |
64 | 64 | <li><a href="{{ path('cea_solicitudes_recocimiento_antiguedad') }}">Reconocimiento de Antiguedad</a></li> |
65 | 65 | </ul> | ... | ... |
app/Resources/views/solicitudes/ascenso.html.twig
... | ... | @@ -0,0 +1,60 @@ |
1 | +{% extends 'base_app.html.twig' %} | |
2 | + | |
3 | +{% block stylesheets %} | |
4 | + {{ parent() }} | |
5 | + | |
6 | + <style> | |
7 | + .esc_oposicion, .esc_asistente, .esc_agregado, .esc_asociado, .esc_titular{ | |
8 | + display: none; | |
9 | + } | |
10 | + | |
11 | + h1, h4{ | |
12 | + margin:0; | |
13 | + } | |
14 | + | |
15 | + .container{ | |
16 | + margin-bottom: 0; | |
17 | + } | |
18 | + </style> | |
19 | +{% endblock %} | |
20 | + | |
21 | + | |
22 | + | |
23 | +{% block body %} | |
24 | + <div class="container"> | |
25 | + <h4 class="alert alert-info"><i class="fa fa-info-circle"></i> | |
26 | + Estimado (a) Docente | |
27 | + <strong>{{app.user.idRolInstitucion.idRol.idPersona.primerNombre}} | |
28 | + {{app.user.idRolInstitucion.idRol.idPersona.primerApellido}}</strong>, | |
29 | + En este apartado usted podrá solicitar el ascenso al siguiente escalafón. | |
30 | + | |
31 | + </h4> | |
32 | + </div> | |
33 | + <div class="account-container register"> | |
34 | + <div class="content clearfix"> | |
35 | + <h1>Solicitud de Ascenso</h1> | |
36 | + {% form_theme form 'bootstrap_3_layout.html.twig' %} | |
37 | + {{ form_start(form) }} | |
38 | + {{ form_widget(form) }} | |
39 | + {{ form_end(form) }} | |
40 | + </div> | |
41 | + | |
42 | + </div> | |
43 | + | |
44 | + | |
45 | +{% endblock %} | |
46 | + | |
47 | + | |
48 | + | |
49 | + | |
50 | +{% block javascripts %} | |
51 | + {{ parent() }} | |
52 | + <script type="text/javascript"> | |
53 | + $('#ascenso_tipoTrabajoInvestigacion').click(function() { | |
54 | + | |
55 | + $('.esc_oposicion')[this.checked ? "show" : "hide"](); | |
56 | + | |
57 | + }); | |
58 | + | |
59 | + </script> | |
60 | +{% endblock %} | ... | ... |
src/AppBundle/Controller/AscensoController.php
... | ... | @@ -0,0 +1,173 @@ |
1 | +<?php | |
2 | +/** | |
3 | + * Created by PhpStorm. | |
4 | + * User: ubv-cipee | |
5 | + * Date: 29/06/16 | |
6 | + * Time: 09:08 AM | |
7 | + */ | |
8 | + | |
9 | +namespace AppBundle\Controller; | |
10 | + | |
11 | + | |
12 | +use Symfony\Component\HttpFoundation\File\UploadedFile; | |
13 | +use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | |
14 | +use Symfony\Bundle\FrameworkBundle\Controller\Controller; | |
15 | +use Symfony\Component\HttpFoundation\Request; | |
16 | +use AppBundle\Entity\Ascenso; | |
17 | +use AppBundle\Entity\DocenteEscala; | |
18 | +use AppBundle\Entity\Memorando; | |
19 | +use AppBundle\Entity\DocenteServicio; | |
20 | +use AppBundle\Entity\AdscripcionPida; | |
21 | + | |
22 | + | |
23 | +use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; | |
24 | +use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; | |
25 | + | |
26 | +class AscensoController extends Controller | |
27 | +{ | |
28 | + /** | |
29 | + * @Route("/solicitud/ascenso", name="cea_solicitud_ascenso") | |
30 | + */ | |
31 | + public function ascensoAction(Request $request) | |
32 | + { | |
33 | + | |
34 | + | |
35 | + $escala = $this->getDoctrine()->getRepository('AppBundle:DocenteEscala')->findOneBy( | |
36 | + array('idRolInstitucion' => $this->getUser()->getIdRolInstitucion()), | |
37 | + array('id' => 'DESC') | |
38 | + ); | |
39 | + | |
40 | + $siguiente = $escala->getIdEscala()->getId() + 1; | |
41 | + $ascenso = new Ascenso(); | |
42 | + if($siguiente < 6){ | |
43 | + $nueva_escala = $this->getDoctrine()->getRepository('AppBundle:Escalafones')->findOneById($siguiente); | |
44 | + } | |
45 | + | |
46 | + | |
47 | + | |
48 | + | |
49 | + | |
50 | + $form = $this->createForm('AppBundle\Form\AscensoType'); | |
51 | + $form->handleRequest($request); | |
52 | + | |
53 | + | |
54 | + if ($form->isSubmitted() && $form->isValid()) { | |
55 | + | |
56 | + $ascenso = new Ascenso(); | |
57 | + // $file stores the uploaded PDF file | |
58 | + /** @var UploadedFile $constanciaTrabajo */ | |
59 | + $constanciaTrabajo = $form->get('trabajo')->getData(); | |
60 | + /** @var UploadedFile $constanciaPregrado */ | |
61 | + $constanciaExpediente = $form->get('expediente')->getData(); | |
62 | + /** @var UploadedFile $constanciaPregrado */ | |
63 | + $constanciaPida = $form->get('pida')->getData(); | |
64 | + /** @var UploadedFile $constanciaPregrado */ | |
65 | + $constanciaNai = $form->get('nai')->getData(); | |
66 | + /** @var UploadedFile $constanciaPregrado */ | |
67 | + $constanciaInvestigacion = $form->get('investigacion')->getData(); | |
68 | + | |
69 | + | |
70 | + | |
71 | + // Generate a unique name for the file before saving it | |
72 | + $nombreTrabajo = md5(uniqid()).'.'.$constanciaTrabajo->guessExtension(); | |
73 | + $nombreExpediente = md5(uniqid()).'.'.$constanciaExpediente->guessExtension(); | |
74 | + $nombrePida = md5(uniqid()).'.'.$constanciaPida->guessExtension(); | |
75 | + $nombreNai = md5(uniqid()).'.'.$constanciaNai->guessExtension(); | |
76 | + $nombreInvestigacion = md5(uniqid()).'.'.$constanciaInvestigacion->guessExtension(); | |
77 | + | |
78 | + // Guardar el archivo y crear la miniatura de cada uno | |
79 | + $constanciaTrabajo->move( | |
80 | + $this->container->getParameter('ascenso_directory'), | |
81 | + $nombreTrabajo | |
82 | + ); | |
83 | + thumbnail($nombreTrabajo, $this->container->getParameter('ascenso_directory'), $this->container->getParameter('ascenso_thumb_directory')); | |
84 | + | |
85 | + | |
86 | + $constanciaExpediente->move( | |
87 | + $this->container->getParameter('ascenso_directory'), | |
88 | + $nombreExpediente | |
89 | + ); | |
90 | + thumbnail($nombreExpediente, $this->container->getParameter('ascenso_directory'), $this->container->getParameter('ascenso_thumb_directory')); | |
91 | + | |
92 | + $constanciaPida->move( | |
93 | + $this->container->getParameter('ascenso_directory'), | |
94 | + $nombrePida | |
95 | + ); | |
96 | + thumbnail($nombrePida, $this->container->getParameter('ascenso_directory'), $this->container->getParameter('ascenso_thumb_directory')); | |
97 | + | |
98 | + | |
99 | + $constanciaNai->move( | |
100 | + $this->container->getParameter('ascenso_directory'), | |
101 | + $nombreNai | |
102 | + ); | |
103 | + thumbnail($nombreNai, $this->container->getParameter('ascenso_directory'), $this->container->getParameter('ascenso_thumb_directory')); | |
104 | + | |
105 | + if($form->get('investigacion')->getData()) { | |
106 | + /** @var UploadedFile $constanciaPostgrado */ | |
107 | + $constanciaInvestigacion = $form->get('investigacion')->getData(); | |
108 | + $nombreInvestigacion = md5(uniqid()).'.'.$constanciaInvestigacion->guessExtension(); | |
109 | + $constanciaInvestigacion->move( | |
110 | + $this->container->getParameter('ascenso_directory'), | |
111 | + $nombreInvestigacion | |
112 | + ); | |
113 | + thumbnail($nombreInvestigacion, $this->container->getParameter('ascenso_directory'), $this->container->getParameter('ascenso_thumb_directory')); | |
114 | + $ascenso->setInvestigacion($nombreInvestigacion); | |
115 | + } | |
116 | + $em = $this->getDoctrine()->getManager(); | |
117 | + | |
118 | + $ascenso->setTrabajo($nombreTrabajo); | |
119 | + $ascenso->setExpediente($nombreExpediente); | |
120 | + $ascenso->setIdRolInstitucion($this->getUser()->getIdRolInstitucion()); | |
121 | + $ascenso->setPida($nombrePida); | |
122 | + $ascenso->setNai($nombreNai); | |
123 | + $ascenso->setInvestigacion($nombreInvestigacion); | |
124 | + $ascenso->setTituloTrabajo($form->get('titulo_trabajo')->getData()); | |
125 | + $ascenso->setIdEscalafones($nueva_escala); | |
126 | + $ascenso->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:Estatus')->findOneById(2)); | |
127 | + | |
128 | + | |
129 | + if ($form->get('pertinencia')->getData()){ | |
130 | + | |
131 | + $constanciaPertinencia = $form->get('pertinencia')->getData(); | |
132 | + $nombrePertinencia = md5(uniqid()).'.'.$constanciaPertinencia->guessExtension(); | |
133 | + $constanciaPertinencia->move( | |
134 | + $this->container->getParameter('ascenso_directory'), | |
135 | + $nombrePertinencia | |
136 | + ); | |
137 | + thumbnail($nombrePertinencia, $this->container->getParameter('ascenso_directory'), $this->container->getParameter('ascenso_thumb_directory')); | |
138 | + $ascenso->setPertinencia($nombrePertinencia); | |
139 | + $ascenso->setIdLineaInvestigacion($form->get('lineas_investigacion')->getData()); | |
140 | + | |
141 | + } | |
142 | + | |
143 | + | |
144 | + | |
145 | + | |
146 | + //Crear la solicitud de Servicio | |
147 | + $servicios = new DocenteServicio(); | |
148 | + | |
149 | + $servicios->setIdRolInstitucion($this->getUser()->getIdRolInstitucion()); | |
150 | + $servicios->setIdServicioCe($this->getDoctrine()->getRepository('AppBundle:ServiciosCe')->findOneById(5)); | |
151 | + $servicios->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:estatus')->findOneById(2)); | |
152 | + | |
153 | + $em->persist($servicios); | |
154 | + $em->persist($ascenso); | |
155 | + | |
156 | + $em->flush(); //guarda en la base de datos | |
157 | + | |
158 | + | |
159 | + | |
160 | + | |
161 | + return $this->redirect($this->generateUrl('cea_index')); | |
162 | + } | |
163 | + | |
164 | + return $this->render( | |
165 | + 'solicitudes/ascenso.html.twig', | |
166 | + array('form' => $form->createView()) | |
167 | + ); | |
168 | + } | |
169 | + | |
170 | + | |
171 | + | |
172 | +} | |
173 | + | ... | ... |
src/AppBundle/Entity/Ascenso.php
... | ... | @@ -0,0 +1,444 @@ |
1 | +<?php | |
2 | + | |
3 | +namespace AppBundle\Entity; | |
4 | + | |
5 | +use Doctrine\ORM\Mapping as ORM; | |
6 | +use Symfony\Component\Validator\Constraints as Assert; | |
7 | + | |
8 | + | |
9 | +/** | |
10 | + * Ascenso | |
11 | + * | |
12 | + * @ORM\Table(name="solicitud_ascenso", uniqueConstraints={@ORM\UniqueConstraint(name="ascenso_id_rol_institucion_docente_escalafones", columns={"id_rol_institucion", "id_escalafones"})}) | |
13 | + * @ORM\Entity | |
14 | + * @ORM\HasLifecycleCallbacks() | |
15 | + */ | |
16 | +class Ascenso | |
17 | +{ | |
18 | + | |
19 | + /** | |
20 | + * @var integer | |
21 | + * | |
22 | + * @ORM\Column(name="id", type="integer", nullable=false, options={"comment" = "Identificador del Ascenso"}) | |
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\RolInstitucion | |
32 | + * | |
33 | + * @ORM\ManyToOne(targetEntity="AppBundle\Entity\RolInstitucion") | |
34 | + * @ORM\JoinColumns({ | |
35 | + * @ORM\JoinColumn(name="id_rol_institucion", referencedColumnName="id", nullable=false) | |
36 | + * }) | |
37 | + */ | |
38 | + protected $idRolInstitucion; | |
39 | + | |
40 | + | |
41 | + | |
42 | + /** | |
43 | + * @var \AppBundle\Entity\Escalafones | |
44 | + * | |
45 | + * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Escalafones") | |
46 | + * @ORM\JoinColumns({ | |
47 | + * @ORM\JoinColumn(name="id_escalafones", referencedColumnName="id", nullable=false) | |
48 | + * }) | |
49 | + */ | |
50 | + protected $idEscalafones; | |
51 | + | |
52 | + | |
53 | + /** | |
54 | + * @ORM\Column(type="string", nullable=false, options={"comment" = "ubicacion de la constancia de trabajo"}) | |
55 | + * | |
56 | + * @Assert\NotBlank(message="Debe cargar su constancia de Trabajo, es obligatoria.") | |
57 | + * @Assert\File(mimeTypes={ "application/pdf" }) | |
58 | + */ | |
59 | + private $trabajo; | |
60 | + | |
61 | + | |
62 | + /** | |
63 | + * @ORM\Column(type="string", nullable=false, options={"comment" = "ubicacion de la constancia de actualización de Expediente"}) | |
64 | + * | |
65 | + * @Assert\NotBlank(message="debe cargar su constancia de actualización de expediente, es obligatorio.") | |
66 | + * @Assert\File(mimeTypes={ "application/pdf" }) | |
67 | + */ | |
68 | + private $expediente; | |
69 | + | |
70 | + | |
71 | + /** | |
72 | + * @ORM\Column(type="string", nullable=false, options={"comment" = "ubicacion de la socialización del PIDA"}) | |
73 | + * | |
74 | + * @Assert\NotBlank(message="debe cargar su constancia de socializacion del PIDA, es obligatorio.") | |
75 | + * @Assert\File(mimeTypes={ "application/pdf" }) | |
76 | + */ | |
77 | + private $pida; | |
78 | + | |
79 | + /** | |
80 | + * @ORM\Column(type="string", nullable=false, options={"comment" = "digital del documento aval del nucleo academico de investigacion"}) | |
81 | + * | |
82 | + * @Assert\NotBlank(message="debe cargar su constnacia aval del NAI, es obligatorio.") | |
83 | + * @Assert\File(mimeTypes={ "application/pdf" }) | |
84 | + */ | |
85 | + private $nai; | |
86 | + | |
87 | + /** | |
88 | + * @ORM\Column(type="string", nullable=false, options={"comment" = "digital del documento de Trabajo de investigacion"}) | |
89 | + * | |
90 | + * @Assert\NotBlank(message="debe cargar su Trabajo de investigacion, es obligatorio.") | |
91 | + * @Assert\File(mimeTypes={ "application/pdf" }) | |
92 | + */ | |
93 | + private $investigacion; | |
94 | + | |
95 | + | |
96 | + /** | |
97 | + * @ORM\Column(type="string", nullable=true, options={"comment" = "ubicación del digital del informe de pertinencia en caso de ser tesis fuera de ubv"}) | |
98 | + * | |
99 | + * | |
100 | + * @Assert\File(mimeTypes={ "application/pdf" }) | |
101 | + */ | |
102 | + private $pertinencia; | |
103 | + | |
104 | + | |
105 | + /** | |
106 | + * @ORM\Column(name="titulo_trabajo", type="string", nullable=false, options={"comment" = "titulo del trabajo de investigacion"}) | |
107 | + * @Assert\NotBlank(message="Titulo del Trabajo es obligatorio.") | |
108 | + */ | |
109 | + private $tituloTrabajo; | |
110 | + | |
111 | + | |
112 | + /** | |
113 | + * @ORM\Column(name="observacion", type="string", nullable=true, options={"comment" = "titulo del trabajo de investigacion"}) | |
114 | + */ | |
115 | + private $observacion; | |
116 | + | |
117 | + | |
118 | + /** @ORM\Column(type="datetime", nullable=false, options={"comment" = "Fecha de creación de la solicitud"}) | |
119 | + | |
120 | + */ | |
121 | + | |
122 | + private $fecha_creacion; | |
123 | + | |
124 | + | |
125 | + /** @ORM\Column(type="datetime", nullable=false, options={"comment" = "Fecha de actualizacion de la solicitud"}) | |
126 | + | |
127 | + */ | |
128 | + | |
129 | + private $fecha_ultima_actualizacion; | |
130 | + | |
131 | + /** | |
132 | + * @var \AppBundle\Entity\Estatus | |
133 | + * | |
134 | + * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Estatus") | |
135 | + * @ORM\JoinColumns({ | |
136 | + * @ORM\JoinColumn(name="id_estatus", referencedColumnName="id", nullable=false) | |
137 | + * }) | |
138 | + */ | |
139 | + protected $idEstatus; | |
140 | + | |
141 | + | |
142 | + /** | |
143 | + * @ORM\PrePersist | |
144 | + */ | |
145 | + public function setFechaCreacion() | |
146 | + { | |
147 | + $this->fecha_creacion = new \DateTime(); | |
148 | + $this->fecha_ultima_actualizacion = new \DateTime(); | |
149 | + } | |
150 | + | |
151 | + public function getFechaCreacion() | |
152 | + { | |
153 | + return $this->fecha_creacion; | |
154 | + | |
155 | + } | |
156 | + | |
157 | + | |
158 | + /** | |
159 | + * @ORM\PreUpdate | |
160 | + */ | |
161 | + public function setFechaUltimaActualizacion() | |
162 | + { | |
163 | + $this->fecha_utlima_actualizacion = new \DateTime(); | |
164 | + } | |
165 | + | |
166 | + | |
167 | + | |
168 | + /** | |
169 | + * Get id | |
170 | + * | |
171 | + * @return integer | |
172 | + */ | |
173 | + public function getId() | |
174 | + { | |
175 | + return $this->id; | |
176 | + } | |
177 | + | |
178 | + /** | |
179 | + * Set trabajo | |
180 | + * | |
181 | + * @param string $trabajo | |
182 | + * @return Ascenso | |
183 | + */ | |
184 | + public function setTrabajo($trabajo) | |
185 | + { | |
186 | + $this->trabajo = $trabajo; | |
187 | + | |
188 | + return $this; | |
189 | + } | |
190 | + | |
191 | + /** | |
192 | + * Get trabajo | |
193 | + * | |
194 | + * @return string | |
195 | + */ | |
196 | + public function getTrabajo() | |
197 | + { | |
198 | + return $this->trabajo; | |
199 | + } | |
200 | + | |
201 | + /** | |
202 | + * Set expediente | |
203 | + * | |
204 | + * @param string $expediente | |
205 | + * @return Ascenso | |
206 | + */ | |
207 | + public function setExpediente($expediente) | |
208 | + { | |
209 | + $this->expediente = $expediente; | |
210 | + | |
211 | + return $this; | |
212 | + } | |
213 | + | |
214 | + /** | |
215 | + * Get expediente | |
216 | + * | |
217 | + * @return string | |
218 | + */ | |
219 | + public function getExpediente() | |
220 | + { | |
221 | + return $this->expediente; | |
222 | + } | |
223 | + | |
224 | + /** | |
225 | + * Set pida | |
226 | + * | |
227 | + * @param string $pida | |
228 | + * @return Ascenso | |
229 | + */ | |
230 | + public function setPida($pida) | |
231 | + { | |
232 | + $this->pida = $pida; | |
233 | + | |
234 | + return $this; | |
235 | + } | |
236 | + | |
237 | + /** | |
238 | + * Get pida | |
239 | + * | |
240 | + * @return string | |
241 | + */ | |
242 | + public function getPida() | |
243 | + { | |
244 | + return $this->pida; | |
245 | + } | |
246 | + | |
247 | + /** | |
248 | + * Set nai | |
249 | + * | |
250 | + * @param string $nai | |
251 | + * @return Ascenso | |
252 | + */ | |
253 | + public function setNai($nai) | |
254 | + { | |
255 | + $this->nai = $nai; | |
256 | + | |
257 | + return $this; | |
258 | + } | |
259 | + | |
260 | + /** | |
261 | + * Get nai | |
262 | + * | |
263 | + * @return string | |
264 | + */ | |
265 | + public function getNai() | |
266 | + { | |
267 | + return $this->nai; | |
268 | + } | |
269 | + | |
270 | + /** | |
271 | + * Set investigacion | |
272 | + * | |
273 | + * @param string $investigacion | |
274 | + * @return Ascenso | |
275 | + */ | |
276 | + public function setInvestigacion($investigacion) | |
277 | + { | |
278 | + $this->investigacion = $investigacion; | |
279 | + | |
280 | + return $this; | |
281 | + } | |
282 | + | |
283 | + /** | |
284 | + * Get investigacion | |
285 | + * | |
286 | + * @return string | |
287 | + */ | |
288 | + public function getInvestigacion() | |
289 | + { | |
290 | + return $this->investigacion; | |
291 | + } | |
292 | + | |
293 | + /** | |
294 | + * Set pertinencia | |
295 | + * | |
296 | + * @param string $pertinencia | |
297 | + * @return Ascenso | |
298 | + */ | |
299 | + public function setPertinencia($pertinencia) | |
300 | + { | |
301 | + $this->pertinencia = $pertinencia; | |
302 | + | |
303 | + return $this; | |
304 | + } | |
305 | + | |
306 | + /** | |
307 | + * Get pertinencia | |
308 | + * | |
309 | + * @return string | |
310 | + */ | |
311 | + public function getPertinencia() | |
312 | + { | |
313 | + return $this->pertinencia; | |
314 | + } | |
315 | + | |
316 | + /** | |
317 | + * Set tituloTrabajo | |
318 | + * | |
319 | + * @param string $tituloTrabajo | |
320 | + * @return Ascenso | |
321 | + */ | |
322 | + public function setTituloTrabajo($tituloTrabajo) | |
323 | + { | |
324 | + $this->tituloTrabajo = $tituloTrabajo; | |
325 | + | |
326 | + return $this; | |
327 | + } | |
328 | + | |
329 | + /** | |
330 | + * Get tituloTrabajo | |
331 | + * | |
332 | + * @return string | |
333 | + */ | |
334 | + public function getTituloTrabajo() | |
335 | + { | |
336 | + return $this->tituloTrabajo; | |
337 | + } | |
338 | + | |
339 | + /** | |
340 | + * Set observacion | |
341 | + * | |
342 | + * @param string $observacion | |
343 | + * @return Ascenso | |
344 | + */ | |
345 | + public function setObservacion($observacion) | |
346 | + { | |
347 | + $this->observacion = $observacion; | |
348 | + | |
349 | + return $this; | |
350 | + } | |
351 | + | |
352 | + /** | |
353 | + * Get observacion | |
354 | + * | |
355 | + * @return string | |
356 | + */ | |
357 | + public function getObservacion() | |
358 | + { | |
359 | + return $this->observacion; | |
360 | + } | |
361 | + | |
362 | + /** | |
363 | + * Get fecha_ultima_actualizacion | |
364 | + * | |
365 | + * @return \DateTime | |
366 | + */ | |
367 | + public function getFechaUltimaActualizacion() | |
368 | + { | |
369 | + return $this->fecha_ultima_actualizacion; | |
370 | + } | |
371 | + | |
372 | + /** | |
373 | + * Set idRolInstitucion | |
374 | + * | |
375 | + * @param \AppBundle\Entity\RolInstitucion $idRolInstitucion | |
376 | + * @return Ascenso | |
377 | + */ | |
378 | + public function setIdRolInstitucion(\AppBundle\Entity\RolInstitucion $idRolInstitucion) | |
379 | + { | |
380 | + $this->idRolInstitucion = $idRolInstitucion; | |
381 | + | |
382 | + return $this; | |
383 | + } | |
384 | + | |
385 | + /** | |
386 | + * Get idRolInstitucion | |
387 | + * | |
388 | + * @return \AppBundle\Entity\RolInstitucion | |
389 | + */ | |
390 | + public function getIdRolInstitucion() | |
391 | + { | |
392 | + return $this->idRolInstitucion; | |
393 | + } | |
394 | + | |
395 | + /** | |
396 | + * Set idEstatus | |
397 | + * | |
398 | + * @param \AppBundle\Entity\Estatus $idEstatus | |
399 | + * @return Ascenso | |
400 | + */ | |
401 | + public function setIdEstatus(\AppBundle\Entity\Estatus $idEstatus) | |
402 | + { | |
403 | + $this->idEstatus = $idEstatus; | |
404 | + | |
405 | + return $this; | |
406 | + } | |
407 | + | |
408 | + /** | |
409 | + * Get idEstatus | |
410 | + * | |
411 | + * @return \AppBundle\Entity\Estatus | |
412 | + */ | |
413 | + public function getIdEstatus() | |
414 | + { | |
415 | + return $this->idEstatus; | |
416 | + } | |
417 | + | |
418 | + | |
419 | + | |
420 | + | |
421 | + | |
422 | + /** | |
423 | + * Set idEscalafones | |
424 | + * | |
425 | + * @param \AppBundle\Entity\Escalafones $idEscalafones | |
426 | + * @return Ascenso | |
427 | + */ | |
428 | + public function setIdEscalafones(\AppBundle\Entity\Escalafones $idEscalafones) | |
429 | + { | |
430 | + $this->idEscalafones = $idEscalafones; | |
431 | + | |
432 | + return $this; | |
433 | + } | |
434 | + | |
435 | + /** | |
436 | + * Get idEscalafones | |
437 | + * | |
438 | + * @return \AppBundle\Entity\Escalafones | |
439 | + */ | |
440 | + public function getIdEscalafones() | |
441 | + { | |
442 | + return $this->idEscalafones; | |
443 | + } | |
444 | +} | ... | ... |
src/AppBundle/Entity/Ascenso.php~
... | ... | @@ -0,0 +1,421 @@ |
1 | +<?php | |
2 | + | |
3 | +namespace AppBundle\Entity; | |
4 | + | |
5 | +use Doctrine\ORM\Mapping as ORM; | |
6 | +use Symfony\Component\Validator\Constraints as Assert; | |
7 | + | |
8 | + | |
9 | +/** | |
10 | + * Ascenso | |
11 | + * | |
12 | + * @ORM\Table(name="solicitud_ascenso", uniqueConstraints={@ORM\UniqueConstraint(name="ascenso_id_rol_institucion_docente_escala", columns={"id_rol_institucion", "id_escala"})}) | |
13 | + * @ORM\Entity | |
14 | + * @ORM\HasLifecycleCallbacks() | |
15 | + */ | |
16 | +class Ascenso | |
17 | +{ | |
18 | + | |
19 | + /** | |
20 | + * @var integer | |
21 | + * | |
22 | + * @ORM\Column(name="id", type="integer", nullable=false, options={"comment" = "Identificador del Ascenso"}) | |
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\RolInstitucion | |
32 | + * | |
33 | + * @ORM\ManyToOne(targetEntity="AppBundle\Entity\RolInstitucion") | |
34 | + * @ORM\JoinColumns({ | |
35 | + * @ORM\JoinColumn(name="id_rol_institucion", referencedColumnName="id", nullable=false) | |
36 | + * }) | |
37 | + */ | |
38 | + protected $idRolInstitucion; | |
39 | + | |
40 | + | |
41 | + | |
42 | + /** | |
43 | + * @var \AppBundle\Entity\Escala | |
44 | + * | |
45 | + * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Escalafones") | |
46 | + * @ORM\JoinColumns({ | |
47 | + * @ORM\JoinColumn(name="id_escala", referencedColumnName="id", nullable=false) | |
48 | + * }) | |
49 | + */ | |
50 | + protected $idEscalafones; | |
51 | + | |
52 | + | |
53 | + /** | |
54 | + * @ORM\Column(type="string", nullable=false, options={"comment" = "ubicacion de la constancia de trabajo"}) | |
55 | + * | |
56 | + * @Assert\NotBlank(message="Debe cargar su constancia de Trabajo, es obligatoria.") | |
57 | + * @Assert\File(mimeTypes={ "application/pdf" }) | |
58 | + */ | |
59 | + private $trabajo; | |
60 | + | |
61 | + | |
62 | + /** | |
63 | + * @ORM\Column(type="string", nullable=false, options={"comment" = "ubicacion de la constancia de actualización de Expediente"}) | |
64 | + * | |
65 | + * @Assert\NotBlank(message="debe cargar su constancia de actualización de expediente, es obligatorio.") | |
66 | + * @Assert\File(mimeTypes={ "application/pdf" }) | |
67 | + */ | |
68 | + private $expediente; | |
69 | + | |
70 | + | |
71 | + /** | |
72 | + * @ORM\Column(type="string", nullable=false, options={"comment" = "ubicacion de la socialización del PIDA"}) | |
73 | + * | |
74 | + * @Assert\NotBlank(message="debe cargar su constancia de socializacion del PIDA, es obligatorio.") | |
75 | + * @Assert\File(mimeTypes={ "application/pdf" }) | |
76 | + */ | |
77 | + private $pida; | |
78 | + | |
79 | + /** | |
80 | + * @ORM\Column(type="string", nullable=false, options={"comment" = "digital del documento aval del nucleo academico de investigacion"}) | |
81 | + * | |
82 | + * @Assert\NotBlank(message="debe cargar su constnacia aval del NAI, es obligatorio.") | |
83 | + * @Assert\File(mimeTypes={ "application/pdf" }) | |
84 | + */ | |
85 | + private $nai; | |
86 | + | |
87 | + /** | |
88 | + * @ORM\Column(type="string", nullable=false, options={"comment" = "digital del documento de Trabajo de investigacion"}) | |
89 | + * | |
90 | + * @Assert\NotBlank(message="debe cargar su Trabajo de investigacion, es obligatorio.") | |
91 | + * @Assert\File(mimeTypes={ "application/pdf" }) | |
92 | + */ | |
93 | + private $investigacion; | |
94 | + | |
95 | + | |
96 | + /** | |
97 | + * @ORM\Column(type="string", nullable=true, options={"comment" = "ubicación del digital del informe de pertinencia en caso de ser tesis fuera de ubv"}) | |
98 | + * | |
99 | + * | |
100 | + * @Assert\File(mimeTypes={ "application/pdf" }) | |
101 | + */ | |
102 | + private $pertinencia; | |
103 | + | |
104 | + | |
105 | + /** | |
106 | + * @ORM\Column(name="titulo_trabajo", type="string", nullable=false, options={"comment" = "titulo del trabajo de investigacion"}) | |
107 | + * @Assert\NotBlank(message="Titulo del Trabajo es obligatorio.") | |
108 | + */ | |
109 | + private $tituloTrabajo; | |
110 | + | |
111 | + | |
112 | + /** | |
113 | + * @ORM\Column(name="observacion", type="string", nullable=true, options={"comment" = "titulo del trabajo de investigacion"}) | |
114 | + */ | |
115 | + private $observacion; | |
116 | + | |
117 | + | |
118 | + /** @ORM\Column(type="datetime", nullable=false, options={"comment" = "Fecha de creación de la solicitud"}) | |
119 | + | |
120 | + */ | |
121 | + | |
122 | + private $fecha_creacion; | |
123 | + | |
124 | + | |
125 | + /** @ORM\Column(type="datetime", nullable=false, options={"comment" = "Fecha de actualizacion de la solicitud"}) | |
126 | + | |
127 | + */ | |
128 | + | |
129 | + private $fecha_ultima_actualizacion; | |
130 | + | |
131 | + /** | |
132 | + * @var \AppBundle\Entity\Estatus | |
133 | + * | |
134 | + * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Estatus") | |
135 | + * @ORM\JoinColumns({ | |
136 | + * @ORM\JoinColumn(name="id_estatus", referencedColumnName="id", nullable=false) | |
137 | + * }) | |
138 | + */ | |
139 | + protected $idEstatus; | |
140 | + | |
141 | + | |
142 | + /** | |
143 | + * @ORM\PrePersist | |
144 | + */ | |
145 | + public function setFechaCreacion() | |
146 | + { | |
147 | + $this->fecha_creacion = new \DateTime(); | |
148 | + $this->fecha_ultima_actualizacion = new \DateTime(); | |
149 | + } | |
150 | + | |
151 | + public function getFechaCreacion() | |
152 | + { | |
153 | + return $this->fecha_creacion; | |
154 | + | |
155 | + } | |
156 | + | |
157 | + | |
158 | + /** | |
159 | + * @ORM\PreUpdate | |
160 | + */ | |
161 | + public function setFechaUltimaActualizacion() | |
162 | + { | |
163 | + $this->fecha_utlima_actualizacion = new \DateTime(); | |
164 | + } | |
165 | + | |
166 | + | |
167 | + | |
168 | + /** | |
169 | + * Get id | |
170 | + * | |
171 | + * @return integer | |
172 | + */ | |
173 | + public function getId() | |
174 | + { | |
175 | + return $this->id; | |
176 | + } | |
177 | + | |
178 | + /** | |
179 | + * Set trabajo | |
180 | + * | |
181 | + * @param string $trabajo | |
182 | + * @return Ascenso | |
183 | + */ | |
184 | + public function setTrabajo($trabajo) | |
185 | + { | |
186 | + $this->trabajo = $trabajo; | |
187 | + | |
188 | + return $this; | |
189 | + } | |
190 | + | |
191 | + /** | |
192 | + * Get trabajo | |
193 | + * | |
194 | + * @return string | |
195 | + */ | |
196 | + public function getTrabajo() | |
197 | + { | |
198 | + return $this->trabajo; | |
199 | + } | |
200 | + | |
201 | + /** | |
202 | + * Set expediente | |
203 | + * | |
204 | + * @param string $expediente | |
205 | + * @return Ascenso | |
206 | + */ | |
207 | + public function setExpediente($expediente) | |
208 | + { | |
209 | + $this->expediente = $expediente; | |
210 | + | |
211 | + return $this; | |
212 | + } | |
213 | + | |
214 | + /** | |
215 | + * Get expediente | |
216 | + * | |
217 | + * @return string | |
218 | + */ | |
219 | + public function getExpediente() | |
220 | + { | |
221 | + return $this->expediente; | |
222 | + } | |
223 | + | |
224 | + /** | |
225 | + * Set pida | |
226 | + * | |
227 | + * @param string $pida | |
228 | + * @return Ascenso | |
229 | + */ | |
230 | + public function setPida($pida) | |
231 | + { | |
232 | + $this->pida = $pida; | |
233 | + | |
234 | + return $this; | |
235 | + } | |
236 | + | |
237 | + /** | |
238 | + * Get pida | |
239 | + * | |
240 | + * @return string | |
241 | + */ | |
242 | + public function getPida() | |
243 | + { | |
244 | + return $this->pida; | |
245 | + } | |
246 | + | |
247 | + /** | |
248 | + * Set nai | |
249 | + * | |
250 | + * @param string $nai | |
251 | + * @return Ascenso | |
252 | + */ | |
253 | + public function setNai($nai) | |
254 | + { | |
255 | + $this->nai = $nai; | |
256 | + | |
257 | + return $this; | |
258 | + } | |
259 | + | |
260 | + /** | |
261 | + * Get nai | |
262 | + * | |
263 | + * @return string | |
264 | + */ | |
265 | + public function getNai() | |
266 | + { | |
267 | + return $this->nai; | |
268 | + } | |
269 | + | |
270 | + /** | |
271 | + * Set investigacion | |
272 | + * | |
273 | + * @param string $investigacion | |
274 | + * @return Ascenso | |
275 | + */ | |
276 | + public function setInvestigacion($investigacion) | |
277 | + { | |
278 | + $this->investigacion = $investigacion; | |
279 | + | |
280 | + return $this; | |
281 | + } | |
282 | + | |
283 | + /** | |
284 | + * Get investigacion | |
285 | + * | |
286 | + * @return string | |
287 | + */ | |
288 | + public function getInvestigacion() | |
289 | + { | |
290 | + return $this->investigacion; | |
291 | + } | |
292 | + | |
293 | + /** | |
294 | + * Set pertinencia | |
295 | + * | |
296 | + * @param string $pertinencia | |
297 | + * @return Ascenso | |
298 | + */ | |
299 | + public function setPertinencia($pertinencia) | |
300 | + { | |
301 | + $this->pertinencia = $pertinencia; | |
302 | + | |
303 | + return $this; | |
304 | + } | |
305 | + | |
306 | + /** | |
307 | + * Get pertinencia | |
308 | + * | |
309 | + * @return string | |
310 | + */ | |
311 | + public function getPertinencia() | |
312 | + { | |
313 | + return $this->pertinencia; | |
314 | + } | |
315 | + | |
316 | + /** | |
317 | + * Set tituloTrabajo | |
318 | + * | |
319 | + * @param string $tituloTrabajo | |
320 | + * @return Ascenso | |
321 | + */ | |
322 | + public function setTituloTrabajo($tituloTrabajo) | |
323 | + { | |
324 | + $this->tituloTrabajo = $tituloTrabajo; | |
325 | + | |
326 | + return $this; | |
327 | + } | |
328 | + | |
329 | + /** | |
330 | + * Get tituloTrabajo | |
331 | + * | |
332 | + * @return string | |
333 | + */ | |
334 | + public function getTituloTrabajo() | |
335 | + { | |
336 | + return $this->tituloTrabajo; | |
337 | + } | |
338 | + | |
339 | + /** | |
340 | + * Set observacion | |
341 | + * | |
342 | + * @param string $observacion | |
343 | + * @return Ascenso | |
344 | + */ | |
345 | + public function setObservacion($observacion) | |
346 | + { | |
347 | + $this->observacion = $observacion; | |
348 | + | |
349 | + return $this; | |
350 | + } | |
351 | + | |
352 | + /** | |
353 | + * Get observacion | |
354 | + * | |
355 | + * @return string | |
356 | + */ | |
357 | + public function getObservacion() | |
358 | + { | |
359 | + return $this->observacion; | |
360 | + } | |
361 | + | |
362 | + /** | |
363 | + * Get fecha_ultima_actualizacion | |
364 | + * | |
365 | + * @return \DateTime | |
366 | + */ | |
367 | + public function getFechaUltimaActualizacion() | |
368 | + { | |
369 | + return $this->fecha_ultima_actualizacion; | |
370 | + } | |
371 | + | |
372 | + /** | |
373 | + * Set idRolInstitucion | |
374 | + * | |
375 | + * @param \AppBundle\Entity\RolInstitucion $idRolInstitucion | |
376 | + * @return Ascenso | |
377 | + */ | |
378 | + public function setIdRolInstitucion(\AppBundle\Entity\RolInstitucion $idRolInstitucion) | |
379 | + { | |
380 | + $this->idRolInstitucion = $idRolInstitucion; | |
381 | + | |
382 | + return $this; | |
383 | + } | |
384 | + | |
385 | + /** | |
386 | + * Get idRolInstitucion | |
387 | + * | |
388 | + * @return \AppBundle\Entity\RolInstitucion | |
389 | + */ | |
390 | + public function getIdRolInstitucion() | |
391 | + { | |
392 | + return $this->idRolInstitucion; | |
393 | + } | |
394 | + | |
395 | + /** | |
396 | + * Set idEstatus | |
397 | + * | |
398 | + * @param \AppBundle\Entity\Estatus $idEstatus | |
399 | + * @return Ascenso | |
400 | + */ | |
401 | + public function setIdEstatus(\AppBundle\Entity\Estatus $idEstatus) | |
402 | + { | |
403 | + $this->idEstatus = $idEstatus; | |
404 | + | |
405 | + return $this; | |
406 | + } | |
407 | + | |
408 | + /** | |
409 | + * Get idEstatus | |
410 | + * | |
411 | + * @return \AppBundle\Entity\Estatus | |
412 | + */ | |
413 | + public function getIdEstatus() | |
414 | + { | |
415 | + return $this->idEstatus; | |
416 | + } | |
417 | + | |
418 | + | |
419 | + | |
420 | + | |
421 | +} | ... | ... |
src/AppBundle/Form/AscensoType.php
... | ... | @@ -0,0 +1,175 @@ |
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 | +use Symfony\Component\Validator\Constraints\File; | |
13 | +use Symfony\Component\Validator\Constraints\NotBlank; | |
14 | + | |
15 | +use Symfony\Component\Form\AbstractType; | |
16 | +use Symfony\Component\Form\FormBuilderInterface; | |
17 | +use Symfony\Component\Form\Extension\Core\Type\TextType; | |
18 | +use Symfony\Component\Form\Extension\Core\Type\BirthdayType; | |
19 | +use Symfony\Component\Form\Extension\Core\Type\CheckboxType; | |
20 | +use Symfony\Component\Form\Extension\Core\Type\FileType; | |
21 | +use Symfony\Component\Form\Extension\Core\Type\SubmitType; | |
22 | + | |
23 | +use Symfony\Bridge\Doctrine\Form\Type\EntityType; | |
24 | +use Doctrine\ORM\EntityRepository; | |
25 | + | |
26 | +class AscensoType extends AbstractType | |
27 | +{ | |
28 | + public function buildForm(FormBuilderInterface $builder, array $options) | |
29 | + { | |
30 | + $builder | |
31 | + | |
32 | + ->add('trabajo', FileType::class, array( | |
33 | + 'label' => 'Digital Constancia Trabajo Actualizada', | |
34 | + 'constraints' => array( | |
35 | + new NotBlank(), | |
36 | + new File(array( | |
37 | + 'maxSize' => '1024K', | |
38 | + 'mimeTypes' => [ | |
39 | + 'application/pdf', | |
40 | + 'application/x-pdf', | |
41 | + 'image/png', | |
42 | + 'image/jpg', | |
43 | + 'image/jpeg' | |
44 | + ], | |
45 | + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf' | |
46 | + )) | |
47 | + ) | |
48 | + )) | |
49 | + ->add('expediente', FileType::class, array( | |
50 | + 'label' => 'Digital Actualización de Expediente', | |
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 | + | |
67 | + ->add('pida', FileType::class, array( | |
68 | + 'label' => 'Digital Socialización del PIDA', | |
69 | + 'required' => true, | |
70 | + 'constraints' => array( | |
71 | + new File(array( | |
72 | + 'maxSize' => '1024K', | |
73 | + 'mimeTypes' => [ | |
74 | + 'application/pdf', | |
75 | + 'application/x-pdf', | |
76 | + 'image/png', | |
77 | + 'image/jpg', | |
78 | + 'image/jpeg' | |
79 | + ], | |
80 | + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf' | |
81 | + )) | |
82 | + ) | |
83 | + )) | |
84 | + | |
85 | + ->add('nai', FileType::class, array( | |
86 | + 'label' => 'Digital Aval del NAI', | |
87 | + 'required' => true, | |
88 | + 'constraints' => array( | |
89 | + new File(array( | |
90 | + 'maxSize' => '1024K', | |
91 | + 'mimeTypes' => [ | |
92 | + 'application/pdf', | |
93 | + 'application/x-pdf', | |
94 | + 'image/png', | |
95 | + 'image/jpg', | |
96 | + 'image/jpeg' | |
97 | + ], | |
98 | + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf' | |
99 | + )) | |
100 | + ) | |
101 | + )) | |
102 | + | |
103 | + ->add('titulo_trabajo', TextType::class, array( | |
104 | + 'label' => 'Título del Trabajo de Investigación', | |
105 | + | |
106 | + 'required' => true, | |
107 | + | |
108 | + )) | |
109 | + | |
110 | + | |
111 | + ->add('investigacion', FileType::class, array( | |
112 | + 'label' => 'Digital Trabajo de investigación / Tesis', | |
113 | + 'required' => true, | |
114 | + 'constraints' => array( | |
115 | + new File(array( | |
116 | + 'maxSize' => '1024K', | |
117 | + 'mimeTypes' => [ | |
118 | + 'application/pdf', | |
119 | + 'application/x-pdf', | |
120 | + 'image/png', | |
121 | + 'image/jpg', | |
122 | + 'image/jpeg' | |
123 | + ], | |
124 | + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf' | |
125 | + )) | |
126 | + ) | |
127 | + )) | |
128 | + | |
129 | + | |
130 | + ->add('tipoTrabajoInvestigacion', CheckboxType::class, array( | |
131 | + 'label' => 'Si su trabajo de investigación es TESIS, responda ¿Fue dentro de la UBV?', | |
132 | + 'required' => false, | |
133 | + )) | |
134 | + | |
135 | + ->add('pertinencia', FileType::class, array( | |
136 | + 'label' => 'Informe de Pertinencia', | |
137 | + 'label_attr' => array( 'class' => 'esc_oposicion'), | |
138 | + 'required' => false, | |
139 | + 'attr' => array( | |
140 | + 'style' => 'display:none;', | |
141 | + 'class' => 'esc_oposicion' | |
142 | + ), | |
143 | + 'constraints' => array( | |
144 | + new File(array( | |
145 | + 'maxSize' => '1024K', | |
146 | + 'mimeTypes' => [ | |
147 | + 'application/pdf', | |
148 | + 'application/x-pdf', | |
149 | + 'image/png', | |
150 | + 'image/jpg', | |
151 | + 'image/jpeg' | |
152 | + ], | |
153 | + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf' | |
154 | + )) | |
155 | + ) | |
156 | + )) | |
157 | + | |
158 | + | |
159 | + | |
160 | + | |
161 | + ->add('send', SubmitType::class, array( | |
162 | + 'label' => 'Crear Solicitud de Ascenso', | |
163 | + 'attr' => array('class' => 'btn btn-success btn-block') | |
164 | + )) | |
165 | + | |
166 | + | |
167 | + ; | |
168 | + | |
169 | + | |
170 | + } | |
171 | + | |
172 | + | |
173 | + | |
174 | + | |
175 | +} | ... | ... |