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}")); }