Example #1
0
        public RtResult(string rtstring, string pnr)
        {
            rtstring = egString.trim(rtstring);
            rtstring = egString.trim(rtstring, '>');
            pnr      = pnr.ToUpper();
            if (rtstring.IndexOf(xestring) >= 0)
            {
                return;
            }

            m_rtstring = egString.trim(rtstring);
            m_succeed  = (m_rtstring.IndexOf(pnr) >= 0);
            m_succeed  = (BaseFunc.PnrValidate(pnr) && m_succeed);
            if (!m_succeed)
            {
                return;
            }
            m_pnr = pnr;



            string[] line = m_rtstring.Split(Structs.SP_R_N, StringSplitOptions.RemoveEmptyEntries);
            m_et_flag = (egString.trim(line[0]) == etstring);

            string sname = m_rtstring.Replace(etstring, "");//sname为 etstring或起始位置到pnr之间有串,替换掉回车,换行,加号,减号

            sname = sname.Replace(marriedstring, "");
            string sflight = sname;//保存替换后的值

            sname = egString.trim(sname.Substring(0, sname.IndexOf(m_pnr)));
            sname = sname.Replace("\r", " ").Replace("\n", " "); //maybe there are char of newline
            sname = sname.Replace("+", " ").Replace("-", " ");   //there are +/- if multi pages

            namesfrom(sname);

            //string temp = Convert.ToString(m_psg_count + 1) + ".";
            //string sflight = m_rtstring.Replace(etstring,"");//egString.trim(m_rtstring.Substring(m_rtstring.IndexOf(temp) + temp.Length));


            string[] sp = Structs.SP_NUMBER((uint)(m_psg_count + 999), true, true);

            line = sflight.Split(sp, StringSplitOptions.RemoveEmptyEntries);

            segfromlines(line);

            ssrfoidfromlines(line);
            SSR_TKNE_fromlines(line);//added by king 2009.12.8
            ssradtkfromlines(line);

            tktstatusfromlines(line);

            pnrbigfromlines(line);

            m_auto_fare_flat = (m_rtstring.IndexOf("RMK AUTOMATIC FARE QUOTE") > 0);

            farefromlines(line);

            //tkt no
            if (m_tktnos == null || string.IsNullOrEmpty(m_tktnos[0]))//若ssr组没有取到电子客票号
            {
                tktnofromlines(line);
            }
            //fp
            fpfromlines(line);
            //ei
            eifromlines(line);
            m_office = m_rtstring.Substring(m_rtstring.Length - 6);
            //if (!BaseFunc.OfficeValidate(m_office)) m_office = "";//commentted by king
        }
Example #2
0
        public EtdzResult(string resText)
        {
            resText = egString.trim(resText.Trim(), '>').Trim();
            m_txt   = resText;

            if (m_txt.IndexOf("CNY") == 0 ||
                m_txt.IndexOf("ELECTRONIC TICKET ISSUED") >= 0 ||
                m_txt.IndexOf("ET PROCESSING...  PLEASE WAIT!") >= 0)
            {
                m_succ = true;
            }
            if (m_succ)
            {
                if (m_txt.IndexOf("CNY") == 0)
                {
                    total = Convert.ToInt32(egString.Between2String(m_txt, "CNY", "."));
                    string   temp  = m_txt.Replace("\r", " ").Replace("\n", " ");
                    string[] a     = temp.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
                    int      index = 1;
                    if (BaseFunc.PnrValidate(a[1]))
                    {
                        m_pnr = a[1];
                    }
                    else if (BaseFunc.PnrValidate(a[2]))
                    {
                        m_pnr = a[2];
                        index = 2;
                    }
                    try
                    {
                        for (int i = index + 1; i < a.Length; i++)
                        {
                            string t = "";
                            if (BaseFunc.TicketNumberValidate(a[i], ref t))
                            {
                                tktnos.Add(a[i]);
                            }
                        }
                    }
                    catch
                    {
                    }
                }
                else
                {
                    total = 0;
                }
            }
            else
            {
                total = -1;
                switch (m_txt)
                {
                case "STOCK":
                    throw new Exception("STOCK : 票池为空,请上票号");

                case "DEVICE":
                    throw new Exception("DEVICE : 打票机号错误");

                case "NO PNR":
                    throw new Exception("NO PNR : 未知错误,请重试");

                case "FORMAT":
                    throw new Exception("FORMAT : 格式错误");

                case "FUNCTION":
                    throw new Exception("FUNCTION : 未知指令");

                case "INCOMPLETE PNR/FN":
                    throw new Exception("INCOMPLETE PNR/FN : 请先输入票价组");

                case "MANUAL":
                    throw new Exception("MANUAL : 可能EI项或其它项过长");
                }
            }
        }