Ejemplo n.º 1
0
        public IEnumerable <MailMessageItem> GetFilteredMessages(int?folder,
                                                                 bool?unread,
                                                                 bool?attachments,
                                                                 long?period_from,
                                                                 long?period_to,
                                                                 bool?important,
                                                                 string find_address,
                                                                 int?mailbox_id,
                                                                 IEnumerable <int> tags,
                                                                 string search,
                                                                 int?page,
                                                                 int?page_size,
                                                                 ApiDateTime last_check_date,
                                                                 string sort,
                                                                 string sortorder
                                                                 )
        {
            var filter = new MailFilter
            {
                PrimaryFolder = folder.GetValueOrDefault(MailFolder.Ids.inbox),
                Unread        = unread,
                Attachments   = attachments.GetValueOrDefault(false),
                Period_from   = period_from.GetValueOrDefault(0),
                Period_to     = period_to.GetValueOrDefault(0),
                Important     = important.GetValueOrDefault(false),
                FindAddress   = find_address,
                MailboxId     = mailbox_id,
                CustomLabels  = new ASC.Mail.Aggregator.Collection.ItemList <int>(tags),
                SearchFilter  = search,
                PageSize      = page_size.GetValueOrDefault(25),
                SortOrder     = sortorder
            };

            mailBoxManager.UpdateUserActivity(TenantId, Username);

            if (null != last_check_date)
            {
                var date_time = mailBoxManager.GetFolderModifyDate(TenantId, Username, filter.PrimaryFolder);
                var api_date  = new ApiDateTime(date_time);

                var compare_rez = api_date.CompareTo(last_check_date);

                if (compare_rez == 0) // equals
                {
                    return(null);
                }
                if (compare_rez == -1) // less
                {
                    return(new List <MailMessageItem>());
                }
            }

            long total_messages;
            var  messages = GetFilteredMessages(filter, filter.Page, filter.PageSize, out total_messages);

            CorrectPageValue(filter, total_messages);
            _context.SetTotalCount(total_messages);
            return(messages);
        }
        public IEnumerable <MailBoxManager.MailFolderInfo> GetFolders(ApiDateTime last_check_time)
        {
            if (null != last_check_time)
            {
                var api_date    = new ApiDateTime(MailBoxManager.GetMessagesModifyDate(TenantId, Username));
                var compare_rez = api_date.CompareTo(last_check_time);

                if (compare_rez < 1 && System.DateTime.MinValue != api_date) // if api_date == DateTime.MinValue then there are no folders in mail_folder
                {
                    return(null);
                }
            }
            return(FoldersList);
        }
Ejemplo n.º 3
0
        public IEnumerable<MailBoxManager.MailFolderInfo> GetFolders(ApiDateTime last_check_time)
        {
            if (null != last_check_time)
            {
                var api_date = new ApiDateTime(mailBoxManager.GetMessagesModifyDate(TenantId, Username));
                var compare_rez = api_date.CompareTo(last_check_time);

                if (compare_rez < 1 && System.DateTime.MinValue != api_date) // if api_date == DateTime.MinValue then there are no folders in mail_folder
                {
                    return null;
                }
            }
            return FoldersList;
        }
        public IEnumerable<MailMessageItem> GetFilteredConversations(int? folder,
            bool? unread,
            bool? attachments,
            long? period_from,
            long? period_to,
            bool? important,
            string find_address,
            int? mailbox_id,
            IEnumerable<int> tags,
            string search,
            int? page_size,
            ApiDateTime last_check_date,
            string sortorder,
            ApiDateTime from_date,
            int? from_message,
            bool? prev_flag
            )
        {
            var filter = new MailFilter
            {
                PrimaryFolder = folder.GetValueOrDefault(MailFolder.Ids.inbox),
                Unread = unread,
                Attachments = attachments.GetValueOrDefault(false),
                Period_from = period_from.GetValueOrDefault(0),
                Period_to = period_to.GetValueOrDefault(0),
                Important = important.GetValueOrDefault(false),
                FindAddress = find_address,
                MailboxId = mailbox_id,
                CustomLabels = new ItemList<int>(tags),
                SearchFilter = search,
                PageSize = page_size.GetValueOrDefault(25),
                SortOrder = sortorder
            };

            MailBoxManager.UpdateUserActivity(TenantId, Username);

            if (null != last_check_date)
            {
                var date_time = MailBoxManager.GetFolderModifyDate(TenantId, Username, filter.PrimaryFolder);
                var api_date = new ApiDateTime(date_time);

                var compare_res = api_date.CompareTo(last_check_date);

                switch (compare_res)
                {
                    case 0:
                        return null;
                    case -1:
                        return new List<MailMessageItem>();
                }
            }

            bool has_more;
            var conversations = MailBoxManager.GetConversations(
                TenantId,
                Username,
                filter,
                from_date,
                from_message.GetValueOrDefault(0),
                prev_flag,
                out has_more);
            if (has_more)
                _context.SetTotalCount(filter.PageSize + 1);
            else
                _context.SetTotalCount(conversations.Count);
            return conversations;
        }
Ejemplo n.º 5
0
        public IEnumerable <MailMessageItem> GetFilteredConversations(int?folder,
                                                                      bool?unread,
                                                                      bool?attachments,
                                                                      long?period_from,
                                                                      long?period_to,
                                                                      bool?important,
                                                                      string find_address,
                                                                      int?mailbox_id,
                                                                      IEnumerable <int> tags,
                                                                      string search,
                                                                      int?page_size,
                                                                      ApiDateTime last_check_date,
                                                                      string sortorder,
                                                                      ApiDateTime from_date,
                                                                      int?from_message,
                                                                      bool?prev_flag
                                                                      )
        {
            var filter = new MailFilter
            {
                PrimaryFolder = folder.GetValueOrDefault(MailFolder.Ids.inbox),
                Unread        = unread,
                Attachments   = attachments.GetValueOrDefault(false),
                Period_from   = period_from.GetValueOrDefault(0),
                Period_to     = period_to.GetValueOrDefault(0),
                Important     = important.GetValueOrDefault(false),
                FindAddress   = find_address,
                MailboxId     = mailbox_id,
                CustomLabels  = new ASC.Mail.Aggregator.Collection.ItemList <int>(tags),
                SearchFilter  = search,
                PageSize      = page_size.GetValueOrDefault(25),
                SortOrder     = sortorder
            };

            mailBoxManager.UpdateUserActivity(TenantId, Username);

            if (null != last_check_date)
            {
                var date_time = mailBoxManager.GetFolderModifyDate(TenantId, Username, filter.PrimaryFolder);
                var api_date  = new ApiDateTime(date_time);

                var compare_res = api_date.CompareTo(last_check_date);

                switch (compare_res)
                {
                case 0:
                    return(null);

                case -1:
                    return(new List <MailMessageItem>());
                }
            }

            bool has_more;
            var  conversations = mailBoxManager.GetConversations(
                TenantId,
                Username,
                filter,
                from_date,
                from_message.GetValueOrDefault(0),
                prev_flag,
                out has_more);

            if (has_more)
            {
                _context.SetTotalCount(filter.PageSize + 1);
            }
            else
            {
                _context.SetTotalCount(conversations.Count);
            }
            return(conversations);
        }
Ejemplo n.º 6
0
        public IEnumerable<MailMessageItem> GetFilteredMessages(int? folder,
            bool? unread,
            bool? attachments,
            long? period_from,
            long? period_to,
            bool? important,
            string find_address,
            int? mailbox_id,
            IEnumerable<int> tags,
            string search,
            int? page,
            int? page_size,
            ApiDateTime last_check_date,
            string sort,
            string sortorder
            )
        {
            var filter = new MailFilter
            {
                PrimaryFolder = folder.GetValueOrDefault(MailFolder.Ids.inbox),
                Unread = unread,
                Attachments = attachments.GetValueOrDefault(false),
                PeriodFrom = period_from.GetValueOrDefault(0),
                PeriodTo = period_to.GetValueOrDefault(0),
                Important = important.GetValueOrDefault(false),
                FindAddress = find_address,
                MailboxId = mailbox_id,
                CustomLabels = new ItemList<int>(tags),
                SearchFilter = search,
                PageSize = page_size.GetValueOrDefault(25),
                SortOrder = sortorder
            };

            if (null != last_check_date)
            {
                var dateTime = MailBoxManager.GetFolderModifyDate(TenantId, Username, filter.PrimaryFolder);
                var apiDate = new ApiDateTime(dateTime);

                var compareRez = apiDate.CompareTo(last_check_date);

                if (compareRez == 0) // equals
                    return null;
                if (compareRez == -1) // less
                    return new List<MailMessageItem>();
            }

            long totalMessages;
            var messages = GetFilteredMessages(filter, filter.Page, filter.PageSize, out totalMessages);
            CorrectPageValue(filter, totalMessages);
            _context.SetTotalCount(totalMessages);
            return messages;
        }