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(); } }