/// <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); }
/// <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); }
///// <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); }
/// <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 }); } }
/// <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); }
/// <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); }
/// <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); }
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); }
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); }
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)); }
/// <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); }
/// <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"); }
/// <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")); }
//注意,这里用的是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)); }
/// <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); }
/// <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); }