public AirItinerary GetRandomItinerary(string fromAirport, string toAirport, DateTime dateTime) { var itinerary = new AirItinerary { AirFare = new AirFare { }, Flights = new List<Flight>(), }; int flightNum = Rand.Next(1, 4); for (int number = 0; number < flightNum; number++) { int layoverMinutes = Rand.Next(60, 240); itinerary.Flights.Add( GetRandomFlight( number == 0 ? fromAirport : itinerary.Flights[itinerary.Flights.Count - 1].ToAirportCode, flightNum > number + 1 ? _airportCityDictionary.ElementAt(Rand.Next(_airportCityDictionary.Count)).Key : toAirport, number == 0 ? dateTime : itinerary.Flights[itinerary.Flights.Count - 1].ArrivalDateTime.AddMinutes(layoverMinutes), 0)); } itinerary.Provider = itinerary.Flights[0].AirlineName; decimal baseFare = decimal.Round(new decimal(Rand.Next(1000, 3000)), 2); var passengerFare = new PassengerFare { BaseFare = baseFare, Markups = new List<FareComponent> { new FareComponent { Amount = baseFare*15/100, Name = "Markup", Type = "Markup" } }, Fees = new List<FareComponent> { new FareComponent {Amount = 250, Name = "Service Fee", Type = "Fee"} }, Taxes = new List<FareComponent> { new FareComponent { Amount = decimal.Round(baseFare*125/1000), Name = "Tax", Type = "Tax" } } }; itinerary.AirFare.PassengerFares = new List<PassengerFare> { passengerFare }; return itinerary; }
private static bool SavePassengerFare(int flightId, PassengerFare passengerFare) { var db = new MySqlDatabase(DbConfiguration.ReservationDB); var cmd = CommandBuilder.BuildInsertPassengerFareCommand(flightId, passengerFare.PassengerType, passengerFare.Quantity, passengerFare.ClassOfService, passengerFare.FareBasisCode, passengerFare.Currency, passengerFare.BaseFare, passengerFare.TotalTax, passengerFare.TotalFees, passengerFare.TotalMarkup, passengerFare.TotalFare, db.Connection); db.ExecuteNonQuery(cmd); var components = new List<FareComponent>(); components.AddRange(passengerFare.Fees); components.AddRange(passengerFare.Markups); components.AddRange(passengerFare.Taxes); return components.TrueForAll(x => SaveFareComponent(flightId, passengerFare.PassengerType, x)); }
private static AirFare ParsePassengerFareBreadowns(JetModel.PTCFareBreakdownType[] fareBreakdown, int adultCount, int childCount, int infantCount, bool useQuantityFromResponse) { if (fareBreakdown == null || fareBreakdown.Length == 0) return null; AirFare airFare = new AirFare(); airFare.PassengerFares = new List<PassengerFare>(); foreach (JetModel.PTCFareBreakdownType paxFbt in fareBreakdown) { if (paxFbt.PassengerFare == null) return null; PassengerFare paxFare = new PassengerFare(); paxFare.PassengerType = ParsePassengerCode(paxFbt.PassengerTypeQuantity.Code); if(useQuantityFromResponse) { paxFare.Quantity = Int32.Parse(paxFbt.PassengerTypeQuantity.Quantity); } else { if (paxFare.PassengerType == PassengerType.Adult) paxFare.Quantity = adultCount; else if (paxFare.PassengerType == PassengerType.Child) paxFare.Quantity = childCount; else if (paxFare.PassengerType == PassengerType.Infant) paxFare.Quantity = infantCount; } paxFare.BaseFare = paxFbt.PassengerFare.BaseFare.Amount; paxFare.Currency = paxFbt.PassengerFare.BaseFare.CurrencyCode; paxFare.Taxes = new List<FareComponent>(); if (paxFbt.PassengerFare.Taxes != null) { foreach (JetModel.AirTaxType tax in paxFbt.PassengerFare.Taxes) { FareComponent taxComponant = new FareComponent() { Amount = tax.Amount, Type = tax.TaxCode }; paxFare.Taxes.Add(taxComponant); } } if (paxFbt.FareBasisCodes != null) { foreach (string code in paxFbt.FareBasisCodes) { paxFare.FareBasisCode = (!string.IsNullOrEmpty(paxFare.FareBasisCode) ? paxFare.FareBasisCode + "," : string.Empty) + code; } } if (paxFbt.FareInfo != null) { foreach (JetModel.FareReference info in paxFbt.FareInfo[0].FareReference) { paxFare.ClassOfService = (!string.IsNullOrEmpty(paxFare.ClassOfService) ? paxFare.ClassOfService + "," : string.Empty) + info.ResBookDesigCode; paxFare.CabinClass = (!string.IsNullOrEmpty(paxFare.CabinClass) ? paxFare.CabinClass + "," : string.Empty) + info.Value; } } airFare.PassengerFares.Add(paxFare); } return airFare; }