private void Store(StoreCommand cmd, List <MailMessage> mails) { using (var ctx = new MSGorillaMailEntities()) { foreach (var mail in mails) { var curMail = ctx.MailMessages.Find(mail.ID); if (cmd.Action == StoreCommand.ActionType.AddFlag) { AddFlags(curMail, cmd.Flags); } else if (cmd.Action == StoreCommand.ActionType.RemoveFlag) { RemoveFlags(curMail, cmd.Flags); } else { SetFlags(curMail, cmd.Flags); } if (cmd.IsSilent == false) { FetchResponse response = new FetchResponse(curMail.SequenceNumber); response.Items.Add(new FetchDataItem(FetchDataItemType.Flags, CreateFlaggedString(curMail))); this.Session.AppendResponse(response); } } ctx.SaveChanges(); } }
private List <MailMessage> Search(SearchCommand cmd) { List <MailMessage> ret = new List <MailMessage>(); string sql = _createQuerySql(cmd); if (!string.IsNullOrEmpty(sql)) { using (var ctx = new MSGorillaMailEntities()) { ret = ctx.MailMessages.SqlQuery(sql).ToList(); } } return(ret); }
private List <MailMessage> GetMailMessagesFromCmd(IMailProcessCommand cmd) { List <MailMessage> mails = new List <MailMessage>(); using (var ctx = new MSGorillaMailEntities()) { if (cmd.IsUIDCommand) { foreach (var item in cmd.MessageID) { if (item.ItemType == MessageIDListItemType.Single) { mails.Add(this.store.GetMailMessageByUid(item.Start, this._mailbox, ctx)); } else if (item.ItemType == MessageIDListItemType.BoundedRange) { mails = mails.Concat(this.store.GetMailMessageByUidRange(item.Start, item.End, this._mailbox, ctx)).ToList(); } else if (item.ItemType == MessageIDListItemType.UnboundedRange) { mails = mails.Concat(this.store.GetMailMessageByUidRange(item.Start, int.MaxValue, this._mailbox, ctx)).ToList(); } } } else { foreach (var item in cmd.MessageID) { if (item.ItemType == MessageIDListItemType.Single) { mails.Add(this.store.GetMailMessageBySeqID(item.Start, this._mailbox, ctx)); } else if (item.ItemType == MessageIDListItemType.BoundedRange) { mails = mails.Concat(this.store.GetMailMessageBySeqIDRange(item.Start, item.End, this._mailbox, ctx)).ToList(); } else if (item.ItemType == MessageIDListItemType.UnboundedRange) { mails = mails.Concat(this.store.GetMailMessageBySeqIDRange(item.Start, int.MaxValue, this._mailbox, ctx)).ToList(); } } } } return(mails); }
public override void ProcessNoopCommand(NoopCommand cmd) { using (var ctx = new MSGorillaMailEntities()) { MailBox box = this.store.GetMailbox(_mailbox.MailboxID, ctx); if (box.Exist != _mailbox.Exist) { _mailbox = box; this.Enter(); } else { _mailbox = box; } } base.ProcessNoopCommand(cmd); }