Example #1
0
        public TprResult(string t)
        {
            t     = egString.trim(t.Trim(), '>');
            m_txt = t;
            try
            {
                m_succeed     = true;
                m_office      = egString.Between2String(t, "OFFICE :", "IATA NUMBER :");
                m_iata_number = egString.Between2String(t, "IATA NUMBER :", "DEVICE :");
                m_device      = Convert.ToInt32(egString.Between2String(t, "DEVICE :", "/"));
                m_date        = BaseFunc.str2datetime(egString.Between2String(t, "DATE   :", "AIRLINE:"), false);

                m_ticket_total  = Convert.ToInt32(egString.Between2String(t, "TOTAL TICKETS:", "("));
                m_ticket_void   = Convert.ToInt32(egString.Between2String(t, "TICKETS VOID", "TICKETS REFUND"));
                m_ticket_refund = Convert.ToInt32(egString.Between2String(t, "TICKETS REFUND", ")"));
                m_fare_normal   = float.Parse(egString.Between2String(t, "NORMAL FARE -- AMOUNT :", "CNY"));
                m_carriers      = float.Parse(egString.Between2String(t, "CARRIERS -- AMOUNT :", "CNY"));
                m_tax_normal    = float.Parse(egString.Between2String(t, "NORMAL TAX -- AMOUNT :", "CNY"));
                m_commit_normal = float.Parse(egString.Between2String(t, "NORMAL COMMIT -- AMOUNT :", "CNY"));
                m_refund_net    = float.Parse(egString.Between2String(t, "NET REFUND -- AMOUNT :", "CNY"));
                m_deduction     = float.Parse(egString.Between2String(t, "DEDUCTION -- AMOUNT :", "CNY"));
                m_tax_refund    = float.Parse(egString.Between2String(t, "REFUND TAX -- AMOUNT :", "CNY"));
                m_commit_refund = float.Parse(egString.Between2String(t, "REFUND COMMIT -- AMOUNT :", "CNY"));
                if (TicketNumbers() != m_ticket_total)
                {
                    throw new Exception("");
                }
            }
            catch
            {
                m_succeed = false;
            }
        }
Example #2
0
        /// <summary>
        /// 01234567890123456789012345678901234567890123456789
        /// 8C8276 X   TU23DEC08XMNWUH RR19  1020 1130          E --T2
        /// MU5901 G   WE24DEC  KMGJHG RR6   1825 1915          E
        /// ZH9706 Y   TU06JAN09XFNSZXUN1  2215 2355          ES
        ///*MU6737 H1  FR13FEB  CTUPVGNO6  1340 1605          E --T1 OP-MU5408
        /// </summary>
        /// <param name="seg"></param>
        public void FromString2(string seg)
        {
            string[]      a  = seg.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
            List <string> ls = new List <string>();

            for (int i = 0; i < a.Length; ++i)
            {
                if (a[i] != "")
                {
                    ls.Add(a[i]);
                }
            }
            Flight = ls[0];
            Bunk   = ls[1][0];
            try
            {
                if (ls[2].Length > 7)//上面一种
                {
                    Time = Convert.ToInt32(ls[4]);
                    //Time2 = Convert.ToInt32(ls[5]);
                    Time2 = Convert.ToInt32(ls[5].Substring(0, 4));//modified by king

                    Date       = BaseFunc.str2datetime(ls[2].Substring(0, 9), true);
                    Citypair   = ls[2].Substring(9, 6);
                    Actioncode = ls[3].Substring(0, 2);
                    Number     = Convert.ToInt32(ls[3].Substring(2));
                }
                else//下面一种
                {
                    Date = BaseFunc.str2datetime(ls[2], true);
                    if (ls[3].Length == 6)
                    {
                        Time = Convert.ToInt32(ls[5]);
                        //Time2 = Convert.ToInt32(ls[6]);
                        Time2 = Convert.ToInt32(ls[6].Substring(0, 4));//modified by king 如果飞机抵达时间是次日凌晨,表示如:0040+1,将转换出错

                        Citypair   = ls[3];
                        Actioncode = ls[4].Substring(0, 2);
                        Number     = Convert.ToInt32(ls[4].Substring(2));
                    }
                    else if (ls[3].Length > 6)
                    {
                        Time = Convert.ToInt32(ls[4]);
                        //Time2 = Convert.ToInt32(ls[5]);
                        Time2 = Convert.ToInt32(ls[5].Substring(0, 4));//modified by king

                        Citypair   = ls[3].Substring(0, 6);
                        Actioncode = ls[3].Substring(6, 2);
                        Number     = Convert.ToInt32(ls[3].Substring(8));
                    }
                }
            }
            catch
            {
                //重要的是航班号和舱位,其它信息可以忽略
            }
        }
Example #3
0
        /// <summary>
        /// 一次性封口可用IBE直接调用,其中ssr指令直接加证件号,顺序和姓名顺序相同
        /// </summary>
        /// <param name="ss">ss:mu2501/l/22apr/wuhpvg/ll1\rnm1ce\rct123\tktl2300/./wuh128\rssr 123456\r@</param>
        private void Init(string ss)
        {
            string[] a = ss.ToLower().Split('\r');
            string   s = a[0].Trim();

            for (int i = 1; i < a.Length; i++)
            {
                s = a[i].Trim();
                if (s.StartsWith("ss") && !s.StartsWith("ssr"))
                {
                    s = egString.trim(s.Substring(2), "/: ");
                    string[] b = s.Split('/');
                    m_flightno.Add(b[0]);
                    m_bunk.Add(b[1]);
                    m_date.Add(BaseFunc.str2datetime(b[2], true));
                    m_citypair.Add(b[3]);
                }
                else if (s.StartsWith("nm"))
                {
                    s = egString.trim(s.Substring(2), "/: ");
                    string[] nm = s.Split('1');
                    for (int j = 0; j < nm.Length; j++)
                    {
                        m_names.Add(nm[j]);
                    }
                }
                else if (s.StartsWith("c"))
                {
                    s    = egString.trim(s.Substring(1), "/: t");
                    m_ct = s;
                }
                else if (s.StartsWith("tktl"))
                {
                    s = egString.trim(s.Substring(4), "/: ");
                    string[] c = s.Split('/');
                    m_tkt = BaseFunc.str2datetime(c[1], true).AddHours(int.Parse(c[0]) / 100).AddMinutes(int.Parse(c[0]) % 100);
                }
                else if (s.StartsWith("ssr"))
                {
                    s = egString.trim(s.Substring(4), "/: ");
                    m_cards.Add(s);
                }
            }
            if (m_names.Count != m_cards.Count && m_cards.Count != 0)
            {
                throw new Exception("姓名数与证件数不一致!");
            }
            else if (m_cards.Count == 0)
            {
                for (int i = 0; i < m_names.Count; i++)
                {
                    m_cards.Add(i.ToString());
                }
            }
        }
Example #4
0
 /// <summary>
 /// 取(SSR ADTK 1E BY WUH23DEC08/0823 OR CXL MU5901 G24DEC)
 /// </summary>
 private void ssradtkfromlines(string [] line)
 {
     try
     {
         List <string> ls = getsomeline(line, "SSR ADTK");
         m_city_dz = ls[0].Substring(15, 3);
         string d = ls[0].Substring(18, 7);
         string t = ls[0].Substring(26, 4);
         m_time_dz = BaseFunc.str2datetime(d, false);
         int h = int.Parse(t.Substring(0, 2));
         int m = int.Parse(t.Substring(2));
         m_time_dz = m_time_dz.AddHours(h).AddMinutes(m);
     }
     catch (Exception ex)
     {
     }
 }
Example #5
0
        /// <summary>
        /// 从串中初始化结构体变量
        /// </summary>
        /// <param name="seg">(生成PNR后的串)如:"MU2501  I MO22DEC  WUHPVG DK1   0830 0945",必须Trim</param>
        public void FromString(string seg)
        {
            string[]      a  = seg.Split(' ');
            List <string> ls = new List <string>();

            for (int i = 0; i < a.Length; ++i)
            {
                if (a[i] != "")
                {
                    ls.Add(a[i]);
                }
            }
            Flight     = ls[0];
            Bunk       = ls[1][0];
            Date       = BaseFunc.str2datetime(ls[2], true);
            Citypair   = ls[3];
            Actioncode = ls[4].Substring(0, 2);
            Number     = Convert.ToInt32(ls[4].Substring(2));
            Time       = Convert.ToInt32(ls[5]);
            Time2      = Convert.ToInt32(ls[6]);
        }
Example #6
0
            /// <summary>
            /// 1TAO CZ    OPEN  X OPEN          Y40        19DEC8/19DEC9 20K REFUNDED
            ///           RL:
            ///  WUH

            ///
            ///
            /// 1YIH HU    7110  Y 25DEC 1700 OK Y                        20K USED/FLOWN

            /// 1WUH 8L    9936  N 24DEC 1330 OK Y30                      20K OPEN FOR USE
            ///           RL:BHP2C   /P04EZ 1E
            /// O  KMG
            ///
            ///
            /// 1ZUH CZ    6438  L 22DEC 1340 OK Y60        22DEC8/22DEC9 20K STATUS = B
            ///           RL:V88KC   /BRMR3 CA
            ///  WUH
            /// </summary>
            /// <param name="m"></param>
            public void FromString(string m)
            {
                FROM    = m.Substring(1, 3);
                AIRLINE = m.Substring(5, 2);
                NUMBER  = m.Substring(11, 4).Trim();
                BUNK    = m.Substring(17)[0];
                try
                {
                    string dtstring = m.Substring(19, 5).Trim();
                    if (dtstring != "OPEN")
                    {
                        DATE = BaseFunc.str2datetime(m.Substring(19, 5), true);
                    }
                }
                catch
                {
                }
                try
                {
                    TIME = Convert.ToInt32(m.Substring(25, 4));
                }
                catch
                {
                }
                ACTIONCODE = m.Substring(30, 2);
                TKTCLASS   = m.Substring(33, 3).Trim();
                string t = m.Substring(37, 21).Trim();//string t = m.Substring(36, 21).Trim();//2009.12.08发现bug:m值变成“5       30JAN0/30JAN0”,前面多截取了一个数字 by king

                string[] a = t.Split('/');
                if (a.Length == 2)
                {
                    //发现一个票号提取后得字符串:1TNA SC    1187  E 19NOV 1110 OK E/TNA11N94 19NOV1/19NOV1 20K OPEN FOR USE
                    //导致上面的变量 t 取值不正确
                    //考虑到以下仅为行程单的【EagleString\DetrResult.cs/SetControlsByDetrResult/ToTextBoxArrayLikeReceipt】方法服务,故注释掉以防出错 by king
                    //DATE_YES = BaseFunc.str2datetime(a[0], false);
                    //DATE_NO = BaseFunc.str2datetime(a[1], true);
                }
                WEIGHT = m.Substring(58, 3);
                a      = m.Split(Structs.SP_R_N, StringSplitOptions.RemoveEmptyEntries);
                STATE  = a[0].Substring(62);
                try
                {
                    string   codes = egString.Between2String(m, "RL:", "\n");
                    string[] b     = codes.Split('/');

                    string code1 = b[0].Trim();
                    string code2 = b[1].Trim();

                    string CA = "";
                    if (code2.Length > 5)
                    {
                        CA = egString.substring(b[1], b[1].Length - 2, 2);
                    }
                    if (CA == "CA")
                    {
                        PNR    = code1;
                        PNRBIG = code2;
                    }
                    else if (CA == "1E")
                    {
                        PNR    = code2;
                        PNRBIG = code1;
                    }
                    else
                    {
                        PNR = PNRBIG = code1;
                    }
                }
                catch
                {
                    PNR = PNRBIG = "";
                }
                if (PNR.Length > 5)
                {
                    PNR = PNR.Substring(0, 5);
                }
                if (PNRBIG.Length > 5)
                {
                    PNRBIG = PNRBIG.Substring(0, 5);
                }
                TO = a[a.Length - 1].Substring(1).Trim();
            }
Example #7
0
        /// <summary>
        /// av H型
        /// </summary>
        public void AvResult1(string avres, int price, int distance)
        {
            try
            {
                m_price    = price;
                m_distance = distance;

                IsAvReturnString = true;
                string[] sp = new string[16];//分割符为"\ni"
                for (int i = 0; i < 8; ++i)
                {
                    int itemp = i + 1;
                    sp[i]     = "\n" + itemp.ToString();
                    sp[i + 8] = "\r\n" + itemp.ToString();
                }

                //Modify by wangfb 20060630
                //CZ  FARE    HGHPEK/PEKHGH   YI:CZ/TZ304
                //AIRPORT CHARGE FOR LATERAL FLIGHT
                string[] lastlines = avres.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                if (lastlines[lastlines.Length - 1].IndexOf("FARE") >= 0 ||
                    lastlines[lastlines.Length - 1].IndexOf("AIRPORT") >= 0)
                {
                    avres = avres.Replace(lastlines[lastlines.Length - 1], "");
                }



                string[] avSeg = avres.Split(sp, StringSplitOptions.RemoveEmptyEntries);

                nSegs = avSeg.Length - 1;
                //"27JUL(THU) WUHHKG\n"
                string str_date = avSeg[0].Trim().Split(' ')[0];
                int    lPos     = str_date.IndexOf('(');
                if (lPos >= 0)
                {
                    str_date = str_date.Substring(0, lPos);           //27JUL or 27JUL08
                }
                m_date   = BaseFunc.str2datetime(str_date, true);
                m_fromto = avSeg[0].Trim().Split(' ')[1];                                                                      //------2

                si = new SegmentInfomation[nSegs];


                for (int i = 0; i < nSegs; ++i)
                {
                    si[i]         = new SegmentInfomation();
                    si[i].context = avSeg[i + 1];
                    string[] siSplit = si[i].context.Split(new string[1] {
                        "\n "
                    }, StringSplitOptions.RemoveEmptyEntries);
                    si[i].b_directly = (siSplit.Length == 1);
                    si[i].fi         = new FlightInformation[siSplit.Length];
                    for (int j = 0; j < siSplit.Length; j++)
                    {
                        int id = i + 1;
                        si[i].fi[j]           = new FlightInformation(siSplit[j], id, m_price);
                        si[i].fi[j].a_rebates = (EagleString.egString.LargeThan420(m_date) ? EagleFileIO.arrayOfRebate2 : EagleFileIO.arrayOfRebate);
                        if (si[i].b_directly)
                        {
                            m_flights.Add(si[i].fi[j].info_Flight);
                            m_bunks_lowest.Add(si[i].fi[j].info_Bunk_Lowest);
                        }
                        else
                        {
                            string citypair = si[i].fi[j].info_CityPair.Trim();
                            if (citypair.Length == 3)
                            {
                                si[i].fi[j].info_CityPair = si[i].fi[j - 1].info_CityPair.Substring(3) + citypair;
                            }
                        }
                    }
                }

                avstring = EagleString.egString.trim(avres);
            }
            catch (Exception ex)
            {
                IsAvReturnString = false;
                //MessageBox.Show("AvResult Constructor:" + ex.Message);
                //EagleFileIO.LogWrite("AvResult 构造:" + ex.Message);
            }
        }
Example #8
0
        /// <summary>
        /// av 型
        /// </summary>
        public void AvResult2(string avres, int price, int distance, bool avh)
        {
            try
            {
                m_price    = price;
                m_distance = distance;

                IsAvReturnString = true;
                string[] sp = new string[16];//分割符为"\ni"
                for (int i = 0; i < 8; ++i)
                {
                    int itemp = i + 1;
                    sp[i]     = "\n" + itemp.ToString();
                    sp[i + 8] = "\r\n" + itemp.ToString();
                }
                string[] avSeg = avres.Split(sp, StringSplitOptions.RemoveEmptyEntries);
                nSegs = avSeg.Length - 1;
                //"27JUL(THU) WUHHKG\n"
                string str_date = avSeg[0].Trim().Split(' ')[0];
                int    lPos     = str_date.IndexOf('(');
                if (lPos >= 0)
                {
                    str_date = str_date.Substring(0, lPos);           //27JUL or 27JUL08
                }
                m_date   = BaseFunc.str2datetime(str_date, true);
                m_fromto = avSeg[0].Trim().Split(' ')[1];                                                                      //------2

                si = new SegmentInfomation[nSegs];


                for (int i = 0; i < nSegs; ++i)
                {
                    si[i]         = new SegmentInfomation();
                    si[i].context = avSeg[i + 1];
                    string[] siSplit;
                    if (avh)
                    {
                        siSplit = si[i].context.Split(new string[] { "\n " }, StringSplitOptions.RemoveEmptyEntries);
                    }
                    else
                    {
                        siSplit = si[i].context.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
                    }
                    si[i].b_directly = (siSplit.Length == 1);
                    si[i].fi         = new FlightInformation[siSplit.Length];
                    for (int j = 0; j < siSplit.Length; j++)
                    {
                        int id = i + 1;
                        if (avh)
                        {
                            si[i].fi[j] = new FlightInformation(siSplit[j], id, m_price);//这里av与avh不一样
                        }
                        else
                        {
                            si[i].fi[j] = new FlightInformation(siSplit[j], id, m_price, false);//这里av与avh不一样
                        }
                        si[i].fi[j].a_rebates = (EagleString.egString.LargeThan420(m_date) ? EagleFileIO.arrayOfRebate2 : EagleFileIO.arrayOfRebate);
                        if (si[i].b_directly)
                        {
                            m_flights.Add(si[i].fi[j].info_Flight);
                            m_bunks_lowest.Add(si[i].fi[j].info_Bunk_Lowest);
                        }
                    }
                }

                avstring = EagleString.egString.trim(avres);
            }
            catch
            {
                IsAvReturnString = false;
            }
        }