public IEnumerable <Answer> Handle(AnswersQuery request) { using (var context = GetContext()) { return(GetTable(context) .Where(n => request.From < n.When && n.When < request.To) .AsEnumerable() .Select(ToEntity) .ToList()); } }
public async Task <ApiListResponse <AnswerQueryDTO> > Handle(AnswersQuery message, CancellationToken cancellationToken) { var query = _context.Answers.Where(a => a.OptionAnswered.Flagged == message.Urgent); // Filter by the organizer flag if specified if (!message.Organizer) { query = query.Where(a => a.Observer.IdNgo == message.IdONG); } // Filter by county if specified if (!string.IsNullOrEmpty(message.County)) { query = query.Where(a => a.CountyCode == message.County); } // Filter by polling station if specified if (message.PollingStationNumber > 0) { query = query.Where(a => a.PollingStationNumber == message.PollingStationNumber); } // Filter by polling station if specified if (message.ObserverId > 0) { query = query.Where(a => a.IdObserver == message.ObserverId); } var answerQueryInfosQuery = query.GroupBy(a => new { a.IdPollingStation, a.CountyCode, a.PollingStationNumber, a.IdObserver, ObserverName = a.Observer.Name }) .Select(x => new VoteMonitorContext.AnswerQueryInfo { IdObserver = x.Key.IdObserver, IdPollingStation = x.Key.IdPollingStation, PollingStation = x.Key.CountyCode + " " + x.Key.PollingStationNumber.ToString(), ObserverName = x.Key.ObserverName, LastModified = x.Max(a => a.LastModified) }); var count = await answerQueryInfosQuery.CountAsync(cancellationToken : cancellationToken); var sectiiCuObservatoriPaginat = await answerQueryInfosQuery .OrderByDescending(aqi => aqi.LastModified) .Skip((message.Page - 1) * message.PageSize) .Take(message.PageSize) .ToListAsync(cancellationToken: cancellationToken); return(new ApiListResponse <AnswerQueryDTO> { Data = sectiiCuObservatoriPaginat.Select(x => _mapper.Map <AnswerQueryDTO>(x)).ToList(), Page = message.Page, PageSize = message.PageSize, TotalItems = count }); }