public static void ValidatePNR(ReservedPnr reservedPnr, Common.Enums.PassengerType passengerType) { if (reservedPnr.HasCanceled) { throw new PNRCanceledExceptioin(passengerType.GetDescription() + "订座记录已取消"); } if (PNRPair.IsNullOrEmpty(reservedPnr.PnrPair)) { throw new ArgumentException("缺少编码"); } if (reservedPnr.Passengers == null || reservedPnr.Passengers.Count == 0) { throw new CustomException(passengerType.GetDescription() + "编码缺少乘机人信息"); } if (reservedPnr.Passengers.First().Type != passengerType) { throw new CustomException(passengerType.GetDescription() + "编码错误(不是" + passengerType.GetDescription() + "编码)"); } if (reservedPnr.Voyage.Segments == null || reservedPnr.Voyage.Segments.Count == 0) { throw new CustomException(passengerType.GetDescription() + "编码缺少航班信息"); } var errorPassenger = reservedPnr.Passengers.FirstOrDefault(item => string.IsNullOrWhiteSpace(item.CertificateNumber)); if (errorPassenger != null) { throw new CustomException(passengerType.GetDescription() + "编码乘机人 [" + errorPassenger.Name + "] 缺少有效的 SSR FOID 项"); } foreach (var item in reservedPnr.Voyage.Segments) { if (item.Status == "DW") { throw new PNRAlternateStateException(passengerType.GetDescription() + "订座记录处于候补状态"); } if (!(item.Status.Contains("K") || item.Status == "RR" || (item.Status == "NN" && System.Configuration.ConfigurationManager.AppSettings["NNStatusAirline"].Contains(item.AirlineCode)))) { throw new SellOutException("用户所定航班已销售完毕"); } } if (reservedPnr.IsTeam && reservedPnr.TotalNumber != reservedPnr.ActualNumber) { throw new CustomException("团队成员数量与团队编码成员数不一致"); } if (reservedPnr.NeedFill) { throw new CustomException("缺口程编码,需要搭桥"); } }
/// <summary> /// 根据旅客订座记录编号,验证编码是否有效。 /// </summary> /// <param name="pnrPair">旅客订座记录编号</param> /// <param name="passengerType"> </param> /// <param name="oemId"> </param> public static void ValidatePNR(PNRPair pnrPair, Common.Enums.PassengerType passengerType, Guid oemId) { ExecuteResult <ReservedPnr> executeResult = GetReservedPnr(pnrPair, oemId); if (executeResult.Success) { ValidatePNR(executeResult.Result, passengerType); } else { throw new ParseException(passengerType.GetDescription() + "编码解析失败"); } }
public ExecuteResult <IEnumerable <DataTransferObject.Command.PNR.PriceView> > PnrPat(string pnrCode, Common.Enums.PassengerType passengerType, string userName) { throw new NotImplementedException(); }