private Response ProceedRequest(JsonRequest request) { // Each slice has its own flights solutions var slices = new List<IEnumerable<IInDirectFlight>>(); var maxSolutionsCount = request.Request.Solutions; foreach (var slice in request.Request.Slice) { var passengerCount = PassengerHelper.TotalPassengersCount(request); var dt = DateTime.Parse(slice.Date); var inDirectFlights = _flightRepository. GetInDirectTheCheapestByDate(slice.Origin, slice.Destination, dt, passengerCount) .ToList(); // Avoid multiple enumeration = multiple database query slices.Add(inDirectFlights); } // Get passengers information // Single slices // Multiple slices return QpxConverter.MultipleSlicesToResponse(slices, request.Request.Passengers, maxSolutionsCount); }
public HttpResponseMessage PostRequest() { var requestContent = Request.Content; var jsonContent = requestContent.ReadAsStringAsync().Result; var request = new JsonRequest(jsonContent); var response = ProceedRequest(request); var jsonResponse = this.Request.CreateResponse(HttpStatusCode.OK); jsonResponse.Content = new StringContent(LowercaseJsonSerializer.SerializeObject(response), Encoding.UTF8, "application/json"); return jsonResponse; }
public static int TotalPassengersCount(JsonRequest request) { int passengersCount = 0; if (request.Request.Passengers.AdultCount != null) passengersCount += (int)request.Request.Passengers.AdultCount; if (request.Request.Passengers.ChildCount != null) passengersCount += (int)request.Request.Passengers.ChildCount; if (request.Request.Passengers.InfantInLapCount != null) passengersCount += (int)request.Request.Passengers.InfantInLapCount; if (request.Request.Passengers.InfantInSeatCount != null) passengersCount += (int)request.Request.Passengers.InfantInSeatCount; if (request.Request.Passengers.SeniorCount != null) passengersCount += (int)request.Request.Passengers.SeniorCount; return passengersCount; }