Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }