예제 #1
0
        public async Task <PagedList <TestimonialMessageDTO> > GetMessagesAsync(GetTestimonialMessageQuery query)
        {
            // 搜索
            var filter = Builders <TestimonialMessageDTO> .Filter.Empty;

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

                filter = Builders <TestimonialMessageDTO> .Filter.And(filter, nameFilter);
            }
            if (query.Approved.IsNotNull())
            {
                var approvedFilter = Builders <TestimonialMessageDTO> .Filter.Eq(x => x.Approved, query.Approved.Value);

                filter = Builders <TestimonialMessageDTO> .Filter.And(filter, approvedFilter);
            }

            // 输出数据
            var fluent = DB.TestimonialMessages.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 <TestimonialMessageDTO>(total, query.PageSize, list));
        }
예제 #2
0
        public Task <PagedList <TestimonialMessageDTO> > GetMessagesAsync(string name, bool?approved, int pageSize, int pageIndex)
        {
            //bool? approved;
            //if (User.Identity.IsAuthenticated)
            //{
            //    approved = null;
            //}
            //else
            //{
            //    approved = true;
            //}

            var query = new GetTestimonialMessageQuery
            {
                Name      = name,
                Approved  = approved,
                PageSize  = pageSize,
                PageIndex = pageIndex
            };

            return(TestimonialMessageDAL.GetMessagesAsync(query));
        }