public override IList <Trip> Search(TripCriteria criteria) { if (_mockData == null) { LoadSampleData(); } if (criteria == null) { return(_mockData ?? new List <Trip>()); } return((_mockData ?? new List <Trip>()) .Where(x => (string.IsNullOrWhiteSpace(criteria.NearDepartureLocationId) || x.DepartureLocationId.IndexOf(criteria.NearDepartureLocationId, StringComparison.InvariantCultureIgnoreCase) >= 0) && (string.IsNullOrWhiteSpace(criteria.NearArrivalLocationId) || x.ArrivalLocationId.IndexOf(criteria.NearArrivalLocationId, StringComparison.InvariantCultureIgnoreCase) >= 0) && (string.IsNullOrWhiteSpace(criteria.DriverId) || x.DriverId == criteria.DriverId) && (criteria.DepartureDate < DateTime.Now || criteria.DepartureDate.Date == x.DepartDate.Date) && (criteria.ReturnDate < DateTime.Now || criteria.ReturnDate.Date == x.ReturnDate.Date) ) .OrderBy(x => x.DepartDate) //earliest first .ToList()); //TODO: later fuzzy date matches to end of search results (ie. off by day), plus the "near" location criteria }
public HttpResponseMessage GetSearch(TripCriteria model) { var items = ProviderResolver <TripProvider> .Get.Provider.Search(model); return(Request.CreateResponse(HttpStatusCode.OK, items)); }