Example #1
0
        public async Task <CollectionDataResult <List <QuestionVM> > > GetQuestions([FromQuery] QuestionListQueryFilter filter)
        {
            filter.PageSize = appConfiguration.PageSize;             // forced value from configuration ;-)

            IQueryable <Question> query = askDbContext.Questions;

            if (filter.Answered.HasValue)
            {
                query = filter.Answered.Value ? query.Where(q => q.DateAnswered.HasValue) : query.Where(q => !q.DateAnswered.HasValue);
            }

            var count = await query.CountAsync();

            var data = await query
                       .OrderByDescending(q => q.DateAnswered).ThenByDescending(q => q.DateCreated)
                       .Skip(filter.PageIndex * filter.PageSize)
                       .Take(filter.PageSize)
                       .Select(q => new QuestionVM()
            {
                QuestionId   = q.Id,
                DisplayName  = q.DisplayName,
                EmailAddress = q.EmailAddress,
                QuestionText = q.QuestionText,
                CategoryId   = q.CategoryId.ToString(),
                CategoryName = q.Category.Name,
                DateCreated  = q.DateCreated,
                DateAnswered = q.DateAnswered,
                AnswerText   = q.AnswerText,
            })
                       .ToListAsync();


            return(new CollectionDataResult <List <QuestionVM> >(data, filter, count));
        }
 public Task <CollectionDataResult <List <QuestionVM> > > GetQuestionsAsync(QuestionListQueryFilter filter)
 {
     return(httpClient.GetJsonAsync <CollectionDataResult <List <QuestionVM> > >($"api/questions?pageIndex={filter.PageIndex}&answered={filter.Answered}"));
 }