public IEnumerable <Flight> GetFlights(FlightSearchParams flightSearchParam, FlightSerachFilter flightSerachFilter) { IEnumerable <Flight> flightsResponse = null; try { FlightApiSearchParams flightApiSearchParam = new FlightApiSearchParams(); flightApiSearchParam.DestinationPlace = flightSearchParam.DestinationPlace; flightApiSearchParam.InboundDate = flightSearchParam.InboundDate; flightApiSearchParam.OutboundDate = flightSearchParam.OutboundDate; FlightsRetriever flightsRetriever = new FlightsRetriever(); List <Flight> flights = flightsRetriever.GetFlightsBySearchParams(flightSearchParam.DestinationPlace, flightSearchParam.InboundDate, flightSearchParam.OutboundDate).ToList(); // check if flights exist in db if (flights.Any() == false) { log.Info(string.Format("Flights with params : {0},{1},{2} not exist in db ", flightSearchParam.DestinationPlace, flightSearchParam.OutboundDate.ToString("dd/MM/yyyy"), flightSearchParam.InboundDate.ToString("dd/MM/yyyy"))); string sessionId = this.CreateSession(flightApiSearchParam); FlightApiResponse flightApiResponse = this.PullSessionResult(sessionId); flights = this.ConvertFlightApiResponseToFlight(flightApiResponse, flightSearchParam.DestinationPlace, flightSearchParam.InboundDate, flightSearchParam.OutboundDate).ToList(); // store flight in db flightsRetriever.InsertFlights(flights); } else { log.Info(string.Format("Flights with params : {0},{1},{2} found in db ", flightSearchParam.DestinationPlace, flightSearchParam.OutboundDate.ToString("dd/MM/yyyy"), flightSearchParam.InboundDate.ToString("dd/MM/yyyy"))); } FlightFilterProcessor flightFilterProcessor = new FlightFilterProcessor(); flightsResponse = flightFilterProcessor.FilterFlights(flights, flightSerachFilter); } catch (Exception e) { log.Info(string.Format("GetFlights error with params : {0},{1},{2} ", flightSearchParam.DestinationPlace, flightSearchParam.InboundDate.ToString("dd/MM/yyyy"), flightSearchParam.OutboundDate.ToString("dd/MM/yyyy"))); log.Error(string.Format("Error is : {0} stack trace is : {1} ", e.Message, e.StackTrace)); } return(flightsResponse); }
public IEnumerable <Flight> FilterFlights(IEnumerable <Flight> flight, FlightSerachFilter FlightSerachFilter) { return(flight.OrderBy(f => f.Price).Take(3)); }