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 32  
33 33 </div>
34 34 <div class="row">
35   - {% if adscripcion.postgrado is null %}
  35 + {% if adscripcion.oposicion is null %}
36 36 <div class="form-group">
37 37 <h4 class="alert alert-warning">El Docente al momento de la solicitud informa no haber realizado Concurso de oposición</h4>
38 38 </div>
... ... @@ -151,6 +151,21 @@
151 151 </div>
152 152 </div>
153 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 @@
  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 10 \ No newline at end of file
... ...
app/Resources/views/portal/index.html.twig
... ... @@ -248,7 +248,7 @@
248 248 <div class="col-md-6 wow fadeInRight">
249 249 <div class="social-links">
250 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 252 <a class="social" href="#" target="_blank"><i class="fa fa-google-plus fa-2x"></i></a>
253 253 <a class="social" href="#" target="_blank"><i class="fa fa-linkedin fa-2x"></i></a>
254 254 </div>
... ...
app/Resources/views/solicitudes/adscripcion.html.twig
... ... @@ -39,25 +39,47 @@
39 39 $("#user_fecha_oposicion_month").prop('required', $(this).prop("checked"));
40 40 $("#user_fecha_oposicion_year").prop('required', $(this).prop("checked"));
41 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 46 $('#user_ascenso').click(function() {
45   - alert($("#user_escala").val());
  47 +
46 48 if($("#user_escala").val() == 1)
47 49 $('.esc_asistente')[this.checked ? "show" : "hide"]();
48 50 if($("#user_escala").val() == 2)
49 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 83 $('.esc_asociado')[this.checked ? "show" : "hide"]();
62 84  
63 85 });
... ... @@ -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 100 if ($('#user_escala').val() >= 1) $('#user_oposicion').attr('disabled',true);
80 101 else $('#user_oposicion').attr('disabled',false);
81 102 });
... ...
app/config/security.yml
... ... @@ -37,5 +37,5 @@ security:
37 37 - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
38 38 - { path: ^/register, roles: ROLE_DOCENTE }
39 39 - { path: ^/ceapp, roles: ROLE_DOCENTE }
40   - - { path: ^/admin, roles: ROLE_ADMINISTRADOR }
  40 + - { path: ^/admin, roles: IS_AUTHENTICATED_ANONYMOUSLY }
41 41 - { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY }
... ...
src/AppBundle/Controller/AppController.php
... ... @@ -140,6 +140,7 @@ class AppController extends Controller {
140 140 $adscripciones->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:Estatus')->findOneById(1));
141 141 $user = $this->getDoctrine()->getRepository('AppBundle:Usuarios')->findOneByIdRolInstitucion($adscripcion->getIdRolInstitucion());
142 142 $user->addRol($this->getDoctrine()->getRepository('AppBundle:Role')->findOneByName("ROLE_ADSCRITO"));
  143 +
143 144 }else{
144 145 $adscripciones->setIdEstatus($this->getDoctrine()->getRepository('AppBundle:Estatus')->findOneById(3));
145 146 $user = $this->getDoctrine()->getRepository('AppBundle:Usuarios')->findOneByIdRolInstitucion($adscripcion->getIdRolInstitucion());
... ... @@ -151,7 +152,24 @@ class AppController extends Controller {
151 152 $em->persist($user);
152 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 174 $escala = $this->getDoctrine()->getRepository('AppBundle:DocenteEscala')->findBy(array(
157 175 'idRolInstitucion' => $adscripciones->getIdRolInstitucion()->getId()
... ...
src/AppBundle/Controller/PortalController.php
... ... @@ -51,6 +51,7 @@ class PortalController extends Controller
51 51 if(!$credenciales){ //si no existe, procede a crear usuario y contraseña.
52 52 $login = new Usuarios();
53 53 $login->setUsername($usuario);
  54 + $login->setEmail($form->get('correo')->getData());
54 55 $login->setPlainPassword($form->get('cedula')->getData());
55 56 $password = $this->get('security.password_encoder')
56 57 ->encodePassword($login, $login->getPlainPassword()); //encripta la contraseña
... ...
src/AppBundle/Entity/Usuarios.php
... ... @@ -30,6 +30,14 @@ class Usuarios implements UserInterface, \Serializable
30 30 * @ORM\Column(name="username", type="string", length=255, nullable=false, options={"comment" = "nombre de usuariro"})
31 31 */
32 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 43 * @var string
... ... @@ -112,6 +120,32 @@ class Usuarios implements UserInterface, \Serializable
112 120 {
113 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 151 * Set password
... ...
src/AppBundle/Form/UserType.php
... ... @@ -30,21 +30,43 @@ class UserType extends AbstractType
30 30 {
31 31 $builder
32 32 ->add('fecha_ingreso', BirthdayType::class, array(
  33 + 'widget' => 'choice',
33 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 38 ->add('trabajo', FileType::class, array(
37 39 'label' => 'Digital Constancia Trabajo',
38 40 'constraints' => array(
39 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 55 ->add('pregrado', FileType::class, array(
44 56 'label' => 'Digital Título de Pregrado',
45 57 'constraints' => array(
46 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 74 'label' => 'Digital Título de Postgrado',
53 75 'required' => false,
54 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 90 ->add('oposicion', CheckboxType::class, array(
... ... @@ -75,7 +107,8 @@ class UserType extends AbstractType
75 107 'required' => false,
76 108 'attr' => array(
77 109 'class' => 'esc_oposicion'
78   - )
  110 + ),
  111 + 'years' => range(2003, date("Y"))
79 112 ))
80 113 ->add('documento_oposicion', FileType::class, array(
81 114 'label' => 'Digital Documento Oposición',
... ... @@ -84,6 +117,19 @@ class UserType extends AbstractType
84 117 'attr' => array(
85 118 'style' => 'display:none;',
86 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 171 'label_attr' => array( 'class' => 'esc_asistente'),
126 172 'attr' => array(
127 173 'class' => 'esc_asistente'
128   - )
  174 + ),
  175 + 'years' => range(2003, date("Y"))
129 176 ))
130 177  
131 178 ->add('documento_asistente', FileType::class, array(
... ... @@ -135,6 +182,19 @@ class UserType extends AbstractType
135 182 'attr' => array(
136 183 'style' => 'display:none;',
137 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 216 'required' => false,
157 217 'attr' => array(
158 218 'class' => 'esc_asociado'
159   - )
  219 + ),
  220 + 'years' => range(2003, date("Y"))
160 221 ))
161 222  
162 223 ->add('documento_asociado', FileType::class, array(
... ... @@ -166,6 +227,19 @@ class UserType extends AbstractType
166 227 'attr' => array(
167 228 'style' => 'display:none;',
168 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 259 'required' => false,
186 260 'attr' => array(
187 261 'class' => 'esc_agregado'
188   - )
  262 + ),
  263 + 'years' => range(2003, date("Y"))
189 264 ))
190 265  
191 266 ->add('documento_agregado', FileType::class, array(
... ... @@ -195,6 +270,19 @@ class UserType extends AbstractType
195 270 'attr' => array(
196 271 'style' => 'display:none;',
197 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 303 'required' => false,
216 304 'attr' => array(
217 305 'class' => 'esc_titular'
218   - )
  306 + ),
  307 + 'years' => range(2003, date("Y"))
219 308 ))
220 309  
221 310 ->add('documento_titular', FileType::class, array(
... ... @@ -225,6 +314,19 @@ class UserType extends AbstractType
225 314 'attr' => array(
226 315 'style' => 'display:none;',
227 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  
... ...