/// <summary> /// 取得本站與到達站間的票價 /// </summary> /// <param name="arrival">到達站</param> /// <param name="trainType">列車類型</param> /// <param name="fareType">票價類型</param> /// <returns>票價</returns> public static int GetFaresPrice(this Station THIS, Station arrival, TrainLevels trainType, FareTypes fareType) { return THIS.GetFaresPriceAsync(arrival, trainType, fareType).GetAwaiter().GetResult(); }
public List <FareTypes> BuildFares(Flight flightItem, bool IsRerpice) { List <FareTypes> fareTypes = new List <FareTypes>(); if (flightItem != null) { var fTypes = (flightItem.FlightFares.OrderByDescending(x => x.Cabin).ThenBy(x => x.WebFareAmount).GroupBy(x => new { x.FareTypeId, x.SolutionID }).ToList()); if (fTypes != null) { foreach (var fType in fTypes) { FareTypes fareType = new FareTypes(); fareType.FareTypeID = fType.FirstOrDefault().FareTypeName; fareType.FareTypeName = fType.FirstOrDefault().FareTypeName; fareType.ContainsCircularFlight = IsCircularFlight(flightItem).Value; fareType.ContainsConnectionFlight = IsConnectionFlight(flightItem).Value; fareType.FareInformation = BuildFlightFareInformation(fType, IsRerpice); fareType.Fare = BuildFlightFare(fareType.FareInformation); //fareType.Fare.SolutionId = Convert.ToString(fType.Key.SolutionID); //fareType.Fare.Combinables = BuildCombinableList(fType.Key.SolutionID); fareType.FareCarrier = fType.FirstOrDefault().FareCarrier; //fareType.TicketDesignator = fType.FirstOrDefault().TicketDesignator; //fareType.HashCode = fType.FirstOrDefault().HashCode; fareType.LfId = Convert.ToString(flightItem.LFID); //fareType.PfIds = GetPhysicalFlightIds(flightItem, fType.FirstOrDefault().Bookingcodes, fType.FirstOrDefault().Cabin); fareType.Route = String.Format("{0}_{1}", flightItem.Origin, flightItem.Destination); fareType.Cabin = (fType.FirstOrDefault().FareTypeName.IndexOf('J') != -1 ? Cabin.business : fType.FirstOrDefault().FareTypeName.IndexOf('Y') != -1 ? Cabin.economy : fType.FirstOrDefault().FareTypeName.IndexOf('F') != -1 ? Cabin.first : Cabin.first); //if (fType.FirstOrDefault(x => x.PassengerTypeId == Enums.PassengerTypes.Adult) != null) //{ // fareType.IncludedServices = BuildIncludedServices(fType.FirstOrDefault(a => a.PassengerTypeId == Enums.PassengerTypes.Adult) ?? fType.FirstOrDefault()); //} //else if (IsRerpice && fType.FirstOrDefault(x => x.PassengerTypeId == Enums.PassengerTypes.Child) != null) //{ // fareType.IncludedServices = BuildIncludedServices(fType.FirstOrDefault(a => a.PassengerTypeId == Enums.PassengerTypes.Child) ?? fType.FirstOrDefault()); //} fareType.IsSoldOut = fType.FirstOrDefault().IsSoldOut(); fareType.Fare.IsPromoFare = fType.FirstOrDefault().IsPromoFare; //fareType.Fare.IsPromoCodeApplied = fType.FirstOrDefault().IsPromoCodeApplied; //fareType.Fare.IsStopOverFare = (fType.FirstOrDefault(a => a.PassengerTypeId == Enums.PassengerTypes.Adult) ?? fType.FirstOrDefault()).IsStopOverFare; fareType.SeatsLeft = fType.FirstOrDefault().SeatsAvailable; //if (fareType.Cabin == Cabin.business && fType.FirstOrDefault().SeatsAvailable <= _settingsTasks.SeatThresholdBusiness) //{ // fareType.SeatsLeft = fType.FirstOrDefault().SeatsAvailable; //} //else if (fareType.Cabin == Cabin.economy && fType.FirstOrDefault().SeatsAvailable <= _settingsTasks.SeatThresholdEconomy) //{ // fareType.SeatsLeft = fType.FirstOrDefault().SeatsAvailable; //} fareType.SecureHash = new HashService().GenerateHash(new { LfId = fareType.LfId, FareTypeID = fareType.FareTypeID, FareTypeName = fareType.FareTypeName, Cabin = fareType.Cabin, Fare = fareType.Fare, FareInformation = fareType.FareInformation, scToken = this.IsInclude && this._securityData != null && !string.IsNullOrEmpty(this._securityData.SabreToken) ? this._securityData.SabreToken : string.Empty }); fareType.OrderId = getFareOrderId(fType.FirstOrDefault().FareBrandId); fareTypes.Add(fareType); } } } return(fareTypes.OrderBy(a => a.OrderId).ToList()); }
/// <summary> /// 取得本站與到達站間的票價 /// </summary> /// <param name="arrival">到達站</param> /// <param name="trainType">列車類型</param> /// <param name="fareType">票價類型</param> /// <returns>票價</returns> public static int GetFaresPrice(this Station THIS, Station arrival, TrainLevels trainType, FareTypes fareType) { return(THIS.GetFaresPriceAsync(arrival, trainType, fareType).GetAwaiter().GetResult()); }
/// <summary> /// 非同步取得本站與到達站間的票價 /// </summary> /// <param name="arrival">到達站</param> /// <param name="trainType">列車類型</param> /// <param name="fareType">票價類型</param> /// <returns>票價</returns> public static async Task<int> GetFaresPriceAsync(this Station THIS, Station arrival, TrainLevels trainType, FareTypes fareType) { return await Fare.GetFaresPriceAsync(THIS, arrival, trainType, fareType); }
/// <summary> /// 非同步取得本站與到達站間的票價 /// </summary> /// <param name="arrival">到達站</param> /// <param name="trainType">列車類型</param> /// <param name="fareType">票價類型</param> /// <returns>票價</returns> public static async Task <int> GetFaresPriceAsync(this Station THIS, Station arrival, TrainLevels trainType, FareTypes fareType) { return(await Fare.GetFaresPriceAsync(THIS, arrival, trainType, fareType)); }
/// <summary> /// 取得兩站點間的票價 /// </summary> /// <param name="starting">起始站</param> /// <param name="arrival">到達站</param> /// <param name="trainType">列車類型</param> /// <param name="fareType">票價類型</param> /// <returns>票價</returns> public static int GetFaresPrice(Station starting, Station arrival, TrainLevels trainType, FareTypes fareType) { return GetFaresPriceAsync(starting, arrival, trainType, fareType).GetAwaiter().GetResult(); }
/// <summary> /// 非同步取得兩站點間的票價 /// </summary> /// <param name="starting">起始站</param> /// <param name="arrival">到達站</param> /// <param name="trainType">列車類型</param> /// <param name="fareType">票價類型</param> /// <returns>票價</returns> public static async Task<int> GetFaresPriceAsync(Station starting, Station arrival, TrainLevels trainType, FareTypes fareType) { return (await GetFaresAsync(starting, arrival)) .Where(x => x.TrainType == TrainLevelsConverter.Convert(trainType) && x.FareType == fareType) .First().Price; }
/// <summary> /// 取得兩站點間的票價 /// </summary> /// <param name="starting">起始站</param> /// <param name="arrival">到達站</param> /// <param name="trainType">列車類型</param> /// <param name="fareType">票價類型</param> /// <returns>票價</returns> public static int GetFaresPrice(Station starting, Station arrival, TrainLevels trainType, FareTypes fareType) { return(GetFaresPriceAsync(starting, arrival, trainType, fareType).GetAwaiter().GetResult()); }
/// <summary> /// 非同步取得兩站點間的票價 /// </summary> /// <param name="starting">起始站</param> /// <param name="arrival">到達站</param> /// <param name="trainType">列車類型</param> /// <param name="fareType">票價類型</param> /// <returns>票價</returns> public static async Task <int> GetFaresPriceAsync(Station starting, Station arrival, TrainLevels trainType, FareTypes fareType) { return((await GetFaresAsync(starting, arrival)) .Where(x => x.TrainType == TrainLevelsConverter.Convert(trainType) && x.FareType == fareType) .First().Price); }