Exemplo n.º 1
0
        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();
            }
        }