Example #1
0
        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("缺口程编码,需要搭桥");
            }
        }
Example #2
0
        /// <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() + "编码解析失败");
            }
        }
Example #3
0
 public ExecuteResult <IEnumerable <DataTransferObject.Command.PNR.PriceView> > PnrPat(string pnrCode, Common.Enums.PassengerType passengerType, string userName)
 {
     throw new NotImplementedException();
 }