Esempio n. 1
0
        /// <summary>
        /// 查询订票后价格
        /// </summary>
        /// <returns>执行结果</returns>
        public static ExecuteResult <IEnumerable <PriceView> > QueryPriceByPNR(PNRPair pnrPair, PassengerType passengerType, Guid oemId)
        {
            // 参数验证
            if (PNRPair.IsNullOrEmpty(pnrPair))
            {
                throw new ArgumentException("旅客订座记录编码");
            }

            // 这里到底是执行了RT还是RTX呢,PAT现在只在执行订座时会提,所以提取时应使用的订座配置;
            const ConfigUseType type = ConfigUseType.Reserve;
            var userName             = GetUserName(oemId, type);

            if (userName == null)
            {
                return(new ExecuteResult <IEnumerable <PriceView> >
                {
                    Result = null,
                    Success = false,
                    Message = "OEM未设置可用配置,且没有设置使用平台配置。"
                });
            }

            var repository = Factory.CreateCommandRepository();
            var result     = repository.PnrPat(pnrPair.PNR, passengerType, userName);

            if (result.Success)
            {
                PidManagementService.SaveCounter(oemId, HasUsePlatformConfig(oemId, type));
            }

            return(result);
        }
Esempio n. 2
0
        /// <summary>
        /// 将待授权的旅客订座记录编号的权限授予指定的OfficeNo
        /// </summary>
        /// <param name="pnrPair">待授权的旅客订座记录编号</param>
        /// <param name="officeNo">待授权的OfficeNo</param>
        /// <param name="oemId"> </param>
        /// <returns></returns>
        /// <remarks>
        /// 使用在订好编码后,向出票方授权;
        /// </remarks>
        public static ExecuteResult <string> AuthorizeByOfficeNo(PNRPair pnrPair, string officeNo, Guid oemId)
        {
            // 参数验证
            if (PNRPair.IsNullOrEmpty(pnrPair))
            {
                throw new ArgumentException("旅客订座记录编码");
            }
            const ConfigUseType type = ConfigUseType.Reserve;
            var userName             = GetUserName(oemId, type);

            var officeNumber = GetOfficeNumber(oemId, type);

            if (userName == null || officeNumber == null)
            {
                return(new ExecuteResult <string>
                {
                    Result = null,
                    Success = false,
                    Message = "OEM未设置可用配置,且没有设置使用平台配置。"
                });
            }
            var repository = Factory.CreateCommandRepository();
            var result     = repository.Authorize(pnrPair.PNR, officeNumber, new string[] { officeNo }, userName);

            if (result.Success)
            {
                PidManagementService.SaveCounter(oemId, true);
            }

            return(result);
        }
Esempio n. 3
0
        ///// <summary>
        ///// 根据旅客订座记录编号,获取其详细信息。(此方法没有被外部调用)
        ///// </summary>
        ///// <param name="pnrCode">编码</param>
        ///// <returns>执行结果</returns>
        //private static ExecuteResult<IssuedPNR> GetTeamPNRDetail(string pnrCode)
        //{
        //    var rtnCommand = new RTNCommand(pnrCode);
        //    rtnCommand.Execute();
        //    var issuedPNR = Parser.GetPNRDetail(rtnCommand.ReturnString);
        //    return GetExecuteResult(issuedPNR, rtnCommand.ReturnString);
        //}

        ///// <summary>
        ///// 根据旅客订座记录编号,获取其详细信息。
        ///// </summary>
        ///// <param name="pnrPair">PNR</param>
        ///// <returns>执行结果</returns>
        //private static ExecuteResult<IssuedPNR> GetPNRDetail(PNRPair pnrPair, bool isTeam)
        //{
        //    if (PNRPair.IsNullOrEmpty(pnrPair))
        //    {
        //        throw new ArgumentException("编码错误");
        //    }
        //    // 优先通过大编码获取信息,
        //    return isTeam && !string.IsNullOrWhiteSpace(pnrPair.BPNR) ? GetTeamPNRDetail(pnrPair.BPNR) : GetPNRDetail(pnrPair);
        //}

        ///// <summary>
        ///// 根据旅客订座记录编号,获取其详细信息。
        ///// </summary>
        ///// <param name="pnrPair">PNR</param>
        ///// <returns>执行结果</returns>
        //private static ExecuteResult<IssuedPNR> GetPNRDetail(PNRPair pnrPair)
        //{
        //    if (PNRPair.IsNullOrEmpty(pnrPair))
        //    {
        //        throw new ArgumentException("编码错误");
        //    }

        //    var commandString = string.Empty;
        //    IssuedPNR issuedPNR = null;

        //    if (!string.IsNullOrWhiteSpace(pnrPair.BPNR))
        //    {
        //        var rtCommand = new RTCommand(pnrPair.BPNR, CommandType.PNRExtraction, ReturnResultType.All);
        //        rtCommand.Execute();
        //        commandString = rtCommand.ReturnString;
        //    }
        //    else
        //    {
        //        var rtxCommand = new RTXCommand(pnrPair.PNR);
        //        rtxCommand.Execute();
        //        commandString = rtxCommand.ReturnString;
        //    }

        //    switch (Parser.GetPassengerConsistsType(commandString))
        //    {
        //        case PassengerConsistsType.Individual:
        //            issuedPNR = Parser.GetPNRDetail(commandString);
        //            break;
        //        case PassengerConsistsType.Group:
        //            // 通过上面的数据,解析出PNRPair;
        //            PNRPair result = Parser.GetPnrPair(commandString);
        //            // 这里用大编提取数据,切记切记,用小编提取不到;
        //            return GetTeamPNRDetail(string.IsNullOrWhiteSpace(result.BPNR) ? result.PNR : result.BPNR);
        //        default:
        //            break;
        //    }

        //    return GetExecuteResult<IssuedPNR>(issuedPNR, commandString);
        //}
        #endregion

        /// <summary>
        ///
        /// </summary>
        /// <param name="pnrPair"></param>
        /// <param name="oemId"> </param>
        /// <returns></returns>
        /// <remarks>
        /// 由于在订座后立即提取了编码信息,所在所有的调用此方法时都应该是用大系统提取,所以,这里先写死了;
        /// </remarks>
        public static ExecuteResult <ReservedPnr> GetReservedPnr(PNRPair pnrPair, Guid oemId)
        {
            if (PNRPair.IsNullOrEmpty(pnrPair))
            {
                throw new ArgumentException("编码错误");
            }

            var userName = "******";

            ExecuteResult <ReservedPnr> reservedPnrInfo;
            var repository = Factory.CreateCommandRepository();

            // 防止出现问题,检查输入编码;
            pnrPair = Domain.Utility.Parser.SwitchPnrPair(pnrPair);

            if (!string.IsNullOrWhiteSpace(pnrPair.BPNR))//若大系统编码为空,则使用大系统提大编码
            {
                reservedPnrInfo = repository.Rt(pnrPair.BPNR, userName);
            }
            else
            {
                reservedPnrInfo = repository.Rtx(pnrPair.PNR, userName);
            }

            if (reservedPnrInfo.Success)
            {
                PidManagementService.SaveCounter(oemId, true);
            }

            return(reservedPnrInfo);
        }
Esempio n. 4
0
        /// <summary>
        /// 根据给出的旅客订座记录编号和姓名,修改旅客证件号码。
        /// </summary>
        /// <param name="pnrPair">旅客订座记录编号</param>
        /// <param name="name">旅客姓名</param>
        /// <param name="oldNumber">原证件号</param>
        /// <param name="newNumber">新证件号</param>
        /// <param name="type">证件类型</param>
        /// <param name="oemId">OEM编号</param>
        /// <returns></returns>
        public static ExecuteResult <ReservedPnr> ModifyCertificateNumber(PNRPair pnrPair, string name, string oldNumber, string newNumber, CredentialsType type, Guid oemId)
        {
            // 参数验证
            if (PNRPair.IsNullOrEmpty(pnrPair))
            {
                throw new ArgumentException("旅客订座记录编码");
            }

            var userName = "******";

            try
            {
                var repository = Factory.CreateCommandRepository();
                PidManagementService.SaveCounter(oemId, true);
                var result = repository.SsrFoid(pnrPair.PNR, name, oldNumber, newNumber, type, userName);

                if (result.Success)
                {
                    PidManagementService.SaveCounter(oemId, true);
                }

                return(result);
            }
            catch (Exception e)
            {
                return(new ExecuteResult <ReservedPnr>()
                {
                    Success = false,
                    Message = e.Message,
                    Result = null
                });
            }
        }
Esempio n. 5
0
        /// <summary>
        /// 机票预定
        /// </summary>
        /// <param name="reservationInfo">预订信息</param>
        /// <param name="oemId"> </param>
        /// <param name="officeNumber"> </param>
        /// <returns></returns>
        public static ExecuteResult <ReservedPnr> ReserveTickets(ReservationInfo reservationInfo, Guid oemId)
        {
            if (reservationInfo == null)
            {
                throw new ArgumentException("预订信息不能为空");
            }

            const ConfigUseType type = ConfigUseType.Reserve;
            var userName             = GetUserName(oemId, type);
            var officeNumber         = GetOfficeNumber(oemId, type);

            if (userName == null || officeNumber == null)
            {
                return(new ExecuteResult <ReservedPnr>
                {
                    Result = null,
                    Success = false,
                    Message = "OEM未设置可用配置,且没有设置使用平台配置。"
                });
            }

            var repository    = Factory.CreateCommandRepository();
            var executeResult = repository.Book(reservationInfo, officeNumber, userName);

            if (executeResult.Success)
            {
                var reservedPnr = executeResult.Result;
                var pnrHistory  = new PNRHistory(0, DateTime.Now, reservedPnr.PnrPair.PNR, reservedPnr.OfficeNo, 1);
                HistoryService.Save(pnrHistory);
                PidManagementService.SaveCounter(oemId, HasUsePlatformConfig(oemId, type));
            }

            return(executeResult);
        }
Esempio n. 6
0
        /// <summary>
        /// 根据航班号和航班日期,获取经停点列表信息
        /// </summary>
        /// <param name="flightNumber">航班号</param>
        /// <param name="flightDate">航班日期</param>
        /// <param name="oemId"> </param>
        /// <returns>经停点列表</returns>
        public static ExecuteResult <List <TransitPoint> > GetTransitPoints(string flightNumber, DateTime flightDate, Guid oemId)
        {
            // 参数验证
            if (flightNumber == null)
            {
                throw new ArgumentException("航班号不能为空");
            }

            const ConfigUseType type = ConfigUseType.Query;
            var userName             = GetUserName(oemId, type);

            if (userName == null)
            {
                return(new ExecuteResult <List <TransitPoint> >()
                {
                    Result = null,
                    Success = false,
                    Message = "OEM未设置可用配置,且没有设置使用平台配置。"
                });
            }

            var repository = Factory.CreateCommandRepository();
            var result     = repository.Ff(flightNumber, flightDate, userName);

            if (result.Success)
            {
                PidManagementService.SaveCounter(oemId, HasUsePlatformConfig(oemId, type));
            }

            return(result);
        }
Esempio n. 7
0
        /// <summary>
        /// 根据出发机场、到达机场以及航班日期,获取符合条件的航班信息
        /// </summary>
        /// <param name="departureAirport">出发机场</param>
        /// <param name="arrivalAirport">到达机场</param>
        /// <param name="flightDate">航班日期</param>
        /// <param name="oemId"> </param>
        /// <returns>航班列表</returns>
        public static ExecuteResult <IEnumerable <Flight> > QueryFlight(string departureAirport, string arrivalAirport, DateTime flightDate, Guid oemId)
        {
            // 参数验证
            if (string.IsNullOrEmpty(departureAirport) || string.IsNullOrEmpty(arrivalAirport))
            {
                throw new ArgumentException("航段信息不能为空");
            }

            const ConfigUseType type = ConfigUseType.Query;
            var userName             = GetUserName(oemId, type);

            if (userName == null)
            {
                return(new ExecuteResult <IEnumerable <Flight> >()
                {
                    Result = null,
                    Success = false,
                    Message = "OEM未设置可用配置,且没有设置使用平台配置。"
                });
            }

            var repository = Factory.CreateCommandRepository();
            var carrier    = "";
            var result     = repository.Avh(departureAirport, arrivalAirport, flightDate, carrier, true, userName);

            if (result.Success)
            {
                PidManagementService.SaveCounter(oemId, HasUsePlatformConfig(oemId, type));
            }

            return(result);
        }
Esempio n. 8
0
        public string Qn(string option, string userName, string password)
        {
            var qnCommand    = new QnCommand(option);
            var user         = PidManagementService.GetUser();
            var returnString = CommandExecutorService.Execute(qnCommand, user);

            XDocument xdoc    = XDocument.Parse(returnString, LoadOptions.None);
            var       rawData = GetRawDate(xdoc, "QN");

            return(rawData);
        }
Esempio n. 9
0
        public string Qs(QueueType queueType, string userName, string password)
        {
            var qsCommand    = new QsCommand(queueType);
            var user         = PidManagementService.GetUser();
            var returnString = CommandExecutorService.Execute(qsCommand, user);

            XDocument xdoc    = XDocument.Parse(returnString, LoadOptions.None);
            var       rawData = GetRawDate(xdoc, "QS");

            return(rawData);
        }
Esempio n. 10
0
        public List <QueueSummary> Qt(string userName, string password, string officeNo)
        {
            CommandBuilder.Command qtCommand = new QtCommand();
            var user         = PidManagementService.GetUser();
            var returnString = CommandExecutorService.Execute(qtCommand, user);

            XDocument xdoc    = XDocument.Parse(returnString, LoadOptions.None);
            var       rawData = GetRawDate(xdoc, "QT");

            return(Domain.Utility.Parser.GetMailList(rawData));
        }
Esempio n. 11
0
        /// <summary>
        /// 根据给出的电子客票票号,出发机场和OEM编号,获取电子客票信息
        /// </summary>
        /// <param name="eTicketNumber">电子客票票号</param>
        /// <param name="oemId">OEM编号</param>
        /// <returns>执行结果</returns>
        public static ExecuteResult <ETicketInfo> GetTicketDetails(string eTicketNumber, Guid oemId)
        {
            if (!ElectronicTicket.ValidateTicketNumber(eTicketNumber))
            {
                throw new ArgumentException("电子客票号码格式错误!");
            }
            var userName = "******";

            var repository = Factory.CreateVeWebCommandRepository();

            var eTicketResult = repository.Detr(eTicketNumber, userName);
            var jSheetResult  = repository.Detrf(eTicketNumber, userName);

            var status = DetrErrorStatus.None;

            // 这里是两次请求的状态都要处理;
            if (!eTicketResult.Success)
            {
                if (eTicketResult.Message.Contains("没有权限") || eTicketResult.Message.Contains("AUTHORITY"))
                {
                    status = DetrErrorStatus.Authority;
                }
                else if (eTicketResult.Message.Contains("ET TICKET NUMBER IS NOT EXIST"))
                {
                    status = DetrErrorStatus.TickerNumber;
                }
                else
                {
                    status = DetrErrorStatus.Format;
                }
            }

            var result = new ExecuteResult <ETicketInfo>
            {
                Result = new ETicketInfo
                {
                    JourneySheet     = jSheetResult.Result,
                    ElectronicTicket = eTicketResult.Result,
                    Status           = status
                },
                Message = "DETR:" + eTicketResult.Message + ", DETRF" + jSheetResult.Message,
                Success = eTicketResult.Success && jSheetResult.Success
            };

            if (result.Success)
            {
                PidManagementService.SaveCounter(oemId, true);
            }
            return(result);
        }
Esempio n. 12
0
        /// <summary>
        /// 结束信箱处理,并根据参数,决定当前邮件是否删除。
        /// </summary>
        /// <param name="deleteCurrentQueue">是否删除当前信件</param>
        /// <param name="oemId"> </param>
        public static void EndProcessQueue(bool deleteCurrentQueue, Guid oemId)
        {
            const ConfigUseType type = ConfigUseType.QS;
            var userName             = GetUserName(oemId, type);

            if (userName == null)
            {
                return;
            }
            PidManagementService.SaveCounter(oemId, HasUsePlatformConfig(oemId, type));
            var          repository   = Factory.CreateVeWebCommandRepository();
            const string option       = "E";
            var          returnString = deleteCurrentQueue ? repository.Qn(option, userName, "123") : repository.Qd(option, userName, "123");
        }
Esempio n. 13
0
        /// <summary>
        /// 根据邮箱类型,开始处理这种类型的邮箱,并得到此邮箱中的第一封信。
        /// </summary>
        /// <param name="queueType">邮箱类型</param>
        /// <param name="oemId"> </param>
        /// <returns>信件内容</returns>
        public static string StartProcessQueueAndGetTheFirst(QueueType queueType, Guid oemId)
        {
            const ConfigUseType type = ConfigUseType.QS;
            var userName             = GetUserName(oemId, type);

            if (userName == null)
            {
                return("");
            }
            PidManagementService.SaveCounter(oemId, HasUsePlatformConfig(oemId, type));
            var repository = Factory.CreateVeWebCommandRepository();

            return(repository.Qs(queueType, userName, "123"));
        }
Esempio n. 14
0
        //注意,这里用的是VeWeb
        /// <summary>
        /// 获取邮箱列表
        /// </summary>
        /// <param name="oemId"> </param>
        /// <returns></returns>
        public static List <QueueSummary> GetMailList(Guid oemId)
        {
            const ConfigUseType type = ConfigUseType.QS;
            var userName             = GetUserName(oemId, type);
            var officeNumber         = GetOfficeNumber(oemId, type);

            if (userName == null || officeNumber == null)
            {
                return(new List <QueueSummary>());
            }
            var repository = Factory.CreateVeWebCommandRepository();

            PidManagementService.SaveCounter(oemId, HasUsePlatformConfig(oemId, type));
            return(repository.Qt(userName, "123", officeNumber));
        }
Esempio n. 15
0
        /// <summary>
        /// 根据给出的航空公司系统编码,得到订座记录;
        /// </summary>
        /// <param name="pnrPair">编码对</param>
        /// <param name="flightNumber">航班号</param>
        /// <param name="flightDate">航班日期</param>
        /// <param name="oemId"> </param>
        /// <returns></returns>
        public static ExecuteResult <ReservedPnr> TransferPnrCode(PNRPair pnrPair, FlightNumber flightNumber, DateTime flightDate, Guid oemId)
        {
            if (pnrPair == null || string.IsNullOrEmpty(pnrPair.BPNR))
            {
                throw new ArgumentException("旅客订座记录编码");
            }

            var userName   = "******";
            var repository = Factory.CreateCommandRepository();
            var result     = repository.RrtOk(pnrPair.BPNR, flightNumber.ToString(), flightDate, userName);

            if (result.Success)
            {
                PidManagementService.SaveCounter(oemId, true);
            }
            return(result);
        }
Esempio n. 16
0
        /// <summary>
        /// 根据PNR编号,取消指定姓名的旅客的预定
        /// </summary>
        /// <param name="pnrPair">PNR编号</param>
        /// <param name="voyages">姓名</param>
        /// <param name="oemId"> </param>
        /// <returns>执行结果</returns>
        public static bool CancelPassengersByPNR(string[] passengerNames, PNRPair pnrPair, Guid oemId)
        {
            // 参数验证
            if (PNRPair.IsNullOrEmpty(pnrPair))
            {
                throw new ArgumentException("旅客订座记录编码");
            }

            const ConfigUseType type = ConfigUseType.Reserve;
            var userName             = GetUserName(oemId, type);

            if (userName == null)
            {
                return(false);
            }
            var repository = Factory.CreateCommandRepository();
            var result     = repository.Xe(pnrPair.PNR, passengerNames, userName);

            PidManagementService.SaveCounter(oemId, HasUsePlatformConfig(oemId, type));
            return(result);
        }