Commit 1521546b1c47646edf4fec488322e3ef31b2ec3b

Authored by Wilmer Ramones
1 parent a10b2c5279
Exists in master

se mejoró la validación de la adscripcion, se guradó la dirección de correo del …

…docente, se envian correos al cambiar el estatus de la adscripcion, se deja libre la parte de administracion mientras se hacen pruebas
app/Resources/views/cea/solicitudes_mostar.html.twig
@@ -32,7 +32,7 @@ @@ -32,7 +32,7 @@
32 32
33 </div> 33 </div>
34 <div class="row"> 34 <div class="row">
35 - {% if adscripcion.postgrado is null %} 35 + {% if adscripcion.oposicion is null %}
36 <div class="form-group"> 36 <div class="form-group">
37 <h4 class="alert alert-warning">El Docente al momento de la solicitud informa no haber realizado Concurso de oposición</h4> 37 <h4 class="alert alert-warning">El Docente al momento de la solicitud informa no haber realizado Concurso de oposición</h4>
38 </div> 38 </div>
@@ -151,6 +151,21 @@ @@ -151,6 +151,21 @@
151 </div> 151 </div>
152 </div> 152 </div>
153 {% endif %} 153 {% endif %}
  154 +
  155 +
  156 +
  157 + {% if adscripcion.asistente is not null %}
  158 + <div class="col-xs-4">
  159 + <div class="thumbnail">
  160 + <a href="{{asset('uploads/adscripcion/'~ adscripcion.asistente)}}" data-lightbox="adscripcion">
  161 + <img src="{{ asset('uploads/adscripcion/thumb/'~ adscripcion.asistente) }}" />
  162 + </a>
  163 + <div class="caption">
  164 + <p>Ascenso Asistente</p>
  165 + </div>
  166 + </div>
  167 + </div>
  168 + {% endif %}
154 169
155 170
156 171
app/Resources/views/correos/actualizar_adscripcion.html.twig
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +<h3>Bienvido al CEA@UBV {{ nombres }}Tu adscripcion ha sido {{ estatus }}</h3>
  2 +
  3 +
  4 +Para hacer login dirigete simplemente a la página de ingreso del Portal del Centro de Estudios Avanzados: <a href="{{ url('login') }}">Login</a>.
  5 +
  6 +
  7 +
  8 +{# Makes an absolute URL to the /images/logo.png file #}
  9 +<img src="{{ absolute_url(asset('bundles/framework/images/portal/logo_ubv.png')) }}">
0 \ No newline at end of file 10 \ No newline at end of file
app/Resources/views/portal/index.html.twig
@@ -248,7 +248,7 @@ @@ -248,7 +248,7 @@
248 <div class="col-md-6 wow fadeInRight"> 248 <div class="col-md-6 wow fadeInRight">
249 <div class="social-links"> 249 <div class="social-links">
250 <a class="social" href="#" target="_blank"><i class="fa fa-facebook fa-2x"></i></a> 250 <a class="social" href="#" target="_blank"><i class="fa fa-facebook fa-2x"></i></a>
251 - <a class="social" href="#" target="_blank"><i class="fa fa-twitter fa-2x"></i></a> 251 + <a class="social" href="https://twitter.com/ubv?lang=es" target="_blank"><i class="fa fa-twitter fa-2x"></i></a>
252 <a class="social" href="#" target="_blank"><i class="fa fa-google-plus fa-2x"></i></a> 252 <a class="social" href="#" target="_blank"><i class="fa fa-google-plus fa-2x"></i></a>
253 <a class="social" href="#" target="_blank"><i class="fa fa-linkedin fa-2x"></i></a> 253 <a class="social" href="#" target="_blank"><i class="fa fa-linkedin fa-2x"></i></a>
254 </div> 254 </div>
app/Resources/views/solicitudes/adscripcion.html.twig
@@ -39,25 +39,47 @@ @@ -39,25 +39,47 @@
39 $("#user_fecha_oposicion_month").prop('required', $(this).prop("checked")); 39 $("#user_fecha_oposicion_month").prop('required', $(this).prop("checked"));
40 $("#user_fecha_oposicion_year").prop('required', $(this).prop("checked")); 40 $("#user_fecha_oposicion_year").prop('required', $(this).prop("checked"));
41 $("#user_documento_oposicion").prop('required', $(this).prop("checked")); 41 $("#user_documento_oposicion").prop('required', $(this).prop("checked"));
  42 + $("#user_lineas_investigacion").prop('required', $(this).prop("checked"));
  43 + $("#user_titulo_trabajo").prop('required', $(this).prop("checked"));
42 }); 44 });
43 45
44 $('#user_ascenso').click(function() { 46 $('#user_ascenso').click(function() {
45 - alert($("#user_escala").val()); 47 +
46 if($("#user_escala").val() == 1) 48 if($("#user_escala").val() == 1)
47 $('.esc_asistente')[this.checked ? "show" : "hide"](); 49 $('.esc_asistente')[this.checked ? "show" : "hide"]();
48 if($("#user_escala").val() == 2) 50 if($("#user_escala").val() == 2)
49 $('.esc_asociado')[this.checked ? "show" : "hide"](); 51 $('.esc_asociado')[this.checked ? "show" : "hide"]();
50 - if($("#user_escala").val() == 3)  
51 - $('.esc_agregado')[this.checked ? "show" : "hide"]();  
52 - if($("#user_escala").val() == 4)  
53 - $('.esc_titular')[this.checked ? "show" : "hide"]();  
54 - 52 + if($("#user_escala").val() == 3)
  53 + $('.esc_agregado')[this.checked ? "show" : "hide"]();
  54 + if($("#user_escala").val() == 4)
  55 + $('.esc_titular')[this.checked ? "show" : "hide"]();
55 56
56 }); 57 });
57 58
58 59
59 - $('#user_ascenso2').click(function() {  
60 - alert($("#user_escala").val()); 60 +
  61 +
  62 +
  63 + $("#user_fecha_oposicion_year").change(function(){
  64 + if ($("#user_fecha_oposicion_year").val() < $("#user_fecha_ingreso_year").val()){
  65 + alert('la fecha de concurso debe ser mayor a la fecha de ingreso');
  66 + $("#user_fecha_oposicion_year").val("");
  67 +
  68 + }
  69 + });
  70 +
  71 + $("#user_fecha_ascenso_asistente_year").change(function(){
  72 + if ($("#user_fecha_ascenso_asistente_year").val() < $("#user_fecha_oposicion_year").val()){
  73 + alert('la fecha de ascenso debe ser mayor a la del Concurso de oposición');
  74 + $("#user_fecha_asistente_year").val("");
  75 +
  76 + }
  77 + });
  78 +
  79 +
  80 +
  81 +
  82 + $('#user_ascenso2').click(function() {
61 $('.esc_asociado')[this.checked ? "show" : "hide"](); 83 $('.esc_asociado')[this.checked ? "show" : "hide"]();
62 84
63 }); 85 });
@@ -74,8 +96,7 @@ @@ -74,8 +96,7 @@
74 }); 96 });
75 97
76 98
77 - $('#user_escala').change(function(){  
78 - alert($('#user_escala').val()) 99 + $('#user_escala').change(function(){
79 if ($('#user_escala').val() >= 1) $('#user_oposicion').attr('disabled',true); 100 if ($('#user_escala').val() >= 1) $('#user_oposicion').attr('disabled',true);
80 else $('#user_oposicion').attr('disabled',false); 101 else $('#user_oposicion').attr('disabled',false);
81 }); 102 });
app/config/security.yml
@@ -37,5 +37,5 @@ security: @@ -37,5 +37,5 @@ security:
37 - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY } 37 - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
38 - { path: ^/register, roles: ROLE_DOCENTE } 38 - { path: ^/register, roles: ROLE_DOCENTE }
39 - { path: ^/ceapp, roles: ROLE_DOCENTE } 39 - { path: ^/ceapp, roles: ROLE_DOCENTE }
40 - - { path: ^/admin, roles: ROLE_ADMINISTRADOR } 40 + - { path: ^/admin, roles: IS_AUTHENTICATED_ANONYMOUSLY }
41 - { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY } 41 - { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
src/AppBundle/Controller/AppController.php
@@ -140,6 +140,7 @@ class AppController extends Controller { @@ -140,6 +140,7 @@ class AppController extends Controller {
140 $adscripciones->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:Estatus')->findOneById(1)); 140 $adscripciones->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:Estatus')->findOneById(1));
141 $user = $this->getDoctrine()->getRepository('AppBundle:Usuarios')->findOneByIdRolInstitucion($adscripcion->getIdRolInstitucion()); 141 $user = $this->getDoctrine()->getRepository('AppBundle:Usuarios')->findOneByIdRolInstitucion($adscripcion->getIdRolInstitucion());
142 $user->addRol($this->getDoctrine()->getRepository('AppBundle:Role')->findOneByName("ROLE_ADSCRITO")); 142 $user->addRol($this->getDoctrine()->getRepository('AppBundle:Role')->findOneByName("ROLE_ADSCRITO"));
  143 +
143 }else{ 144 }else{
144 $adscripciones->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:Estatus')->findOneById(3)); 145 $adscripciones->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:Estatus')->findOneById(3));
145 $user = $this->getDoctrine()->getRepository('AppBundle:Usuarios')->findOneByIdRolInstitucion($adscripcion->getIdRolInstitucion()); 146 $user = $this->getDoctrine()->getRepository('AppBundle:Usuarios')->findOneByIdRolInstitucion($adscripcion->getIdRolInstitucion());
@@ -151,7 +152,24 @@ class AppController extends Controller { @@ -151,7 +152,24 @@ class AppController extends Controller {
151 $em->persist($user); 152 $em->persist($user);
152 $em->flush(); 153 $em->flush();
153 154
154 - $this->addFlash('notice', 'Solicitud Actualizada Correctamente'); 155 + $message = \Swift_Message::newInstance()
  156 + ->setSubject('Resultado Adscripcion CEA@UBV')
  157 + ->setFrom('wilmer.ramones@gmail.com')
  158 + ->setTo($user->getEmail())
  159 + ->setBody(
  160 + $this->renderView(
  161 + 'correos/actualizar_adscripcion.html.twig',
  162 + array(
  163 + 'nombres' => $user->getUsername(),
  164 + 'estatus' => $adscripciones->getIdEstatus()
  165 + )
  166 + ),
  167 + 'text/html'
  168 + )
  169 + ;
  170 + $this->get('mailer')->send($message);
  171 +
  172 + $this->addFlash('notice', 'Solicitud Actualizada Correctamente, hemos enviado un correo al docente notificandole los cambios.');
155 173
156 $escala = $this->getDoctrine()->getRepository('AppBundle:DocenteEscala')->findBy(array( 174 $escala = $this->getDoctrine()->getRepository('AppBundle:DocenteEscala')->findBy(array(
157 'idRolInstitucion' => $adscripciones->getIdRolInstitucion()->getId() 175 'idRolInstitucion' => $adscripciones->getIdRolInstitucion()->getId()
src/AppBundle/Controller/PortalController.php
@@ -51,6 +51,7 @@ class PortalController extends Controller @@ -51,6 +51,7 @@ class PortalController extends Controller
51 if(!$credenciales){ //si no existe, procede a crear usuario y contraseña. 51 if(!$credenciales){ //si no existe, procede a crear usuario y contraseña.
52 $login = new Usuarios(); 52 $login = new Usuarios();
53 $login->setUsername($usuario); 53 $login->setUsername($usuario);
  54 + $login->setEmail($form->get('correo')->getData());
54 $login->setPlainPassword($form->get('cedula')->getData()); 55 $login->setPlainPassword($form->get('cedula')->getData());
55 $password = $this->get('security.password_encoder') 56 $password = $this->get('security.password_encoder')
56 ->encodePassword($login, $login->getPlainPassword()); //encripta la contraseña 57 ->encodePassword($login, $login->getPlainPassword()); //encripta la contraseña
src/AppBundle/Entity/Usuarios.php
@@ -30,6 +30,14 @@ class Usuarios implements UserInterface, \Serializable @@ -30,6 +30,14 @@ class Usuarios implements UserInterface, \Serializable
30 * @ORM\Column(name="username", type="string", length=255, nullable=false, options={"comment" = "nombre de usuariro"}) 30 * @ORM\Column(name="username", type="string", length=255, nullable=false, options={"comment" = "nombre de usuariro"})
31 */ 31 */
32 protected $username; 32 protected $username;
  33 +
  34 + /**
  35 + * @ORM\Column(type="string")
  36 + * @Assert\NotBlank()
  37 + * @Assert\Email
  38 + * @var string
  39 + */
  40 + protected $email;
33 41
34 /** 42 /**
35 * @var string 43 * @var string
@@ -112,6 +120,32 @@ class Usuarios implements UserInterface, \Serializable @@ -112,6 +120,32 @@ class Usuarios implements UserInterface, \Serializable
112 { 120 {
113 return $this->username; 121 return $this->username;
114 } 122 }
  123 +
  124 +
  125 +
  126 + /**
  127 + * Set username
  128 + *
  129 + * @param string $email
  130 + * @return Usuarios
  131 + */
  132 + public function setEmail($email)
  133 + {
  134 + $this->email = $email;
  135 +
  136 + return $this;
  137 + }
  138 +
  139 + /**
  140 + * Get email
  141 + *
  142 + * @return string
  143 + */
  144 + public function getEmail()
  145 + {
  146 + return $this->email;
  147 + }
  148 +
115 149
116 /** 150 /**
117 * Set password 151 * Set password
src/AppBundle/Form/UserType.php
@@ -30,21 +30,43 @@ class UserType extends AbstractType @@ -30,21 +30,43 @@ class UserType extends AbstractType
30 { 30 {
31 $builder 31 $builder
32 ->add('fecha_ingreso', BirthdayType::class, array( 32 ->add('fecha_ingreso', BirthdayType::class, array(
  33 + 'widget' => 'choice',
33 'label' => 'Fecha de Ingreso UBV', 34 'label' => 'Fecha de Ingreso UBV',
34 - 'data' => new \DateTime("01/01/2003") 35 + 'data' => new \DateTime("01/01/2003"),
  36 + 'years' => range(2003, date("Y"))
35 )) 37 ))
36 ->add('trabajo', FileType::class, array( 38 ->add('trabajo', FileType::class, array(
37 'label' => 'Digital Constancia Trabajo', 39 'label' => 'Digital Constancia Trabajo',
38 'constraints' => array( 40 'constraints' => array(
39 new NotBlank(), 41 new NotBlank(),
40 - new File(array('maxSize' => '1024K')) 42 + new File(array(
  43 + 'maxSize' => '1024K',
  44 + 'mimeTypes' => [
  45 + 'application/pdf',
  46 + 'application/x-pdf',
  47 + 'image/png',
  48 + 'image/jpg',
  49 + 'image/jpeg'
  50 + ],
  51 + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf'
  52 + ))
41 ) 53 )
42 )) 54 ))
43 ->add('pregrado', FileType::class, array( 55 ->add('pregrado', FileType::class, array(
44 'label' => 'Digital Título de Pregrado', 56 'label' => 'Digital Título de Pregrado',
45 'constraints' => array( 57 'constraints' => array(
46 new NotBlank(), 58 new NotBlank(),
47 - new File(array('maxSize' => '1024K')) 59 + new File(array(
  60 + 'maxSize' => '1024K',
  61 + 'mimeTypes' => [
  62 + 'application/pdf',
  63 + 'application/x-pdf',
  64 + 'image/png',
  65 + 'image/jpg',
  66 + 'image/jpeg'
  67 + ],
  68 + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf'
  69 + ))
48 ) 70 )
49 )) 71 ))
50 72
@@ -52,7 +74,17 @@ class UserType extends AbstractType @@ -52,7 +74,17 @@ class UserType extends AbstractType
52 'label' => 'Digital Título de Postgrado', 74 'label' => 'Digital Título de Postgrado',
53 'required' => false, 75 'required' => false,
54 'constraints' => array( 76 'constraints' => array(
55 - new File(array('maxSize' => '1024K')) 77 + new File(array(
  78 + 'maxSize' => '1024K',
  79 + 'mimeTypes' => [
  80 + 'application/pdf',
  81 + 'application/x-pdf',
  82 + 'image/png',
  83 + 'image/jpg',
  84 + 'image/jpeg'
  85 + ],
  86 + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf'
  87 + ))
56 ) 88 )
57 )) 89 ))
58 ->add('oposicion', CheckboxType::class, array( 90 ->add('oposicion', CheckboxType::class, array(
@@ -75,7 +107,8 @@ class UserType extends AbstractType @@ -75,7 +107,8 @@ class UserType extends AbstractType
75 'required' => false, 107 'required' => false,
76 'attr' => array( 108 'attr' => array(
77 'class' => 'esc_oposicion' 109 'class' => 'esc_oposicion'
78 - ) 110 + ),
  111 + 'years' => range(2003, date("Y"))
79 )) 112 ))
80 ->add('documento_oposicion', FileType::class, array( 113 ->add('documento_oposicion', FileType::class, array(
81 'label' => 'Digital Documento Oposición', 114 'label' => 'Digital Documento Oposición',
@@ -84,6 +117,19 @@ class UserType extends AbstractType @@ -84,6 +117,19 @@ class UserType extends AbstractType
84 'attr' => array( 117 'attr' => array(
85 'style' => 'display:none;', 118 'style' => 'display:none;',
86 'class' => 'esc_oposicion' 119 'class' => 'esc_oposicion'
  120 + ),
  121 + 'constraints' => array(
  122 + new File(array(
  123 + 'maxSize' => '1024K',
  124 + 'mimeTypes' => [
  125 + 'application/pdf',
  126 + 'application/x-pdf',
  127 + 'image/png',
  128 + 'image/jpg',
  129 + 'image/jpeg'
  130 + ],
  131 + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf'
  132 + ))
87 ) 133 )
88 )) 134 ))
89 135
@@ -125,7 +171,8 @@ class UserType extends AbstractType @@ -125,7 +171,8 @@ class UserType extends AbstractType
125 'label_attr' => array( 'class' => 'esc_asistente'), 171 'label_attr' => array( 'class' => 'esc_asistente'),
126 'attr' => array( 172 'attr' => array(
127 'class' => 'esc_asistente' 173 'class' => 'esc_asistente'
128 - ) 174 + ),
  175 + 'years' => range(2003, date("Y"))
129 )) 176 ))
130 177
131 ->add('documento_asistente', FileType::class, array( 178 ->add('documento_asistente', FileType::class, array(
@@ -135,6 +182,19 @@ class UserType extends AbstractType @@ -135,6 +182,19 @@ class UserType extends AbstractType
135 'attr' => array( 182 'attr' => array(
136 'style' => 'display:none;', 183 'style' => 'display:none;',
137 'class' => 'esc_asistente' 184 'class' => 'esc_asistente'
  185 + ),
  186 + 'constraints' => array(
  187 + new File(array(
  188 + 'maxSize' => '1024K',
  189 + 'mimeTypes' => [
  190 + 'application/pdf',
  191 + 'application/x-pdf',
  192 + 'image/png',
  193 + 'image/jpg',
  194 + 'image/jpeg'
  195 + ],
  196 + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf'
  197 + ))
138 ) 198 )
139 )) 199 ))
140 200
@@ -156,7 +216,8 @@ class UserType extends AbstractType @@ -156,7 +216,8 @@ class UserType extends AbstractType
156 'required' => false, 216 'required' => false,
157 'attr' => array( 217 'attr' => array(
158 'class' => 'esc_asociado' 218 'class' => 'esc_asociado'
159 - ) 219 + ),
  220 + 'years' => range(2003, date("Y"))
160 )) 221 ))
161 222
162 ->add('documento_asociado', FileType::class, array( 223 ->add('documento_asociado', FileType::class, array(
@@ -166,6 +227,19 @@ class UserType extends AbstractType @@ -166,6 +227,19 @@ class UserType extends AbstractType
166 'attr' => array( 227 'attr' => array(
167 'style' => 'display:none;', 228 'style' => 'display:none;',
168 'class' => 'esc_asociado' 229 'class' => 'esc_asociado'
  230 + ),
  231 + 'constraints' => array(
  232 + new File(array(
  233 + 'maxSize' => '1024K',
  234 + 'mimeTypes' => [
  235 + 'application/pdf',
  236 + 'application/x-pdf',
  237 + 'image/png',
  238 + 'image/jpg',
  239 + 'image/jpeg'
  240 + ],
  241 + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf'
  242 + ))
169 ) 243 )
170 )) 244 ))
171 245
@@ -185,7 +259,8 @@ class UserType extends AbstractType @@ -185,7 +259,8 @@ class UserType extends AbstractType
185 'required' => false, 259 'required' => false,
186 'attr' => array( 260 'attr' => array(
187 'class' => 'esc_agregado' 261 'class' => 'esc_agregado'
188 - ) 262 + ),
  263 + 'years' => range(2003, date("Y"))
189 )) 264 ))
190 265
191 ->add('documento_agregado', FileType::class, array( 266 ->add('documento_agregado', FileType::class, array(
@@ -195,6 +270,19 @@ class UserType extends AbstractType @@ -195,6 +270,19 @@ class UserType extends AbstractType
195 'attr' => array( 270 'attr' => array(
196 'style' => 'display:none;', 271 'style' => 'display:none;',
197 'class' => 'esc_agregado' 272 'class' => 'esc_agregado'
  273 + ),
  274 + 'constraints' => array(
  275 + new File(array(
  276 + 'maxSize' => '1024K',
  277 + 'mimeTypes' => [
  278 + 'application/pdf',
  279 + 'application/x-pdf',
  280 + 'image/png',
  281 + 'image/jpg',
  282 + 'image/jpeg'
  283 + ],
  284 + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf'
  285 + ))
198 ) 286 )
199 )) 287 ))
200 288
@@ -215,7 +303,8 @@ class UserType extends AbstractType @@ -215,7 +303,8 @@ class UserType extends AbstractType
215 'required' => false, 303 'required' => false,
216 'attr' => array( 304 'attr' => array(
217 'class' => 'esc_titular' 305 'class' => 'esc_titular'
218 - ) 306 + ),
  307 + 'years' => range(2003, date("Y"))
219 )) 308 ))
220 309
221 ->add('documento_titular', FileType::class, array( 310 ->add('documento_titular', FileType::class, array(
@@ -225,6 +314,19 @@ class UserType extends AbstractType @@ -225,6 +314,19 @@ class UserType extends AbstractType
225 'attr' => array( 314 'attr' => array(
226 'style' => 'display:none;', 315 'style' => 'display:none;',
227 'class' => 'esc_titular' 316 'class' => 'esc_titular'
  317 + ),
  318 + 'constraints' => array(
  319 + new File(array(
  320 + 'maxSize' => '1024K',
  321 + 'mimeTypes' => [
  322 + 'application/pdf',
  323 + 'application/x-pdf',
  324 + 'image/png',
  325 + 'image/jpg',
  326 + 'image/jpeg'
  327 + ],
  328 + 'mimeTypesMessage' => 'Sólo se permiten extensiones png, jpeg y pdf'
  329 + ))
228 ) 330 )
229 )) 331 ))
230 332