public async Task <IActionResult> GetFilteredPollingStations( [FromQuery] PaginationQuery pagination, [FromQuery] PollingStationsQuery query) { var result = await _mediator.Send(new SearchPollingStations(pagination, query)); if (result.IsFailure) { return(Problem(result.Error)); } return(Ok(result.Value)); }
public async Task <IActionResult> GetFilteredPollingStations( [FromQuery] PaginationQuery pagination, [FromQuery] PollingStationsQuery query) { var pollingStations = await _mediator.Send(new SearchPollingStation(pagination, query)); if (pollingStations?.Results == null || pollingStations.Results.Count == 0) { return(NotFound()); } return(Ok(pollingStations)); }
public async Task <PagedResult <PollingStationModel> > GetPollingStationsAsync(PollingStationsQuery query = null, PaginationQuery pagination = null) { var pollingStationsQuery = _context.PollingStations .Include(x => x.PollingStationAddresses) .Select(pollingStation => new PollingStationModel { Id = pollingStation.Id, Address = pollingStation.Address, Longitude = pollingStation.Longitude, Latitude = pollingStation.Latitude, County = pollingStation.County, PollingStationNumber = pollingStation.PollingStationNumber, Locality = pollingStation.Locality, Institution = pollingStation.Institution, AssignedAddresses = pollingStation.PollingStationAddresses.Select(a => MapToAssignedAddresses(a)) }); if (query != null) { pollingStationsQuery = pollingStationsQuery.Where(x => query.PollingStationId == null || x.Id == query.PollingStationId) .Where(x => string.IsNullOrEmpty(query.County) || x.County.StartsWith(query.County)) .Where(x => string.IsNullOrEmpty(query.Locality) || x.Locality.StartsWith(query.Locality)) .Where(x => string.IsNullOrEmpty(query.Address) || x.Address.StartsWith(query.Address)) .Where(x => string.IsNullOrEmpty(query.PollingStationNumber) || x.PollingStationNumber.StartsWith(query.PollingStationNumber)) .Where(x => string.IsNullOrEmpty(query.Institution) || x.Institution.StartsWith(query.Institution)); } return(await pollingStationsQuery.GetPaged(pagination?.PageNumber, pagination?.PageSize)); }
public SearchPollingStations(PaginationQuery pagination, PollingStationsQuery query) { Pagination = pagination; Query = query; }