Esempio n. 1
0
        /// <summary>
        /// Recibe una apuesta poceada de Combinada y la empaqueta
        /// </summary>

        /// <summary>
        /// Convierte el mensaje a array de bytes.
        /// </summary>
        /// <param name="cabecera">Título de mensaje</param>
        static public byte[] EmpaquetaQuiniela(TransacQuinielaH cabecera, TransacQuinielaB juegos)
        {
            //header
            byte[] pacHeader = DataConverter.Pack("^bbbSSbbbSbbbb", 0x80, 0x00, 0x01, cabecera.Sorteo, cabecera.NroSecuencia, cabecera.Entes, cabecera.FechaHora.Day,
                                                  cabecera.FechaHora.Month, cabecera.FechaHora.Year, cabecera.FechaHora.Hour, cabecera.FechaHora.Minute, cabecera.FechaHora.Second, cabecera.CantApu);
            byte[] pacSal1  = new byte[1024];
            int    paqIndex = pacHeader.Length;

            Array.Copy(pacHeader, pacSal1, paqIndex);

            //bodys
            int limiteApu = 0;

            for (int i = 0; i < cabecera.CantApu; i++)
            {
                if (juegos.TipoApuesta[i] == 6 && limiteApu < 6)
                {
                    byte[] apuesta = Conversiones.IntToBCD(Convert.ToUInt16(juegos.NumeroAp1[i]), juegos.NumeroAp1[i].Length);
                    byte[] pacBody = DataConverter.Pack("^bbbbbS", juegos.TipoApuesta[i], apuesta[0], apuesta[1], juegos.RangoDesde1[i], juegos.RangoHasta1[i], juegos.Importe[i]);
                    Array.Copy(pacBody, 0, pacSal1, paqIndex, 7);
                    limiteApu++;
                    paqIndex = paqIndex + 7;
                }
                else if (juegos.TipoApuesta[i] == 7 && limiteApu < 6)
                {
                    byte[] apuesta1 = Conversiones.IntToBCD(Convert.ToUInt16(juegos.NumeroAp1[i]), juegos.NumeroAp1[i].Length);
                    byte[] apuesta2 = Conversiones.IntToBCD(Convert.ToUInt16(juegos.NumeroAp2[i]), juegos.NumeroAp2[i].Length);
                    byte[] pacBody  = DataConverter.Pack("^bbbbbSbbbb", juegos.TipoApuesta[i], apuesta1[0], apuesta1[1], juegos.RangoDesde1[i], juegos.RangoHasta1[i], juegos.Importe[i], apuesta2[0], apuesta2[1], juegos.RangoDesde2[i], juegos.RangoHasta2[i]);
                    Array.Copy(pacBody, 0, pacSal1, paqIndex, 11);
                    limiteApu = limiteApu + 2;
                    //i++;
                    paqIndex = paqIndex + 11;
                }
                else if (juegos.TipoApuesta[i] == 11 && limiteApu < 7)
                {
                    byte[] apuesta1 = Conversiones.IntToBCD(Convert.ToUInt16(juegos.NumeroAp1[i]), juegos.NumeroAp1[i].Length);
                    byte[] apuesta2 = Conversiones.IntToBCD(Convert.ToUInt16(juegos.NumeroAp2[i]), juegos.NumeroAp2[i].Length);
                    byte[] apuesta3 = Conversiones.IntToBCD(Convert.ToUInt16(juegos.NumeroAp3[i]), juegos.NumeroAp3[i].Length);
                    byte[] pacBody  = new byte[7];

                    pacBody = DataConverter.Pack("^bbbbbS", juegos.TipoApuesta[i], apuesta1[1], apuesta2[1], apuesta3[1], 0xff, juegos.Importe[i]);

                    Array.Copy(pacBody, 0, pacSal1, paqIndex, 7);
                    limiteApu++;
                    paqIndex = paqIndex + 7;
                    //no se contempla la posibilidad de que halla error de datos, es decir, que un 7 o 6 sean cambiados por alguna razon
                }
                //aca se agregarian las otras apuestas
                if (limiteApu == 7)
                {
                    break;
                }
            }

            byte[] paqFinal = new byte[0];

            paqFinal = DataConverter.Pack("^I", ConstructorMenEnv.TARJETA);

            Array.Copy(paqFinal, 0, pacSal1, paqIndex, paqFinal.Length);
            paqIndex = paqIndex + paqFinal.Length;

            byte[] cds = { 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd };//TO DO - CDs necesarios NO BORRAR / averiguar porque los necesita
            Array.Copy(cds, 0, pacSal1, paqIndex, 8);
            paqIndex = paqIndex + 8;

            Array.Resize(ref pacSal1, paqIndex);
            pacSal1[1] = Convert.ToByte(paqIndex - 12);

            TransacManager.ProtoConfig.PROTOCOLO = pacSal1;
            //ComunicacionOffline.PROTOCOLO = pacSal1;
            Array.Resize(ref TransacManager.ProtoConfig.PROTOCOLO, pacSal1.Length - 12);
            //Array.Resize(ref ComunicacionOffline.PROTOCOLO, pacSal1.Length - 12);

            // Y colocar Ref en la definicion de parametros de este metodo //LibreriaClases.Clases.TransacQuinielaH.Protocolo = pacSal1;
            return(pacSal1);
        }