Esempio n. 1
0
        /// <summary>
        /// 票号状态是否为Open for Use 状态 true为Open for Use  否则不是
        /// </summary>
        /// <param name="TicketNumber"></param>
        /// <param name="Office"></param>
        /// <returns></returns>
        private bool PassengerTicketIsOpen(List <HashObject> pasList, List <HashObject> skyList, SendInsManage SendIns, out string errMsg)
        {
            bool IsOpen = false;

            errMsg = "";
            //第一航段
            HashObject    skyParam = skyList[0];
            StringBuilder sbLog    = new StringBuilder();

            //格式化pnr类
            PnrAnalysis.FormatPNR format = new PnrAnalysis.FormatPNR();
            string TicketNumber = "", Office = "", Status = "", PassengerName = "", FlyDate = "";
            bool   IsSuc = false;

            if (pasList != null && pasList.Count > 0)
            {
                foreach (HashObject param in pasList)
                {
                    if (param.Count == 9 && param["IsChecked"].ToString() == "1")
                    {
                        PassengerName = param["pasName"].ToString().Trim();      //乘机人姓名
                        TicketNumber  = param["pasTicketNum"].ToString().Trim(); //票号
                        Office        = param["office"].ToString().Trim();       //Office
                        FlyDate       = skyParam["FromDate"].ToString().Trim();  //乘机日期

                        if (TicketNumber == "")
                        {
                            continue;
                        }
                        //提取票号信息指令组合
                        string strInstruction = string.Format("DETR:TN/{0}", TicketNumber);
                        //发送指令
                        string recvData = SendIns.Send(strInstruction, ref Office, 0);
                        if ((recvData.ToUpper().Contains("NOT EXIST") || recvData.ToUpper().Contains("TICKET NUMBER") || recvData.ToUpper().Contains("NOT FOUND") || recvData.ToUpper().Contains("AUTHORITY") || recvData.ToUpper().Contains("没有权限")) && FlyDate != "")
                        {
                            //检查乘机日期
                            DateTime dt1 = System.DateTime.Parse("1901-01-01");
                            DateTime.TryParse(FlyDate, out dt1);
                            if (DateTime.Compare(dt1, System.DateTime.Now) < 0)
                            {
                                //乘机日期已过期 不能提交
                                IsSuc = true;
                                sbLog.AppendFormat("乘机人{0}票号{1}乘机日期已过期,不能提交申请退废票!", PassengerName, TicketNumber);
                                break;
                            }
                            else
                            {
                                continue;
                            }
                        }
                        //票号状态
                        Status = format.GetTicketStatus(recvData);
                        if (Status.ToUpper() != "OPEN FOR USE")
                        {
                            IsSuc = true;
                            if (Status == "")
                            {
                                sbLog.AppendFormat("乘机人{0}票号{1}为无效票号,不能提交申请退废票!", PassengerName, TicketNumber);
                            }
                            else
                            {
                                sbLog.AppendFormat("乘机人{0}票号({1})状态为{2},不能提交申请退废票!", PassengerName, TicketNumber, Status);
                            }
                            break;
                        }
                    }
                }
                if (!IsSuc)
                {
                    IsOpen = true;
                }
                errMsg = sbLog.ToString();
            }
            return(IsOpen);
        }