コード例 #1
0
        public bool SetMailboxProcessed(Mailbox mailbox, int nextLoginDelay, bool?enabled = null,
                                        int?messageCount         = null, long?size = null, bool?quotaError = null, string oAuthToken = null,
                                        string imapIntervalsJson = null, bool?resetImapIntervals = false)
        {
            if (nextLoginDelay < Defines.DefaultServerLoginDelay)
            {
                nextLoginDelay = Defines.DefaultServerLoginDelay;
            }

            var query = new SqlUpdate(MailboxTable.TABLE_NAME)
                        .Set(MailboxTable.Columns.IsProcessed, false)
                        .Set(SET_DATE_CHECKED)
                        .Set(nextLoginDelay > Defines.DefaultServerLoginDelay
                    ? string.Format(SET_LOGIN_DELAY_EXPIRES, nextLoginDelay)
                    : SetDefaultLoginDelayExpires)
                        .Where(MailboxTable.Columns.Id, mailbox.Id);

            if (enabled.HasValue)
            {
                query.Set(MailboxTable.Columns.Enabled, enabled.Value);
            }

            if (messageCount.HasValue)
            {
                query.Set(MailboxTable.Columns.MsgCountLast, messageCount.Value);
            }

            if (size.HasValue)
            {
                query.Set(MailboxTable.Columns.SizeLast, size.Value);
            }

            if (quotaError.HasValue)
            {
                query.Set(MailboxTable.Columns.QuotaError, quotaError.Value);
            }

            if (!string.IsNullOrEmpty(oAuthToken))
            {
                query.Set(MailboxTable.Columns.OAuthToken, MailUtil.EncryptPassword(oAuthToken));
            }

            if (resetImapIntervals.HasValue)
            {
                query.Set(MailboxTable.Columns.ImapIntervals, null);
            }
            else
            {
                if (!string.IsNullOrEmpty(imapIntervalsJson))
                {
                    query.Set(MailboxTable.Columns.ImapIntervals, imapIntervalsJson);
                }
            }

            var result = Db.ExecuteNonQuery(query);

            return(result > 0);
        }
コード例 #2
0
        public int SaveMailBox(Mailbox mailbox)
        {
            var query = new SqlInsert(MailboxTable.TABLE_NAME, true)
                        .InColumnValue(MailboxTable.Columns.Id, mailbox.Id)
                        .InColumnValue(MailboxTable.Columns.Tenant, mailbox.Tenant)
                        .InColumnValue(MailboxTable.Columns.User, mailbox.User)
                        .InColumnValue(MailboxTable.Columns.Address, mailbox.Address)
                        .InColumnValue(MailboxTable.Columns.Name, mailbox.Name)
                        .InColumnValue(MailboxTable.Columns.Enabled, mailbox.Enabled)
                        .InColumnValue(MailboxTable.Columns.IsRemoved, mailbox.IsRemoved)
                        .InColumnValue(MailboxTable.Columns.IsProcessed, mailbox.IsProcessed)
                        .InColumnValue(MailboxTable.Columns.IsServerMailbox, mailbox.IsTeamlabMailbox)
                        .InColumnValue(MailboxTable.Columns.Imap, mailbox.Imap)
                        .InColumnValue(MailboxTable.Columns.UserOnline, mailbox.UserOnline)
                        .InColumnValue(MailboxTable.Columns.IsDefault, mailbox.IsDefault)
                        .InColumnValue(MailboxTable.Columns.MsgCountLast, mailbox.MsgCountLast)
                        .InColumnValue(MailboxTable.Columns.SizeLast, mailbox.SizeLast)
                        .InColumnValue(MailboxTable.Columns.LoginDelay, mailbox.LoginDelay)
                        .InColumnValue(MailboxTable.Columns.QuotaError, mailbox.QuotaError)
                        .InColumnValue(MailboxTable.Columns.ImapIntervals, mailbox.ImapIntervals)
                        .InColumnValue(MailboxTable.Columns.BeginDate, mailbox.BeginDate)
                        .InColumnValue(MailboxTable.Columns.EmailInFolder, mailbox.EmailInFolder)
                        .InColumnValue(MailboxTable.Columns.Password, MailUtil.EncryptPassword(mailbox.Password))
                        .InColumnValue(MailboxTable.Columns.SmtpPassword,
                                       !string.IsNullOrEmpty(mailbox.SmtpPassword)
                        ? MailUtil.EncryptPassword(mailbox.SmtpPassword)
                        : "")
                        .InColumnValue(MailboxTable.Columns.OAuthToken,
                                       !string.IsNullOrEmpty(mailbox.OAuthToken)
                        ? MailUtil.EncryptPassword(mailbox.OAuthToken)
                        : "")
                        .InColumnValue(MailboxTable.Columns.OAuthType, mailbox.OAuthType)
                        .InColumnValue(MailboxTable.Columns.SmtpServerId, mailbox.SmtpServerId)
                        .InColumnValue(MailboxTable.Columns.ServerId, mailbox.ServerId)
                        .InColumnValue(MailboxTable.Columns.DateChecked, mailbox.DateChecked)
                        .InColumnValue(MailboxTable.Columns.DateUserChecked, mailbox.DateUserChecked)
                        .InColumnValue(MailboxTable.Columns.DateLoginDelayExpires, mailbox.DateLoginDelayExpires)
                        .InColumnValue(MailboxTable.Columns.DateAuthError, mailbox.DateAuthError)
                        .InColumnValue(MailboxTable.Columns.DateCreated, mailbox.DateCreated)
                        .Identity(0, 0, true);

            var result = Db.ExecuteScalar <int>(query);

            return(result);
        }