private void ValidateRequest(ParksServiceRequest request) { if (request.Total < 0) { throw new ArgumentOutOfRangeException("A minimum of 1 park to find is required"); } if (request.ZipCode.Length != 5) { throw new ArgumentException("Invalid Zip Code"); } }
public async Task <IEnumerable <ParkDistance> > GetNearestParksAsync(ParksServiceRequest request) { ValidateRequest(request); var visitorCoordinates = await _googleApiClient.GetZipCoordinates(request.ZipCode); var parkDiststances = await GetParkDistancesAsync(request.Total, visitorCoordinates); request.Total = request.Total != 0 ? request.Total : parkDiststances.Count(); parkDiststances = parkDiststances.AsQueryable().OrderBy(a => a.Distance).Take(request.Total); return(parkDiststances); }
public async Task <ActionResult> ParksLocator(ParksServiceRequest parksServiceRequest) { try { var parks = await _parksLocatorService.GetNearestParksAsync(parksServiceRequest); return(Ok(parks)); } catch (Exception ex) { var message = ex.Message; return(BadRequest(message)); } }