Exemplo n.º 1
0
        public IEnumerable <int> MarkMessages(List <int> ids, string status)
        {
            if (!ids.Any())
            {
                throw new ArgumentException(@"Empty ids collection", "ids");
            }

            MailUserAction mailUserAction = MailUserAction.Nothing;

            switch (status)
            {
            case "read":
                MailEngineFactory.MessageEngine.SetUnread(ids, false);
                mailUserAction = MailUserAction.SetAsRead;
                break;

            case "unread":
                MailEngineFactory.MessageEngine.SetUnread(ids, true);
                mailUserAction = MailUserAction.SetAsUnread;
                break;

            case "important":
                MailEngineFactory.MessageEngine.SetImportant(ids, true);
                mailUserAction = MailUserAction.SetAsImportant;
                break;

            case "normal":
                MailEngineFactory.MessageEngine.SetImportant(ids, false);
                mailUserAction = MailUserAction.SetAsNotImpotant;
                break;

            case "receiptProcessed":
                MailEngineFactory.MessageEngine.ReceiptStatus(ids, false);
                mailUserAction = MailUserAction.ReceiptStatusChanged;
                break;
            }

            SendUserActivity(ids, mailUserAction);

            return(ids);
        }
Exemplo n.º 2
0
        private void SendUserActivity(List <int> ids, MailUserAction action = MailUserAction.StartImapClient, int destinationFolder = -1)
        {
            if (!IsSendUserActivity)
            {
                return;
            }

            if (!(AscCache.Default is RedisCache cache))
            {
                return;
            }

            var exp = new UserMailboxesExp(TenantId, Username, onlyTeamlab: true);

            var mailboxes = MailEngineFactory.MailboxEngine.GetMailboxDataList(exp);

            var mailboxesOnlyoffice = mailboxes.ToList();

            if (!mailboxesOnlyoffice.Any())
            {
                return;
            }

            string key = RedisClientPrefix + Username;

            CashedMailUserAction cashedMailUserAction = new CashedMailUserAction()
            {
                Tenant      = TenantId,
                UserName    = Username,
                Uds         = ids,
                Action      = action,
                Destination = destinationFolder
            };

            cache.PushMailAction(key, cashedMailUserAction);

            SendUserAlive(-1, null);
        }
Exemplo n.º 3
0
        public IEnumerable <int> MarkConversations(List <int> ids, string status)
        {
            if (!ids.Any())
            {
                throw new ArgumentException(@"Empty ids collection", "ids");
            }

            MailUserAction mailUserAction = MailUserAction.Nothing;

            switch (status)
            {
            case "read":
                MailEngineFactory.MessageEngine.SetUnread(ids, false, true);
                mailUserAction = MailUserAction.SetAsRead;
                break;

            case "unread":
                MailEngineFactory.MessageEngine.SetUnread(ids, true, true);
                mailUserAction = MailUserAction.SetAsUnread;
                break;

            case "important":
                MailEngineFactory.ChainEngine.SetConversationsImportanceFlags(TenantId, Username, true, ids);
                mailUserAction = MailUserAction.SetAsImportant;
                break;

            case "normal":
                MailEngineFactory.ChainEngine.SetConversationsImportanceFlags(TenantId, Username, false, ids);
                mailUserAction = MailUserAction.SetAsNotImpotant;
                break;
            }

            SendUserActivity(ids, mailUserAction);

            return(ids);
        }