public ActionResult GetFile(Int64 id, Int64 mailAccountId = 0) { ISession session = NHibernateManager.OpenSession(); try { User sessionUser = (User)Session[AccountController.USER_NAME]; if (sessionUser == null) { throw new GlimpseException("No se encontró el usuario."); } Extra extra = Extra.FindByID(id, session); if (extra != null && extra.BelongsToUser(sessionUser)) { return(File(extra.Entity.Data, extra.Entity.FileType, extra.Entity.Name)); } else { return(new HttpNotFoundResult()); } } catch (Exception exc) { Log.LogException(exc, "Parametros de la llamada: idExtra(" + id.ToString() + ")."); return(null); } finally { session.Close(); } }
public ActionResult GetMailBody(Int64 id = 0, Int64 mailAccountId = 0) { ISession session = NHibernateManager.OpenSession(); try { MailAccount currentMailAccount = this.GetMailAccount(mailAccountId); String body = currentMailAccount.ReadMail(id, session); IList <ExtraEntity> mailExtras = Extra.FindByMailId(id, session); if (body.Contains("<img src=\"cid:")) { this.InsertEmbeddedExtraUrl(ref body, id, session); } var returnInfo = this.PrepareBodyMail(body, mailExtras); JsonResult result = Json(new { success = true, mail = returnInfo }, JsonRequestBehavior.AllowGet); return(result); } catch (Exception exc) { Log.LogException(exc, "Error generico GetMailBody. Parametros del mail: idMail(" + id.ToString() + ")."); return(Json(new { success = false, message = "Error al obtener el cuerpo del mail." }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }
public ActionResult ChangeImportance(Int64 mailId, Boolean isIncrease, Int64 mailAccountId = 0) { ISession session = NHibernateManager.OpenSession(); ITransaction tran = session.BeginTransaction(); try { MailAccount currentMailAccount = this.GetMailAccount(mailAccountId); Mail theMail = new Mail(mailId, session); if (isIncrease) { theMail.SetImportance((UInt16)(theMail.Entity.Importance + 1), session); } else { theMail.SetImportance((UInt16)(theMail.Entity.Importance - 1), session); } tran.Commit(); JsonResult result = Json(new { success = true }, JsonRequestBehavior.AllowGet); return(result); } catch (Exception exc) { tran.Rollback(); Log.LogException(exc, "Parametros del metodo: mailId(" + mailId.ToString() + "), isIncrease(" + isIncrease.ToString() + "), mailAccountId(" + mailAccountId.ToString() + ")."); return(Json(new { success = false, message = "Error al aumentar importancia." }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }
public ActionResult UnarchiveMail(Int64 mailId, Int64 mailAccountId = 0) { ISession session = NHibernateManager.OpenSession(); ITransaction tran = session.BeginTransaction(); try { MailAccount currentMailAccount = this.GetMailAccount(mailAccountId); Mail mail = new Mail(mailId, session); Label inboxLabel = Label.FindBySystemName(currentMailAccount, "Inbox", session); mail.Unarchive(inboxLabel, session); //DB tran.Commit(); currentMailAccount.UnarchiveMail(mail); //IMAP return(Json(new { success = true }, JsonRequestBehavior.AllowGet)); } catch (Exception exc) { tran.Rollback(); Log.LogException(exc, "Parametros del metodo: mailId(" + mailId.ToString() + "), mailAccountId(" + mailAccountId.ToString() + ")."); return(Json(new { success = false, message = "Error al desarchivar mail." }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }
public ActionResult GetMailsByDate(Int64 initial, Int64 final, Int64 mailAccountId = 0) { DateTime initialDate = AsyncMailsController.ConvertFromJS(initial); DateTime finalDate = AsyncMailsController.ConvertFromJS(final); ISession session = NHibernateManager.OpenSession(); try { MailCollection accountMails; List <Object> mailsToReturn = new List <object>(); User currentUser = (User)Session[AccountController.USER_NAME]; foreach (MailAccount mailAccount in currentUser.GetAccounts()) { accountMails = new MailCollection(mailAccount.GetMailsByDate(initialDate, finalDate, session)); mailsToReturn.AddRange(this.PrepareHomeMails(accountMails)); } JsonResult result = Json(new { success = true, mails = mailsToReturn }, JsonRequestBehavior.AllowGet); return(result); } catch (Exception exc) { Log.LogException(exc, "Fechas del metodo: initialDate(" + initialDate.ToString() + "), finalDate(" + finalDate.ToString() + ")."); return(Json(new { success = false, message = "Error al obtener los mails." }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }
public ActionResult RemoveLabel(String labelName, Int64 mailId, Boolean isSystemLabel, Int64 mailAccountId = 0) { ISession session = NHibernateManager.OpenSession(); ITransaction tran = session.BeginTransaction(); try { MailAccount currentMailAccount = this.GetMailAccount(mailAccountId); Mail mail = new Mail(mailId, session); if (mail.Entity.MailAccountEntity.Id != currentMailAccount.Entity.Id) { return(Json(new { success = false, message = "El mail indicado no pertenece a la cuenta indicada." }, JsonRequestBehavior.AllowGet)); } mail.RemoveLabel(labelName, isSystemLabel, session); //DB tran.Commit(); currentMailAccount.RemoveMailLabel(labelName, mail.Entity.Gm_mid); //IMAP return(Json(new { success = true }, JsonRequestBehavior.AllowGet)); } catch (Exception exc) { tran.Rollback(); Log.LogException(exc, "Parametros de la llamada: labelName(" + labelName + "), gmID(" + mailId.ToString() + "), mailAccountId(" + mailAccountId + ")."); return(Json(new { success = false, message = "Error al remover label." }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }
public ActionResult ValidateUserFields(String firstname, String lastname, String username, String userPassword, String userConfirmationPassword) { String exceptionMessage = ""; ISession session = NHibernateManager.OpenSession(); try { #region Initialize UserView UserViewModel userView = new UserViewModel(); userView.Firstname = firstname; userView.Lastname = lastname; userView.Username = username; userView.Password = userPassword; userView.ConfirmationPassword = userConfirmationPassword; #endregion this.UpdateModel(userView); //corre todos los regex this.ValidateUserGenericFields(userView, session); //nombre, apellido, usuarioGlimpse, contraseñas return(Json(new { success = true }, JsonRequestBehavior.AllowGet)); } catch (InvalidOperationException exc) //model state invalido { foreach (ModelState wrongState in this.ModelState.Values.Where(x => x.Errors.Count > 0)) { foreach (ModelError error in wrongState.Errors) { if (error.ErrorMessage.Contains("usuario Glimpse válido")) //regex dice que un email puede ser valido { exceptionMessage += "El nombre de usuario elegido no posee caracteres válidos."; } else { exceptionMessage += error.ErrorMessage; } } } if (String.IsNullOrEmpty(exceptionMessage)) { exceptionMessage = exc.Message; } return(Json(new { success = false, message = exceptionMessage }, JsonRequestBehavior.AllowGet)); } catch (GlimpseException exc) { return(Json(new { success = false, message = exc.GlimpseMessage }, JsonRequestBehavior.AllowGet)); } catch (Exception exc) { Log.LogException(exc, "Parametros: userName:(" + username + "), password( " + userPassword + "), confirmationPassword(" + userConfirmationPassword + "), firstname(" + firstname + "), lastname(" + lastname + ")."); return(Json(new { success = false, message = "Error validando usuario." }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }
public ActionResult RenameLabel(String oldLabelName, String newLabelName) { ISession session = NHibernateManager.OpenSession(); ITransaction tran = session.BeginTransaction(); try { User sessionUser = (User)Session[AccountController.USER_NAME]; if (sessionUser == null) { throw new GlimpseException("No se encontró el usuario."); } List <LabelEntity> userLabels = new List <LabelEntity>(); IList <MailAccount> userMailAccounts = sessionUser.GetAccounts(); foreach (MailAccount userMailAccount in userMailAccounts) { userLabels.AddRange(Label.FindByAccount(userMailAccount.Entity, session)); } if (userLabels.Any(x => x.Name == newLabelName && x.SystemName == null)) { throw new GlimpseException("No se puede renombrar la etiqueta con un nombre de una etiqueta existente."); } foreach (MailAccount userMailAccount in userMailAccounts) { IEnumerable <LabelEntity> accountLabelsToRename = userLabels.Where(x => x.Name == oldLabelName && x.MailAccountEntity.Id == userMailAccount.Entity.Id && x.SystemName == null); foreach (LabelEntity label in accountLabelsToRename) { new Label(label).Rename(oldLabelName, newLabelName, session); //BD userMailAccount.RenameLabel(oldLabelName, newLabelName); //IMAP } } tran.Commit(); return(Json(new { success = true }, JsonRequestBehavior.AllowGet)); } catch (GlimpseException exc) { tran.Rollback(); return(Json(new { success = false, message = exc.GlimpseMessage }, JsonRequestBehavior.AllowGet)); } catch (Exception exc) { tran.Rollback(); Log.LogException(exc, "Parametros del metodo: oldLabelName(" + oldLabelName + "), newLabelName(" + newLabelName + ")."); return(Json(new { success = false, message = "Error al renombrar label." }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }
public void ValidateCredentials() { using (ISession session = NHibernateManager.OpenSession()) { MailAccount correctMailAccount = MailAccount.FindByAddress(this.Entity.Address, session, false); if (!CryptoHelper.PasswordsMatch(correctMailAccount.Entity.Password, this.Entity.Password)) { throw new InvalidAuthenticationException("Las credenciales ingresadas no son validas, usuario:" + this.Entity.Address); } } }
public ActionResult CreateLabel(String labelName, Int64 mailAccountId = 0) { ISession session = NHibernateManager.OpenSession(); ITransaction tran = session.BeginTransaction(); try { User sessionUser = (User)Session[AccountController.USER_NAME]; if (sessionUser == null) { throw new GlimpseException("No se encontró el usuario."); } MailAccount labelAccount; if (mailAccountId != 0) { labelAccount = this.GetMailAccount(mailAccountId); } else { labelAccount = this.GetMainMailAccount(); } Label existingLabel = Label.FindByName(labelAccount, labelName, session); if (existingLabel != null) { return(Json(new { success = false, message = "Ya existe una etiqueta con ese nombre." }, JsonRequestBehavior.AllowGet)); } Label newLabel = new Label(new LabelEntity()); newLabel.Entity.SystemName = null; newLabel.Entity.Name = labelName; newLabel.Entity.Active = true; newLabel.Entity.MailAccountEntity = labelAccount.Entity; Label.ColorLabel(newLabel.Entity, labelAccount, sessionUser, session); newLabel.SaveOrUpdate(session); //BD tran.Commit(); labelAccount.CreateLabel(labelName); //IMAP return(Json(new { success = true, color = newLabel.Entity.Color }, JsonRequestBehavior.AllowGet)); } catch (Exception exc) { tran.Rollback(); Log.LogException(exc, "Parametros del metodo: labelName(" + labelName + "), mailAccountId(" + mailAccountId.ToString() + ")."); return(Json(new { success = false, message = "Error al crear label." }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }
public static void SynchronizeTrash(String mailAddress) { MailAccount mailAccountTrash; MailsTask newTaskTrash; String mailAddressTrash = mailAddress + "/TRASH"; if (MailsTasksHandler.IsWorking(mailAddressTrash)) { return; } using (ISession session = NHibernateManager.OpenSession()) { mailAccountTrash = MailAccount.FindByAddress(mailAddress, session, false); try { mailAccountTrash.ConnectFull(session); } catch (NullReferenceException exc) { Log.LogException(exc, "Direccion inexistente en la base de datos: " + mailAccountTrash + "."); return; } catch (InvalidAuthenticationException exc) { Log.LogException(exc, "No se pudo conectar a imap con la direccion: " + mailAddress + ", ha cambiado el password."); return; } catch (SocketException exc) { Log.LogException(exc, "No se pudo conectar a imap con la direccion: " + mailAddress + "."); return; } Label trashLabel = Label.FindBySystemName(mailAccountTrash, "Trash", session); newTaskTrash = new MailsTask(mailAccountTrash.GetUIDLocal(session, trashLabel.Entity.SystemName, true), mailAccountTrash.GetUIDLocal(session, trashLabel.Entity.SystemName, false), mailAccountTrash.GetUIDExternalFrom(trashLabel.Entity.Name, true), mailAccountTrash.GetUIDExternalFrom(trashLabel.Entity.Name, false), trashLabel, mailAccountTrash); session.Close(); } if (!newTaskTrash.HasFinished) { MailsTasksHandler.LockTasksList(); MailsTasksHandler.TasksList[mailAddressTrash] = newTaskTrash; MailsTasksHandler.UnlockTasksList(); MailsTasksHandler.StartMailsTask(newTaskTrash); } }
private static void Save(List <Mail> mails) { ISession session = NHibernateManager.OpenSession(); ITransaction tran = session.BeginTransaction(); foreach (Mail mailToSave in mails) { Address newAddress = new Address(mailToSave.Entity.From); newAddress.SaveOrUpdate(session); //si fija si ya existe adentro mailToSave.SetFrom(newAddress.Entity); session.SaveOrUpdate(mailToSave.Entity); } tran.Commit(); session.Flush(); session.Close(); }
public ActionResult EditUserPassword(String oldPassword, String newPassword, String newPasswordConfirmation) { String exceptionMessage = ""; ISession session = NHibernateManager.OpenSession(); try { User sessionUser = (User)Session[AccountController.USER_NAME]; if (sessionUser == null) { throw new GlimpseException("No se encontró el usuario."); } if (!Glimpse.Models.User.IsPassword(newPassword)) { exceptionMessage += "La contraseña ingresada contiene caracteres no válidos, es muy corta o muy larga."; } if (newPassword != newPasswordConfirmation) { exceptionMessage += "Las contraseñas ingresadas deben coincidir."; } if (exceptionMessage != "") { throw new GlimpseException(exceptionMessage); } sessionUser.ChangePassword(CryptoHelper.EncryptDefaultKey(oldPassword), CryptoHelper.EncryptDefaultKey(newPassword), session); session.Flush(); return(Json(new { success = true }, JsonRequestBehavior.AllowGet)); } catch (GlimpseException exc) { return(Json(new { success = false, message = exc.GlimpseMessage }, JsonRequestBehavior.AllowGet)); } catch (Exception exc) { Log.LogException(exc, "Parametros: oldPassword:(" + oldPassword + "), newPassword( " + newPassword + "), newPasswordConfirmation(" + newPasswordConfirmation + ")."); return(Json(new { success = false, message = "Error actualizando contraseñas." }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }
public void Init() { NHibernateManager.FluentAssemblies.Add(typeof(User).Assembly); NHibernateManager.FluentAssemblies.Add(typeof(Customer).Assembly); NHibernateManager.FluentAssemblies.Add(typeof(eBayDatabaseMarketPlace).Assembly); NHibernateManager.FluentAssemblies.Add(typeof(AmazonDatabaseMarketPlace).Assembly); NHibernateManager.FluentAssemblies.Add(typeof(PayPalDatabaseMarketPlace).Assembly); NHibernateManager.FluentAssemblies.Add(typeof(EkmDatabaseMarketPlace).Assembly); NHibernateManager.FluentAssemblies.Add(typeof(DatabaseMarketPlace).Assembly); NHibernateManager.FluentAssemblies.Add(typeof(YodleeDatabaseMarketPlace).Assembly); NHibernateManager.FluentAssemblies.Add(typeof(PayPointDatabaseMarketPlace).Assembly); NHibernateManager.FluentAssemblies.Add(typeof(FreeAgentDatabaseMarketPlace).Assembly); NHibernateManager.FluentAssemblies.Add(typeof(SageDatabaseMarketPlace).Assembly); Scanner.Register(); ObjectFactory.Configure(x => { x.For <ISession>() .LifecycleIs(new ThreadLocalStorageLifecycle()) .Use(ctx => NHibernateManager.OpenSession()); x.For <ISessionFactory>().Use(() => NHibernateManager.SessionFactory); x.For <ICustomerRepository>().Use <CustomerRepository>(); x.For <ILoanLegalRepository>().Use <LoanLegalRepository>(); x.For <ILoanTypeRepository>().Use <LoanTypeRepository>(); x.For <ILoanSourceRepository>().Use <LoanSourceRepository>(); x.For <IDiscountPlanRepository>().Use <DiscountPlanRepository>(); x.For <ILoanOptionsRepository>().Use <LoanOptionsRepository>(); x.For <IEzServiceAccessor>().Use <EzServiceAccessorLong>(); }); var oLog4NetCfg = new Log4Net().Init(); m_oEnv = oLog4NetCfg.Environment; m_oLog = new ConsoleLog(new SafeILog(this)); m_oDB = new SqlConnection(oLog4NetCfg.Environment, m_oLog); ConfigManager.CurrentValues.Init(m_oDB, m_oLog); DbConnectionPool.ReuseCount = CurrentValues.Instance.ConnectionPoolReuseCount; AConnection.UpdateConnectionPoolMaxSize(CurrentValues.Instance.ConnectionPoolMaxSize); Ezbob.Backend.Strategies.Library.Initialize(m_oEnv, m_oDB, m_oLog); } // Init
public MailAccount Clone() { MailAccount mailAccountClone; MailAccountEntity entity; using (ISession session = NHibernateManager.OpenSession()) { entity = MailAccount.FindByAddress(this.Entity.Address, session, false).Entity; mailAccountClone = new MailAccount(entity); if (this.IsConnected()) { mailAccountClone.ConnectFull(session); } session.Close(); } return(mailAccountClone); }
public async Task <IList <T> > FindAll(string orderByProperty = null, int?maxResults = null) { using var session = NHibernateManager.OpenSession(); var criteria = session.CreateCriteria(typeof(T)); if (!string.IsNullOrWhiteSpace(orderByProperty)) { criteria.AddOrder(Order.Asc(orderByProperty)); } else { criteria.AddOrder(Order.Asc("Id")); } if (maxResults.HasValue) { criteria.SetMaxResults(maxResults.Value); } return(await criteria.ListAsync <T>()); }
public ActionResult GetUsedDirections() { ISession session = NHibernateManager.OpenSession(); try { User currentUser = (User)Session[AccountController.USER_NAME]; if (currentUser == null) { throw new GlimpseException("No se encontró el usuario."); } IList <String> directions = new List <string>(); String accountIds = ""; foreach (MailAccount mailAccount in currentUser.GetAccounts()) { accountIds += mailAccount.Entity.Id + ','; } accountIds = accountIds.Trim(','); directions = session.CreateQuery( "SELECT distinct(A.MailAddress) " + "FROM ADDRESS A " + "INNER JOIN MAIL M ON M.fromid = A.id " + "WHERE M.mailaccountid IN (" + accountIds + ")") .List <String>(); return(Json(new { directions = directions }, JsonRequestBehavior.AllowGet)); } catch (Exception exc) { Log.LogException(exc); return(Json(new { directions = new String[0] }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }
public ActionResult RecolorLabel(String labelName, String color) { ISession session = NHibernateManager.OpenSession(); ITransaction tran = session.BeginTransaction(); try { User sessionUser = (User)Session[AccountController.USER_NAME]; if (sessionUser == null) { throw new GlimpseException("No se encontró el usuario."); } foreach (MailAccount currentMailAccount in sessionUser.GetAccounts()) { IList <LabelEntity> labels = Label.FindByAccount(currentMailAccount.Entity, session); if (labels.Any(x => x.Name == labelName)) { LabelEntity labelToRecolor = labels.Single(x => x.Name == labelName); labelToRecolor.Color = color; session.SaveOrUpdate(labelToRecolor); } } tran.Commit(); return(Json(new { success = true }, JsonRequestBehavior.AllowGet)); } catch (Exception exc) { tran.Rollback(); Log.LogException(exc, "Parametros del metodo: labelName(" + labelName + "), color(" + color + ")."); return(Json(new { success = false, message = "Error al cambiar color." }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }
public async Task <IList <T> > FindAllByProperty(string property, object value, string orderByProperty = null, int?maxResults = null) { using var session = NHibernateManager.OpenSession(); var criteria = session.CreateCriteria(typeof(T)); if (!string.IsNullOrWhiteSpace(orderByProperty)) { criteria.AddOrder(Order.Asc(orderByProperty)); } else { criteria.AddOrder(Order.Asc("Id")); } criteria.Add(value == null || value.ToString() == "null" ? Restrictions.IsNull(property) : Restrictions.Eq(property, value)); if (maxResults.HasValue) { criteria.SetMaxResults(maxResults.Value); } return(await criteria.ListAsync <T>()); }
public ActionResult ResetPassword(String username) { ISession session = NHibernateManager.OpenSession(); ITransaction tran = session.BeginTransaction(); try { User user = Glimpse.Models.User.FindByUsername(username, session); if (user == null) { throw new GlimpseException("Usuario inexistente: " + username + "."); } String newPassword = StringHelper.GenerateRandomString(); String newPasswordEnc = CryptoHelper.EncryptDefaultKey(newPassword); user.ChangePassword(user.Entity.Password, newPasswordEnc, session); MailAccount.SendResetPasswordMail(user, newPassword, session); tran.Commit(); JsonResult result = Json(new { success = true, message = "La contraseña ha sido reinicializada." }, JsonRequestBehavior.AllowGet); return(result); } catch (GlimpseException exc) { tran.Rollback(); return(Json(new { success = false, message = exc.GlimpseMessage }, JsonRequestBehavior.AllowGet)); } catch (Exception exc) { tran.Rollback(); Log.LogException(exc); return(Json(new { success = false, message = "Error al reiniciar la contraseña." }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }
public ActionResult EditUserPersonalData(String firstName, String lastName, String country, String city, String tel) { ISession session = NHibernateManager.OpenSession(); try { User sessionUser = (User)Session[AccountController.USER_NAME]; if (sessionUser == null) { throw new GlimpseException("No se encontró el usuario."); } sessionUser.Entity.Firstname = firstName; sessionUser.Entity.Lastname = lastName; sessionUser.Entity.Country = country; sessionUser.Entity.City = city; sessionUser.Entity.Telephone = tel; sessionUser.SaveOrUpdate(session); session.Flush(); return(Json(new { success = true, url = Url.Action("Index", "Home") }, JsonRequestBehavior.AllowGet)); } catch (GlimpseException exc) { return(Json(new { success = false, message = exc.GlimpseMessage }, JsonRequestBehavior.AllowGet)); } catch (Exception exc) { Log.LogException(exc, "Parametros: firstName:(" + firstName + "), lastName( " + lastName + "), country(" + country + "), city(" + city + "), tel(" + tel + ")."); return(Json(new { success = false, message = "Error modificando los datos del usuario." }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }
public ActionResult DeleteLabel(String labelName, Int64 mailAccountId = 0) { ISession session = NHibernateManager.OpenSession(); ITransaction tran = session.BeginTransaction(); try { User sessionUser = (User)Session[AccountController.USER_NAME]; if (sessionUser == null) { throw new GlimpseException("No se encontró el usuario."); } foreach (MailAccount currentMailAccount in sessionUser.GetAccounts()) { Label labelToDelete = Label.FindByName(currentMailAccount, labelName, session); if (labelToDelete != null) { labelToDelete.Delete(session); //BD currentMailAccount.DeleteLabel(labelName); //IMAP } } tran.Commit(); return(Json(new { success = true }, JsonRequestBehavior.AllowGet)); } catch (Exception exc) { tran.Rollback(); Log.LogException(exc, "Parametros del metodo: labelName(" + labelName + "), mailAccountId(" + mailAccountId.ToString() + ")."); return(Json(new { success = false, message = "Error al eliminar label." }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }
public ActionResult AddLabel(String labelName, Int64 mailId, Int64 mailAccountId = 0) { ISession session = NHibernateManager.OpenSession(); ITransaction tran = session.BeginTransaction(); try { MailAccount mailAccount = this.GetMailAccount(mailAccountId); Label theLabel = this.GetAccountLabel(labelName, mailAccount, session); if (theLabel == null) { return(Json(new { success = false, message = "No se ha podido encontrar la etiqueta con el nombre:" + labelName + "." }, JsonRequestBehavior.AllowGet)); } Mail theMail = new Mail(mailId, session); if (theMail.Entity.MailAccountEntity.Id != theLabel.Entity.MailAccountEntity.Id) //si el mail no es del mismo MailAccount de la etiqueta { this.CreateLabel(labelName, theMail.Entity.MailAccountEntity.Id); //DB e IMAP } theMail.AddLabel(theLabel, session); //DB tran.Commit(); mailAccount.AddLabelFolder(theMail, theLabel); //IMAP return(Json(new { success = true }, JsonRequestBehavior.AllowGet)); } catch (Exception exc) { tran.Rollback(); Log.LogException(exc, "Parametros de la llamada: label(" + labelName + "), mailId(" + mailId.ToString() + "), mailAccountId(" + mailAccountId + ")."); return(Json(new { success = false }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }
public async Task <T> FindOneByProperty(string property, object value, string orderByProperty = null) { using var session = NHibernateManager.OpenSession(); var criteria = session.CreateCriteria(typeof(T)); if (!string.IsNullOrEmpty(orderByProperty)) { criteria.AddOrder(Order.Asc(orderByProperty)); } else { criteria.AddOrder(Order.Asc("Id")); } criteria.Add(value == null ? Restrictions.IsNull(property) : Restrictions.Eq(property, value)); criteria.SetMaxResults(1); var result = await criteria.ListAsync <T>(); if (result != null && result.Count > 0) { return(result[0]); } return(default);
public ActionResult SetReadFlag(Int64 mailId, Boolean seenFlag, Int64 mailAccountId = 0) { ISession session = NHibernateManager.OpenSession(); try { MailAccount currentMailAccount = this.GetMailAccount(mailAccountId); Mail mail = new Mail(mailId, session); currentMailAccount.SetReadFlag(mail, seenFlag, session); JsonResult result = Json(new { success = true }, JsonRequestBehavior.AllowGet); return(result); } catch (Exception exc) { Log.LogException(exc, "Parametros del metodo: mailId(" + mailId.ToString() + "), seenFlag(" + seenFlag.ToString() + "), mailAccountId(" + mailAccountId.ToString() + ")."); return(Json(new { success = false, message = "Error al marcar flag de leido." }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }
public ActionResult GetMailsByAmount(Int32 amountOfMails, Int64 mailAccountId = 0) { ISession session = NHibernateManager.OpenSession(); try { MailCollection mails; List <Object> mailsToReturn = new List <object>(); MailAccount currentMailAccount = this.GetMailAccount(mailAccountId); mails = currentMailAccount.GetMailsByAmount(amountOfMails, session); mailsToReturn = this.PrepareHomeMails(mails); return(Json(new { success = true, mails = mailsToReturn }, JsonRequestBehavior.AllowGet)); } catch (Exception exc) { Log.LogException(exc, "Parametros de la llamada: amountOfMails(" + amountOfMails + ")."); return(Json(new { success = false, message = "Error al obtener los mails." }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }
public ActionResult UntrashMail(Int64 id, Int64 mailAccountId = 0) { ISession session = NHibernateManager.OpenSession(); ITransaction tran = session.BeginTransaction(); try { MailAccount mailAccount = this.GetMailAccount(mailAccountId); Mail mail = new Mail(id, session); if (mail == null) { throw new GlimpseException("Mail inexistente: " + id.ToString() + "."); } mailAccount.UntrashMail(mail, session); //IMAP y BD tran.Commit(); JsonResult result = Json(new { success = true }, JsonRequestBehavior.AllowGet); return(result); } catch (GlimpseException exc) { tran.Rollback(); Log.LogException(exc, "Parametros de la llamada: mailID(" + id.ToString() + ")."); return(Json(new { success = false, message = exc.GlimpseMessage }, JsonRequestBehavior.AllowGet)); } catch (Exception exc) { tran.Rollback(); Log.LogException(exc, "Parametros de la llamada: mailID(" + id.ToString() + ")."); return(Json(new { success = false, message = exc.Message }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }
public static void StartSynchronization(String mailAddress, Boolean forwardOnly = true) { MailAccount mailAccountAll; MailsTask newAllTask; MailsTask newTaskTrash; MailsTask newSpamTask; String mailAddressAll = mailAddress + "/ALL"; String mailAddressTrash = mailAddress + "/TRASH"; String mailAddressSpam = mailAddress + "/SPAM"; if (MailsTasksHandler.IsAnyWorking(new String[] { mailAddressAll, mailAddressTrash, mailAddressSpam })) { return; //alguna tarea se encuentra trabajando } using (ISession session = NHibernateManager.OpenSession()) { mailAccountAll = MailAccount.FindByAddress(mailAddress, session, false); try { mailAccountAll.ConnectFull(session); } catch (NullReferenceException exc) { Log.LogException(exc, "Direccion inexistente en la base de datos: " + mailAccountAll + "."); return; } catch (InvalidAuthenticationException exc) { Log.LogException(exc, "No se pudo conectar a imap con la direccion: " + mailAddress + ", ha cambiado el password."); return; } catch (SocketException exc) { Log.LogException(exc, "No se pudo conectar a imap con la direccion: " + mailAddress + "."); return; } Label allLabel = Label.FindBySystemName(mailAccountAll, "All", session); Label trashLabel = Label.FindBySystemName(mailAccountAll, "Trash", session); Label spamLabel = Label.FindBySystemName(mailAccountAll, "Junk", session); newAllTask = new MailsTask(mailAccountAll.GetUIDLocal(session, allLabel.Entity.SystemName, true), //lastUidLocal mailAccountAll.GetUIDLocal(session, allLabel.Entity.SystemName, false), //firstUidLocal mailAccountAll.GetUIDExternalFrom(allLabel.Entity.Name, true), //lastUidExternal mailAccountAll.GetUIDExternalFrom(allLabel.Entity.Name, false), //firstUidExternal allLabel, mailAccountAll); newTaskTrash = new MailsTask(mailAccountAll.GetUIDLocal(session, trashLabel.Entity.SystemName, true), //lastUidLocal mailAccountAll.GetUIDLocal(session, trashLabel.Entity.SystemName, false), //firstUidLocal mailAccountAll.GetUIDExternalFrom(trashLabel.Entity.Name, true), //lastUidExternal mailAccountAll.GetUIDExternalFrom(trashLabel.Entity.Name, false), //firstUidExternal trashLabel, null); newSpamTask = new MailsTask(mailAccountAll.GetUIDLocal(session, spamLabel.Entity.SystemName, true), //lastUidLocal mailAccountAll.GetUIDLocal(session, spamLabel.Entity.SystemName, false), //firstUidLocal mailAccountAll.GetUIDExternalFrom(spamLabel.Entity.Name, true), //lastUidExternal mailAccountAll.GetUIDExternalFrom(spamLabel.Entity.Name, false), //firstUidExternal spamLabel, null); session.Close(); } if (!newAllTask.HasFinished) //puede ser que no se necesite sincronizar dependiendo de los numeros { if (newAllTask.HighestUidLocal != 0) //si no es la primera vez, que sincronice hacia adelante sin limites { newAllTask.SetUnlimitedForwarding(true); } newAllTask.SetForwardOnly(forwardOnly); MailsTasksHandler.LockTasksList(); MailsTasksHandler.TasksList[mailAddressAll] = newAllTask; MailsTasksHandler.UnlockTasksList(); MailsTasksHandler.StartMailsTask(newAllTask); } if (!newTaskTrash.HasFinished) { MailAccount mailAccountTrash = mailAccountAll.Clone(); //crear otra conexion a IMAP newTaskTrash.SetMailAccount(mailAccountTrash); MailsTasksHandler.LockTasksList(); MailsTasksHandler.TasksList[mailAddressTrash] = newTaskTrash; MailsTasksHandler.UnlockTasksList(); MailsTasksHandler.StartMailsTask(newTaskTrash); } if (!newSpamTask.HasFinished) { MailAccount mailAccountSpam = mailAccountAll.Clone(); //crear otra conexion a IMAP newSpamTask.SetMailAccount(mailAccountSpam); MailsTasksHandler.LockTasksList(); MailsTasksHandler.TasksList[mailAddressSpam] = newSpamTask; MailsTasksHandler.UnlockTasksList(); MailsTasksHandler.StartMailsTask(newSpamTask); } }
public void Setup() { NHibernateManager.FluentAssemblies.Add(typeof(User).Assembly); NHibernateManager.FluentAssemblies.Add(typeof(Customer).Assembly); NHibernateManager.FluentAssemblies.Add(typeof(PayPointDatabaseMarketPlace).Assembly); Scanner.Register(); ObjectFactory.Configure(x => { x.For <ISession>().LifecycleIs(new ThreadLocalStorageLifecycle()).Use(ctx => NHibernateManager.OpenSession()); x.For <ISessionFactory>().Use(() => NHibernateManager.SessionFactory); x.For <ILoanRepository>().Use <LoanRepository>(); }); }
} // InitInstanceName private bool Init() { m_oDB = new SqlConnection(m_oEnv, m_oLog); if (m_oDB == null) { throw new Exception("Failed to create a DB connection."); } if (!InitInstanceName()) { return(false); } m_oCfg = new Configuration(m_sInstanceName, m_oDB, m_oLog); m_oCfg.Init(); var oRuntimeData = new EzServiceInstanceRuntimeData { Env = m_oEnv, Host = this, Log = m_oLog, DB = m_oDB, InstanceName = m_sInstanceName, InstanceID = m_oCfg.InstanceID, }; m_oHost = new EzServiceHost(m_oCfg, oRuntimeData); CurrentValues.ReloadOnTimer oOnTimer = () => { DbConnectionPool.ReuseCount = CurrentValues.Instance.ConnectionPoolReuseCount; AConnection.UpdateConnectionPoolMaxSize(CurrentValues.Instance.ConnectionPoolMaxSize); }; CurrentValues.Init(m_oDB, m_oLog); CurrentValues.Instance.RefreshIntervalMinutes = CurrentValues.Instance.EzServiceUpdateConfiguration; Scanner.Register(); ObjectFactory.Configure(x => { x.For <ISession>().LifecycleIs(new ThreadLocalStorageLifecycle()).Use(ctx => NHibernateManager.OpenSession()); x.For <ISessionFactory>().Use(() => NHibernateManager.SessionFactory); x.AddRegistry <ServiceRegistry>(); }); oOnTimer(); CurrentValues.OnReloadByTimer += oOnTimer; m_oCrontabDaemon = new Daemon(oRuntimeData, m_oDB, m_oLog); return(true); } // Init