public static IQueryable <Trip> FindTrips(this IQueryable <Trip> trips, TripQueryModel request) { var origin = request.Start.ToIntermediatePoint(); var destination = request.End.ToIntermediatePoint(); var radius = request.Radius; trips = trips.Include(x => x.IntermediatePoints) .Where(x => x.IntermediatePoints.Any( ip => ip.Coordinates.Distance(origin.Coordinates) < radius)) .Where(x => x.IntermediatePoints.Any( ip => ip.Coordinates.Distance(destination.Coordinates) < radius)); return(trips); }
public IHttpActionResult GetTrips(TripQueryModel request) { var trips = tripQuery.Trips.FindTrips(request).ToList(); return(Ok(trips)); }