Example #1
0
        public async Task <PagedList <ContactMessageDTO> > GetMessagesAsync(GetContactMessageQuery query)
        {
            // 搜索
            var filter = Builders <ContactMessageDTO> .Filter.Empty;

            if (query.Name.IsPresent())
            {
                var nameFilter = Builders <ContactMessageDTO> .Filter.Regex(x => x.Name, query.Name);

                filter = Builders <ContactMessageDTO> .Filter.And(filter, nameFilter);
            }
            if (query.Email.IsPresent())
            {
                var emailFilter = Builders <ContactMessageDTO> .Filter.Regex(x => x.Email, query.Email);

                filter = Builders <ContactMessageDTO> .Filter.And(filter, emailFilter);
            }

            //// 排序
            //if (query.OrderBy == 0)
            //{
            //    if (query.SortDirection == "asc")
            //    {
            //        fluent.SortBy(x => x.Name);
            //    }
            //    else if (query.SortDirection == "desc")
            //    {
            //        fluent.SortByDescending(x => x.Name);
            //    }
            //}
            //else if (query.OrderBy == 2)
            //{
            //    if (query.SortDirection == "asc")
            //    {
            //        fluent.SortBy(x => x.CreatedOnUtc);
            //    }
            //    else if (query.SortDirection == "desc")
            //    {
            //        fluent.SortByDescending(x => x.CreatedOnUtc);
            //    }
            //}

            // 输出数据
            var fluent = DB.ContactMessages.Find(filter);
            var total  = await fluent.CountDocumentsAsync().ConfigureAwait(false);

            fluent = fluent.SortByDescending(x => x.CreatedOnUtc);
            if (query.PageSize > 0 && query.PageIndex > 0)
            {
                fluent = fluent
                         .Skip((query.PageIndex - 1) * query.PageSize)
                         .Limit(query.PageSize);
            }

            var list = await fluent.TryToListAsync().ConfigureAwait(false);

            return(new PagedList <ContactMessageDTO>(total, query.PageSize, list));
        }
Example #2
0
        public Task <PagedList <ContactMessageDTO> > GetMessagesAsync(string name, string email, int pageSize, int pageIndex)
        {
            var query = new GetContactMessageQuery
            {
                Name      = name,
                Email     = email,
                PageSize  = pageSize,
                PageIndex = pageIndex
            };

            return(ContactMessageDAL.GetMessagesAsync(query));
        }