public ISearchResponse<Flight> Search(LateSeatsQuery query) { var hit = MockRepository.GenerateStub<IHit<Flight>>(); hit.Stub(x => x.Source).Return(new Flight { DepartureAirport = new Airport { Code = query.DepartureAirport }, DestinationAirport = new Airport { Code = query.DestinationAirport } }); var response = MockRepository.GenerateMock<ISearchResponse<Flight>>(); response.Stub(x => x.Hits).Return(new List<IHit<Flight>> { hit }); return response; }
private static SearchDescriptor<Flight> GetElasticQuery(LateSeatsQuery query, SearchDescriptor<Flight> searchDescriptor) { if (query.HasValidDestination()) { return searchDescriptor.Query(x => x.Term("departure_airport.code.raw", query.DepartureAirport) && x.Term("destination_airport.code.raw", query.DestinationAirport) && x.Range(r => r.OnField("arrival_date").Greater(DateTime.Now).Lower(DateTime.Now.AddDays(query.Days))) && x.Term("nights", query.MaxNights) && x.Range(r => r.OnField("seats_remaining").GreaterOrEquals(query.SeatsRemaining))) .Size(5000) .Sort(x => x.OnField(query.SortBy).Ascending()); } return searchDescriptor.Query( x => x.Term("departure_airport.code.raw", query.DepartureAirport) && x.Range(r => r.OnField("arrival_date").GreaterOrEquals(DateTime.Now).LowerOrEquals(DateTime.Now.AddDays(query.Days))) && x.Term("nights", query.MaxNights) && x.Range(r => r.OnField("seats_remaining").GreaterOrEquals(query.SeatsRemaining))) .Size(5000) .Sort(x => x.OnField(query.SortBy).Ascending()); }
public ISearchResponse<Flight> Search(LateSeatsQuery query) { var client = _config.GetElasticClient(); return client.Search<Flight>(body => GetElasticQuery(query, body)); }