/// <summary> /// Actualiza el idioma del usuario en sesión, según el id del idioma pasado por parámetro. /// </summary> /// <param name="languageId"></param> /// <returns></returns> public ResultBM ChangeCurrentLanguage(int languageId) { // Se recupera el usuario de la sesión para cambiarle el id del idioma UserDAL userDal = new UserDAL(); UserDTO userDto = userDal.GetUser(SessionHelper.GetLoggedUser().Id); UserBM userBm = new UserBM(userDto); ResultBM updateResult; try { int originalLanguage = userBm.LanguageId; userBm.LanguageId = languageId; updateResult = UpdateUser(userBm); if (updateResult.IsValid()) { //Quizá debería manejarme con el modelo de lenguage LanguageBLL languageBll = new LanguageBLL(); LanguageBM languageBm = languageBll.GetLanguage(languageId); SessionHelper.SetLanguage(languageBm); SessionHelper.GetLoggedUser().LanguageId = languageId; } else { userBm.LanguageId = originalLanguage; } return(updateResult); } catch (Exception exception) { return(new ResultBM(ResultBM.Type.EXCEPTION, SessionHelper.GetTranslation("UPDATING_ERROR") + " " + exception.Message, exception)); } }
public ResultBM LogIn(string user, string password) { UserBLL userBll = new UserBLL(); UserBM userBm; LanguageBLL languageBll = new LanguageBLL(); LanguageBM languageBm; ProfileBLL profileBll = new ProfileBLL(); ProfileBM profileBm; DigitVerificatorBLL dvBll = new DigitVerificatorBLL(); ResultBM result; try { //1. Validación input result = IsValid(user, password); if (result.IsValid()) { //2. Validación usuario result = userBll.GetUser(user, password); if (result.IsValid()) { log.AddLogInfo("Autenticando", "Usuario " + user + " encontrado en la base de datos.", this); userBm = result.GetValue <UserBM>(); //3. Recuperación de permisos profileBm = profileBll.GetProfile(userBm.PermissionId).GetValue() as ProfileBM; //4. Recuperación de idioma languageBm = languageBll.GetLanguage(userBm.LanguageId); //5. Armado de sesión SessionHelper.StartSession(userBm, profileBm, languageBm); log.AddLogDebug("Creando sesión", "Sesion para el usuario " + user + " creada.", this); //6 Chequeo de consistencia horizontal result = dvBll.IsHorizontallyConsistent(userBm); if (!result.IsValid()) { log.AddLogCritical("Dígito horizontal", "Falló la verificación horizontal al momento de chequear los datos del usuario " + user + ".", this); //Sólo un admin puede continuar no es suficiente con que pueda restaurar result = new ResultBM(ResultBM.Type.CORRUPTED_DATABASE, result.description, null, profileBm.HasPermission("GE999")); } else { //4.2 Chequeo de vertical result = dvBll.IsVerticallyConsistent(); if (!result.IsValid()) { log.AddLogCritical("Dígito vertical", "Falló la verificación vertical al momento de loguear al usuario " + user + ".", this); //Sólo un admin puede continuar no es suficiente con que pueda restaurar result = new ResultBM(ResultBM.Type.CORRUPTED_DATABASE, result.description, null, profileBm.HasPermission("GE999")); } else { log.AddLogInfo("Logueo", "El usuario " + user + " se ha logueado exitosamente.", this); result = new ResultBM(ResultBM.Type.OK, "Inicio de sesión exitoso para el usuario " + user); } } } else { log.AddLogInfo("Autenticando", "Usuario " + user + " no ha sido encontrado en la base de datos.", this); } } } catch (Exception exception) { result = new ResultBM(ResultBM.Type.EXCEPTION, exception.Message, exception, false); } return(result); }