Esempio n. 1
0
        public async Task <ActionResult> CambiarClave(NuevaClaveViewModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    int?usuarioId = ManejadorSessionAcceso.getSession(ManejadorSessionAcceso.EnumerableSessionAcceso.usuario_id_pasado_autentificacion) as int?;
                    if (usuarioId.HasValue && usuarioId.Value > 0)
                    {
                        //Cambiar Clave
                        var loginResult = await LoginManager.ChangePasswordAsync(usuarioId.Value, model.Password);

                        if (loginResult.Result == LoginResultType.SucessAuthentication)
                        {
                            var usuario = loginResult.User;

                            //Si unicamente existe un modulo
                            if (usuario.Modulos.Count == 1)
                            {
                                var moduloDefault = usuario.Modulos.FirstOrDefault();

                                var mensaje =
                                    string.Format("El usuario {0} ingresa por defecto con el codigo de modulo {1} , fecha y hora: {2}", usuario, moduloDefault.Codigo
                                                  , Application.getDateTime());

                                return(await AutentificarUsuario(usuario, moduloDefault));
                            }
                            else if (usuario.Modulos.Count > 1)
                            {
                                Log.InfoFormat(string.Format("El usuario [{0}], posee varios modulos ", loginResult.User.Cuenta));

                                //Guardar en sesion, la cuenta que ya sido autentificada
                                ManejadorSessionAcceso.setSession(ManejadorSessionAcceso.EnumerableSessionAcceso.usuario_id_pasado_autentificacion,
                                                                  usuario.Id);

                                return(RedirectToAction("SeleccionarModulo"));
                            }
                            else if (usuario.Modulos.Count == 0)
                            {
                                Log.ErrorFormat("Sistema. El usuario no posee modulos asociadas");
                                ModelState.AddModelError(string.Empty, "El usuario no posee modulos asociadas");
                            }
                        }

                        ModelState.AddModelError("", loginResult.Result.ToString());
                    }
                    else
                    {
                        return(RedirectToAction("Ingreso", new { msg = "Ingrese sus credenciales" }));
                    }
                }
            }
            catch (Exception ex)
            {
                var result = ManejadorExcepciones.HandleException(ex);
                Log.ErrorFormat(result.Message);
                ModelState.AddModelError("", result.Message);
            }


            return(View(model));
        }