예제 #1
0
        public static byte[] crearP_QM(TransacQuinielaH cabecera, TransacQuinielaB juegos)// Quiniela Multiple
        {
            byte[] tipoMsg   = DataConverter.Pack("^$8", "P");
            byte[] protocolo = ProtocoloApuesta.EmpaquetaQuiniela(cabecera, juegos);

            byte[] paq = new byte[tipoMsg.Length + protocolo.Length];

            Array.Copy(tipoMsg, paq, tipoMsg.Length);
            Array.Copy(protocolo, 0, paq, tipoMsg.Length, protocolo.Length);

            //paq.Skip(1).Take(paq.Length - 13).ToArray();

            //Comunicacion.PROTOCOLO = protocolo;
            //Array.Resize(ref Comunicacion.PROTOCOLO, protocolo.Length - 12);

            return(paq);
        }
예제 #2
0
        public static IList recibeMensajeQ2(byte[] byteRec)
        {
            Array.Resize(ref byteRec, 29);
            Error err = new Error();

            err.CodError = (uint)Conversiones.AgregaDigito16(byteRec, 2); //Cod. de error

            IList objsQ2 = new List <object>();

            objsQ2.Add(err);

            byte tipoTrans = (byte)Conversiones.AgregaDigito(byteRec, 1);


            TransacQuinielaH transaccRta = new TransacQuinielaH();                  // En esta clase se llenan campos que no se llenaron al enviarla.

            Conversiones.AgregaCadena(byteRec, 0, 1);                               //Letra "Q"
            transaccRta.TipoTransacc = (byte)Conversiones.AgregaDigito(byteRec, 1); //Tipo de transacción


            transaccRta.id_transacc = Convert.ToUInt32(Conversiones.AgregaCadena(byteRec, 4, 18));     //Id ticket

            transaccRta.id_ticket = Transformar.GenerateTicketIdst((transaccRta.id_transacc));

            transaccRta.Timehost = new DateTime(Conversiones.AgregaDigito16(byteRec, 24), Conversiones.AgregaDigito(byteRec, 23),
                                                Conversiones.AgregaDigito(byteRec, 22), Conversiones.AgregaDigito(byteRec, 26), Conversiones.AgregaDigito(byteRec, 27),
                                                Conversiones.AgregaDigito(byteRec, 28));

            //Certificado ft = new Certificado();

            transaccRta.Protocolo = TransacManager.ProtoConfig.PROTOCOLO;
            //Si se le pasa con CDs y TARJETA no funciona, aunque pasemos la longitud del protocolo sin contar los CDs y
            //TARJETA, da la misma excepcion de incompatibilidad de longitudes.
            //ft.CertificadoQuiniela(Comunicacion.PROTOCOLO, Comunicacion.CLAVE_TARJETA, Comunicacion, ref transaccRta.Certificado, (int)EnumCertificado.TIPOCHECK,
            //    new QuinielaCheck());

            objsQ2.Add(transaccRta);


            return(objsQ2);
        }
예제 #3
0
        static void Main(string[] args)
        {
            BaseConfig bc = new BaseConfig();

            #region //Prueba de QUINIELA

            TransacQuinielaB jue = new TransacQuinielaB();
            jue.TipoApuesta = new byte[] { 0x06, 0x06, 0x07, 0x06, 0x0b };
            jue.NumeroAp1 = new string[] { "0233", "077", "12", "2411", "33" };
            jue.RangoDesde1 = new byte[] { 0x01, 0x01, 0x01, 0x01, 0x00 };
            jue.RangoHasta1 = new byte[] { 0x01, 0x01, 0x05, 0x14, 0x00 };
            jue.NumeroAp2 = new string[] { null, null, "34", null, "77" };
            jue.NumeroAp3 = new string[] { null, null, null, null, "12" };
            jue.RangoDesde2 = new byte[] { 0x00, 0x00, 0x01, 0x00, 0x00 };
            jue.RangoHasta2 = new byte[] { 0x00, 0x00, 0x0a, 0x00, 0x00 };
            jue.Importe = new ushort[] { 300, 600, 300, 400, 200 };//en centavos

            //jue.TipoApuesta = new byte[] { 0x06, 0x07 };
            //jue.NumeroAp1 = new string[] { "12", "21" };
            //jue.RangoDesde1 = new byte[] { 0x01, 0x01 };
            //jue.RangoHasta1 = new byte[] { 0x01, 0x01 };
            //jue.NumeroAp2 = new string[] { null, "45" };
            //jue.NumeroAp3 = new string[] { null, null };
            //jue.RangoDesde2 = new byte[] { 0x00, 0x01 };
            //jue.RangoHasta2 = new byte[] { 0x00, 0x05 };
            //jue.Importe = new ushort[] { 1000, 1000 };//en centavos

            #endregion

            try
            {
                Opera opera = new Opera();
                ArchivoConfig lee = new ArchivoConfig();

                Errorof errConfig = opera.LeeArchivo(ref lee);
                Error errBConfig = bc.LeeBaseConfig(ref bc);

                if (errConfig.Error != 0)
                {
                    lee = new ArchivoConfig();

                    #region //PARAMETROS CONFIGURACION PARA CONFIG
                    bc.Terminal = 80732555;//1300000006;
                    bc.Tarjeta = 19511;//50026;
                    bc.TerminalModelo = EnumTerminalModelo.TML;
                    bc.MAC = new byte[] { 0x15, 0xBE, 0x07, 0x91, 0xFD, 0x32, 0xA4, 0xB3 };//{ 0x8b, 0x3d, 0x39, 0xff, 0x6a, 0xdd, 0x16, 0xb8 };//{ 0x5e, 0x01, 0xd2, 0x69, 0x78, 0x8b, 0x7d, 0x02 }; { 0xa0, 0xca, 0x14, 0x1d, 0xba, 0xdf, 0x7b, 0x44 };
                    bc.MsgMAC = new byte[] { 0x00, 0x91, 0x00, 0x07, 0x00, 0x32, 0xBE, 0xB3, 0x00, 0x15, 0xFD, 0xA4};
                    //lee.EncryptMAC = mac;//new byte[] { 0x00 };

                    lee.ImpresoraReportes = "impresoraPDF";
                    lee.ImpresoraTicket = "THERMAL Receipt Printer";

                    lee.MaskEscape = 0xfc;

                    //lee.MaskEnmascara = new byte[] { 0x01, 0x03, 0xfc };
                    //lee.MaskDesenmascara = new byte[] { 0x06, 0x07, 0x05 };

                    lee.MaskEnmascara = new byte[] { 0x01, 0x03, 0x04, 0x10, 0x1e, 0x9e, 0xfc, 0x83, 0x84, 0x0d, 0x8d, 0x90, 0xff };
                    lee.MaskDesenmascara = new byte[] { 0x06, 0x07, 0xdd, 0x0a, 0x09, 0x41, 0x05, 0xde, 0xdf, 0x15, 0x11, 0x0b, 0x08 };

                    lee.LogPath = "C:\\BetmakerTP\\Logs\\";
                    lee.LogFileName = "LogDisp.lg";
                    lee.LogMaxFileSize = 10485760;
                    lee.NumeringWithSecuential = false;
                    lee.LevelLog = EnumMessageType.DEBUG;

                    lee.IpTerminal = IPAddress.Parse("133.61.1.12");
                    lee.IpMask = IPAddress.Parse("255.255.0.0");
                    lee.DW = IPAddress.Parse("133.61.1.30");
                    lee.DNS = IPAddress.Parse("133.61.1.194");

                    lee.PathPRN = "C:\\BetmakerTP\\Conexion\\";
                    lee.ArchivoPRN = "ArchivoPRN.xml";
                    lee.DefaultServer = IPAddress.Parse("133.61.1.71");
                    lee.Host = "Win7x86";
                    lee.Port = 9950; //MENDOZA
                    lee.Telefono = "08006665807";

                    lee.PCName = "PCjorge";

                    lee.FTPServer = IPAddress.Parse("133.61.1.195");
                    lee.FTPport = 21;
                    lee.FTPUser = "******";
                    lee.FTPPassword = "******";
                    lee.FTPWorkingDirectory = "Reportes";

                    #endregion

                    //opera.GeneraArchivo(archivo, lee);
                }

                #region //Prueba de paquete A
                Terminal paqA = new Terminal();
                var entrada = new BaseConfig();
                var salida = bc.LeeBaseConfig(ref entrada);

                if (salida.CodError != 0)
                {
                    Exception ex = new Exception(salida.Descripcion);
                    throw ex;
                }
                else
                {
                    paqA.Tarjeta = entrada.Tarjeta;
                    paqA.NumeroTerminal = entrada.Terminal;
                    paqA.MacTarjeta = entrada.MsgMAC;
                }

                byte[] mac = new byte[] { 0xdf, 0x72, 0x0f, 0xae, 0xdf, 0xd4, 0xe9, 0x1e, 0xdf, 0x8e, 0x1f, 0x61 };//{ 0x00, 0xc2, 0x00, 0x71, 0x00, 0x09, 0xb3, 0x5a, 0x00, 0xde, 0xbf, 0x82 };//{  0x8e, 0xe9, 0x0f, 0x72, 0x1f, 0xd4, 0x61, 0x1e }      0xdf, , , 0xae, 0xdf, , , , 0xdf,,,  };

                //paqA.Tarjeta = lee.Tarjeta;//53164;//tarjeta  54781 //58977
                //paqA.NumeroTerminal = lee.Terminal;//terminal
                paqA.FechaHora = DateTime.Now;

                Version assemblyversion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
                paqA.Version = (ushort)((assemblyversion.Major * 1000) + (assemblyversion.Minor * 10) + (assemblyversion.Build));//version

                //paqA.MacTarjeta = lee.MsgMAC;//mac
                paqA.Tipo = EnumTerminalModelo.TML; //0x0c;

                #endregion

                MonedaJuego Monedas = new MonedaJuego();

                Comunicacion com = new Comunicacion(bc, lee);

                ProtocoloLib.TransacManager.ProtoConfig.CLAVE_TARJETA = BitConverter.GetBytes(0x8EE9AE721FD4611E).Reverse().ToArray();

                //Error errCxn = Comunicacion.AbrePuerto();

                Error errCxn = com.Conectar(paqA, EnumModoConexion.ETHERNET);
                Agente agente = new Agente();
                if (errCxn.CodError != 0)
                {
                    Console.Write("Error: " + errCxn.CodError);
                    Console.WriteLine(" " + errCxn.Descripcion + "\n");

                    Environment.Exit(0);
                }
                else
                {
                    IList objsRec = com.InteraccionAB(ref paqA);

                    TransaccionMSG mensaje;
                    if(objsRec.Count == 6)
                        mensaje = (TransaccionMSG)objsRec[5];

                    if (objsRec[1] is Agente)
                    {
                        agente = (Agente)objsRec[1];

                        Console.WriteLine("Agencia: " + agente.Nombre + "\nNúmero de Agencia: " + agente.Numero + "\n");
                        Error errOffline = new Error();
                    }

                    IList objsRec3 = new List<object>();
                    IList objsRec2 = new List<object>();

                    TransacQuinielaH cabeceraAnul = new TransacQuinielaH();
                    TransacQuinielaB cuerposAnul = new TransacQuinielaB();
                    AnulReimpQuiniela anulacionQ = new AnulReimpQuiniela();

                    TransacPoceado poceadoAnul = new TransacPoceado();
                    AnulReimpPoceado anulacionP = new AnulReimpPoceado();

                    if (objsRec.Count < 2 && objsRec[0] is Error)
                    {
                        Error err = (Error)objsRec[0];
                        if (err.CodError != 0)
                        {
                            Console.Write("Error: " + err.CodError);
                            Console.WriteLine(" " + err.Descripcion + "\n");

                        }
                    }
                    else if (objsRec.Count > 1)
                    {
                        bool validValue = false;
                        while (!validValue)
                        {
                            Console.WriteLine("Seleccione el tipo de mensaje: ");
                            Console.WriteLine("(1) Quiniela");
                            Console.WriteLine("(x) Salir");

                            ConsoleKeyInfo messageType = Console.ReadKey();
                            Console.WriteLine();

                            switch (messageType.KeyChar.ToString())
                            {
                                case "1":
                                    #region
                                    objsRec2 = com.InteraccionPQ1(PedidosSorteos.QUINIELA, Convert.ToUInt32(paqA.NumeroTerminal), EnumEstadoParametrosOff.HABILITADO);
                                    if (objsRec2.Count > 0 && objsRec2[0] != null && objsRec2[0] is Error)
                                    {
                                        Error psQErr = (Error)objsRec2[0];
                                        if (psQErr.CodError != 0)
                                        {
                                            Console.Write("Error: " + psQErr.CodError);
                                            Console.WriteLine(" " + psQErr.Descripcion + "\n");
                                        }
                                        else if (objsRec[1] is Agente && objsRec2[1] is ParamSorteoQuiniela)
                                        {
                                            psQErr = (Error)objsRec2[0];
                                            if (psQErr.CodError != 0)
                                            {
                                                Console.Write("Error: " + psQErr.CodError);
                                                Console.WriteLine(" " + psQErr.Descripcion + "\n");
                                            }
                                            else if (objsRec[1] is Agente && objsRec2[1] is ParamSorteoQuiniela)
                                            {

                                                ParamSorteoQuiniela psQ = (ParamSorteoQuiniela)objsRec2[1];
                                                TransacQuinielaH cabecera = new TransacQuinielaH();

                                                cabecera.Sorteo = (ushort)psQ.SorteosNumeros[0];
                                                cabecera.FechaHora = DateTime.Now;
                                                cabecera.NroSecuencia = 1;
                                                //cabecera.Entes = psQ.SorteoBmpEntes[0];
                                                byte[] byteEnte = {1,2,3};
                                                //byte[] bt = Conversiones.SeteaBits(byteEnte, 1, true);
                                                //cabecera.Entes = bt[0];
                                                cabecera.CantApu = 5;

                                                objsRec3 = com.InteraccionPQ2(cabecera, jue, PedidosSorteos.QUINIELA);
                                                if (objsRec3[0] != null && objsRec3[0] is Error)
                                                {
                                                    Error TransErr = (Error)objsRec3[0];
                                                    if (TransErr.CodError != 0)
                                                    {
                                                        Console.Write("Error: " + TransErr.CodError);
                                                        Console.WriteLine(" " + TransErr.Descripcion + "\n");
                                                    }
                                                    else if (objsRec3[1] is TransacQuinielaH)
                                                    {
                                                        TransacQuinielaH transRta = (TransacQuinielaH)objsRec3[1];
                                                        //certifica.CertificadoQuiniela(transRta.Protocolo, bc.MAC, (int)paqA.Tarjeta, (int)paqA.NumeroTerminal, ref transRta.Certificado);

                                                        LogBMTP.LogBuffer(byteToChar(transRta.Protocolo), "Test LoggeLib", transRta.Protocolo.Length, EnumNivelLog.Trace);

                                                        Console.WriteLine("Número de apuesta de QUINIELA: " + transRta.id_ticket + "\n");
                                                        Console.WriteLine("Número de certificado: " + transRta.Certificado + "\n");
                                                        Console.WriteLine("Fecha y hora de Host: " + transRta.Timehost + "\n");

                                                        cabeceraAnul.id_ticket = transRta.id_ticket;
                                                        cabeceraAnul.Certificado = transRta.Certificado;
                                                        cabeceraAnul.TipoTransacc = transRta.TipoTransacc;
                                                    }
                                                }
                                            }
                                        }
                                    }
                                    validValue = false;
                                    break;
                                    #endregion
                            }
                        }

                        validValue = false;

                        while (!validValue)
                        {
                            Console.WriteLine("(x) Salir");

                            ConsoleKeyInfo messageType = Console.ReadKey();
                            Console.WriteLine();
                            Error err = new Error();

                            switch (messageType.KeyChar.ToString())
                            {
                                case "x":
                                case "X":
                                    com.Desconectar(false);
                                    Environment.Exit(0);
                                    validValue = true;
                                    break;
                                default:
                                    Console.WriteLine("Debe seleccionar un valor válido. Seleccionó: " + messageType.KeyChar.ToString());
                                    validValue = false;
                                    break;
                            }
                        }
                    }
                }
            }
            catch(Exception e)
            {
                Console.WriteLine("Exception: {0}", e.ToString());
            }
        }
예제 #4
0
        public static IList recibeMensajeQ2(byte[] byteRec)
        {
            Array.Resize(ref byteRec, 29);
            Error err = new Error();
            err.CodError = (uint)Conversiones.AgregaDigito16(byteRec, 2); //Cod. de error

            IList objsQ2 = new List<object>();
            objsQ2.Add(err);

            byte tipoTrans = (byte)Conversiones.AgregaDigito(byteRec, 1);

                TransacQuinielaH transaccRta = new TransacQuinielaH();// En esta clase se llenan campos que no se llenaron al enviarla.

                Conversiones.AgregaCadena(byteRec, 0, 1); //Letra "Q"
                transaccRta.TipoTransacc = (byte)Conversiones.AgregaDigito(byteRec, 1); //Tipo de transacción

                transaccRta.id_transacc = Convert.ToUInt32(Conversiones.AgregaCadena(byteRec, 4, 18)); //Id ticket

                transaccRta.id_ticket = Transformar.GenerateTicketIdst((transaccRta.id_transacc));

                transaccRta.Timehost = new DateTime(Conversiones.AgregaDigito16(byteRec, 24), Conversiones.AgregaDigito(byteRec, 23),
                    Conversiones.AgregaDigito(byteRec, 22), Conversiones.AgregaDigito(byteRec, 26), Conversiones.AgregaDigito(byteRec, 27),
                    Conversiones.AgregaDigito(byteRec, 28));

                //Certificado ft = new Certificado();

                transaccRta.Protocolo = TransacManager.ProtoConfig.PROTOCOLO;
                //Si se le pasa con CDs y TARJETA no funciona, aunque pasemos la longitud del protocolo sin contar los CDs y
                //TARJETA, da la misma excepcion de incompatibilidad de longitudes.
                //ft.CertificadoQuiniela(Comunicacion.PROTOCOLO, Comunicacion.CLAVE_TARJETA, Comunicacion, ref transaccRta.Certificado, (int)EnumCertificado.TIPOCHECK,
                //    new QuinielaCheck());

                objsQ2.Add(transaccRta);

            return objsQ2;
        }
예제 #5
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);
        }
예제 #6
0
        /// <summary>
        /// Convierte array de bytes en mensaje
        /// </summary>
        /// <param name="byteRec"> Buffer de bytes a interpretar </param>
        /// <returns></returns>
        static public IList DesempaquetaQuiniela(byte[] byteRec)
        {
            TransacManager.ProtoConfig.PROTOCOLO = byteRec;
            Array.Resize(ref TransacManager.ProtoConfig.PROTOCOLO, byteRec.Length);

            Error err = new Error();
            byte  cantApu;

            byte[] apuesta1  = new byte[2];
            byte[] apuesta2  = new byte[2];
            byte[] apuesta3  = new byte[1];
            int    limiteApu = 0;
            int    paqIndex  = 0;

            // Header
            //-------
            TransacQuinielaH transaccRtaH = new TransacQuinielaH();

            transaccRtaH.TipoTransacc = (byte)Conversiones.AgregaDigito(byteRec, 0);     // Tipo de Transacción
            transaccRtaH.Sorteo       = (ushort)Conversiones.AgregaDigito16(byteRec, 3); // Sorteo
            transaccRtaH.NroSecuencia = (uint)Conversiones.AgregaDigito16(byteRec, 5);   // Nro Secuencia
            transaccRtaH.Entes        = (byte)Conversiones.AgregaDigito(byteRec, 7);     // Entes

            // Fecha Completa
            int dia     = (int)Conversiones.AgregaDigito(byteRec, 8);    // Dia
            int mes     = (int)Conversiones.AgregaDigito(byteRec, 9);    // Mes
            int anio    = (int)Conversiones.AgregaDigito16(byteRec, 10); // Año
            int hora    = (int)Conversiones.AgregaDigito(byteRec, 12);   // Hora
            int minuto  = (int)Conversiones.AgregaDigito(byteRec, 13);   // Minutos
            int segundo = (int)Conversiones.AgregaDigito(byteRec, 14);   // Segundos

            DateTime fecha = new DateTime(anio, mes, dia, hora, minuto, segundo);

            transaccRtaH.FechaHora = fecha;

            cantApu = (byte)Conversiones.AgregaDigito(byteRec, 15); // Cantidad de apuestas

            transaccRtaH.CantApu = cantApu;

            // Bodys
            //------
            TransacQuinielaB transaccRtaB = new TransacQuinielaB();

            transaccRtaB.NumeroAp1   = new string[cantApu];
            transaccRtaB.NumeroAp2   = new string[cantApu];
            transaccRtaB.NumeroAp3   = new string[cantApu];
            transaccRtaB.RangoDesde1 = new byte[cantApu];
            transaccRtaB.RangoDesde2 = new byte[cantApu];
            transaccRtaB.RangoHasta1 = new byte[cantApu];
            transaccRtaB.RangoHasta2 = new byte[cantApu];
            transaccRtaB.TipoApuesta = new byte[cantApu];
            transaccRtaB.Importe     = new ushort[cantApu];

            for (int i = 0; i < cantApu; i++)
            {
                apuesta1 = new byte[2];
                apuesta2 = new byte[2];
                apuesta3 = new byte[1];

                transaccRtaB.TipoApuesta[i] = (byte)Conversiones.AgregaDigito(byteRec, 16 + paqIndex);     // Tipo de Apuesta

                // Directa
                if (transaccRtaB.TipoApuesta[i] == 6 && limiteApu < 6)
                {
                    apuesta1[0] = (byte)Conversiones.AgregaDigito(byteRec, 17 + paqIndex);
                    apuesta1[1] = (byte)Conversiones.AgregaDigito(byteRec, 18 + paqIndex);

                    transaccRtaB.NumeroAp1[i]   = Conversiones.BCDtoString(apuesta1);                          // Numero Apostado 1
                    transaccRtaB.RangoDesde1[i] = (byte)Conversiones.AgregaDigito(byteRec, 19 + paqIndex);     // Rango Desde
                    transaccRtaB.RangoHasta1[i] = (byte)Conversiones.AgregaDigito(byteRec, 20 + paqIndex);     // Rango Hasta
                    transaccRtaB.Importe[i]     = (ushort)Conversiones.AgregaDigito16(byteRec, 21 + paqIndex); // Importe

                    limiteApu++;
                    paqIndex += 7;
                }

                // Redoblona
                if (transaccRtaB.TipoApuesta[i] == 7 && limiteApu < 6)
                {
                    apuesta1[0] = (byte)Conversiones.AgregaDigito(byteRec, 17 + paqIndex);
                    apuesta1[1] = (byte)Conversiones.AgregaDigito(byteRec, 18 + paqIndex);

                    transaccRtaB.NumeroAp1[i]   = Conversiones.BCDtoString(apuesta1);                          // Numero Apostado 1
                    transaccRtaB.RangoDesde1[i] = (byte)Conversiones.AgregaDigito(byteRec, 19 + paqIndex);     // Rango Desde 1
                    transaccRtaB.RangoHasta1[i] = (byte)Conversiones.AgregaDigito(byteRec, 20 + paqIndex);     // Rango Hasta 1
                    transaccRtaB.Importe[i]     = (ushort)Conversiones.AgregaDigito16(byteRec, 21 + paqIndex); // Importe

                    apuesta2[0] = (byte)Conversiones.AgregaDigito(byteRec, 23 + paqIndex);
                    apuesta2[1] = (byte)Conversiones.AgregaDigito(byteRec, 24 + paqIndex);

                    transaccRtaB.NumeroAp2[i]   = Conversiones.BCDtoString(apuesta2);                      // Numero Apostado 2
                    transaccRtaB.RangoDesde2[i] = (byte)Conversiones.AgregaDigito(byteRec, 25 + paqIndex); // Rango Desde 2
                    transaccRtaB.RangoHasta2[i] = (byte)Conversiones.AgregaDigito(byteRec, 26 + paqIndex); // Rango Hasta 2

                    limiteApu += 2;
                    paqIndex  += 11;
                }


                // Poceada (toma 2 digitos de los 3 nros mas grandes apostados, ordenados de mayor a menor)
                if (transaccRtaB.TipoApuesta[i] == 11 && limiteApu < 7)
                {
                    // Toma solo los dos digitos menos significativos
                    Array.Resize(ref apuesta1, 1);
                    Array.Resize(ref apuesta2, 1);

                    // Poceada no maneja rangos
                    Array.Resize(ref transaccRtaB.RangoDesde1, cantApu - 1);
                    Array.Resize(ref transaccRtaB.RangoHasta1, cantApu - 1);
                    Array.Resize(ref transaccRtaB.RangoDesde2, cantApu - 1);
                    Array.Resize(ref transaccRtaB.RangoHasta2, cantApu - 1);

                    apuesta1[0] = (byte)Conversiones.AgregaDigito(byteRec, 17 + paqIndex);
                    transaccRtaB.NumeroAp1[i] = Conversiones.BCDtoString(apuesta1);                        // Numero Apostado 1

                    apuesta2[0] = (byte)Conversiones.AgregaDigito(byteRec, 18 + paqIndex);
                    transaccRtaB.NumeroAp2[i] = Conversiones.BCDtoString(apuesta2);                        // Numero Apostado 2

                    apuesta3[0] = (byte)Conversiones.AgregaDigito(byteRec, 19 + paqIndex);
                    transaccRtaB.NumeroAp3[i] = Conversiones.BCDtoString(apuesta3);                        // Numero Apostado 3

                    transaccRtaB.Importe[i] = (ushort)Conversiones.AgregaDigito16(byteRec, 21 + paqIndex); // Importe

                    limiteApu++;
                    paqIndex += 7;
                }
            }

            IList paq = new List <object> {
                err, transaccRtaH, transaccRtaB
            };

            return(paq);
        }
예제 #7
0
        /// <summary>
        /// Convierte array de bytes en mensaje
        /// </summary>
        /// <param name="byteRec"> Buffer de bytes a interpretar </param>
        /// <returns></returns>
        public static IList DesempaquetaQuiniela(byte[] byteRec)
        {
            TransacManager.ProtoConfig.PROTOCOLO = byteRec;
            Array.Resize(ref TransacManager.ProtoConfig.PROTOCOLO, byteRec.Length);

            Error err = new Error();
            byte cantApu;
            byte[] apuesta1 = new byte[2];
            byte[] apuesta2 = new byte[2];
            byte[] apuesta3 = new byte[1];
            int limiteApu = 0;
            int paqIndex = 0;

            // Header
            //-------
            TransacQuinielaH transaccRtaH = new TransacQuinielaH();

            transaccRtaH.TipoTransacc = (byte)Conversiones.AgregaDigito(byteRec, 0); // Tipo de Transacción
            transaccRtaH.Sorteo = (ushort)Conversiones.AgregaDigito16(byteRec, 3); // Sorteo
            transaccRtaH.NroSecuencia = (uint)Conversiones.AgregaDigito16(byteRec, 5); // Nro Secuencia
            transaccRtaH.Entes = (byte)Conversiones.AgregaDigito(byteRec, 7); // Entes

            // Fecha Completa
            int dia = (int)Conversiones.AgregaDigito(byteRec, 8); // Dia
            int mes = (int)Conversiones.AgregaDigito(byteRec, 9); // Mes
            int anio = (int)Conversiones.AgregaDigito16(byteRec, 10); // Año
            int hora = (int)Conversiones.AgregaDigito(byteRec, 12); // Hora
            int minuto = (int)Conversiones.AgregaDigito(byteRec, 13); // Minutos
            int segundo = (int)Conversiones.AgregaDigito(byteRec, 14); // Segundos

            DateTime fecha = new DateTime(anio, mes, dia, hora, minuto, segundo);
            transaccRtaH.FechaHora = fecha;

            cantApu = (byte)Conversiones.AgregaDigito(byteRec, 15); // Cantidad de apuestas

            transaccRtaH.CantApu = cantApu;

            // Bodys
            //------
            TransacQuinielaB transaccRtaB = new TransacQuinielaB();

            transaccRtaB.NumeroAp1 = new string[cantApu];
            transaccRtaB.NumeroAp2 = new string[cantApu];
            transaccRtaB.NumeroAp3 = new string[cantApu];
            transaccRtaB.RangoDesde1 = new byte[cantApu];
            transaccRtaB.RangoDesde2 = new byte[cantApu];
            transaccRtaB.RangoHasta1 = new byte[cantApu];
            transaccRtaB.RangoHasta2 = new byte[cantApu];
            transaccRtaB.TipoApuesta = new byte[cantApu];
            transaccRtaB.Importe = new ushort[cantApu];

            for (int i = 0; i < cantApu; i++)
            {
                apuesta1 = new byte[2];
                apuesta2 = new byte[2];
                apuesta3 = new byte[1];

                transaccRtaB.TipoApuesta[i] = (byte)Conversiones.AgregaDigito(byteRec, 16 + paqIndex);     // Tipo de Apuesta

                // Directa
                if (transaccRtaB.TipoApuesta[i] == 6 && limiteApu < 6)
                {
                    apuesta1[0] = (byte)Conversiones.AgregaDigito(byteRec, 17 + paqIndex);
                    apuesta1[1] = (byte)Conversiones.AgregaDigito(byteRec, 18 + paqIndex);

                    transaccRtaB.NumeroAp1[i] = Conversiones.BCDtoString(apuesta1);                        // Numero Apostado 1
                    transaccRtaB.RangoDesde1[i] = (byte)Conversiones.AgregaDigito(byteRec, 19 + paqIndex); // Rango Desde
                    transaccRtaB.RangoHasta1[i] = (byte)Conversiones.AgregaDigito(byteRec, 20 + paqIndex); // Rango Hasta
                    transaccRtaB.Importe[i] = (ushort)Conversiones.AgregaDigito16(byteRec, 21 + paqIndex); // Importe

                    limiteApu++;
                    paqIndex += 7;
                }

                // Redoblona
                if (transaccRtaB.TipoApuesta[i] == 7 && limiteApu < 6)
                {
                    apuesta1[0] = (byte)Conversiones.AgregaDigito(byteRec, 17 + paqIndex);
                    apuesta1[1] = (byte)Conversiones.AgregaDigito(byteRec, 18 + paqIndex);

                    transaccRtaB.NumeroAp1[i] = Conversiones.BCDtoString(apuesta1);                        // Numero Apostado 1
                    transaccRtaB.RangoDesde1[i] = (byte)Conversiones.AgregaDigito(byteRec, 19 + paqIndex); // Rango Desde 1
                    transaccRtaB.RangoHasta1[i] = (byte)Conversiones.AgregaDigito(byteRec, 20 + paqIndex); // Rango Hasta 1
                    transaccRtaB.Importe[i] = (ushort)Conversiones.AgregaDigito16(byteRec, 21 + paqIndex); // Importe

                    apuesta2[0] = (byte)Conversiones.AgregaDigito(byteRec, 23 + paqIndex);
                    apuesta2[1] = (byte)Conversiones.AgregaDigito(byteRec, 24 + paqIndex);

                    transaccRtaB.NumeroAp2[i] = Conversiones.BCDtoString(apuesta2);                        // Numero Apostado 2
                    transaccRtaB.RangoDesde2[i] = (byte)Conversiones.AgregaDigito(byteRec, 25 + paqIndex); // Rango Desde 2
                    transaccRtaB.RangoHasta2[i] = (byte)Conversiones.AgregaDigito(byteRec, 26 + paqIndex); // Rango Hasta 2

                    limiteApu += 2;
                    paqIndex += 11;
                }

                // Poceada (toma 2 digitos de los 3 nros mas grandes apostados, ordenados de mayor a menor)
                if (transaccRtaB.TipoApuesta[i] == 11 && limiteApu < 7)
                {
                    // Toma solo los dos digitos menos significativos
                    Array.Resize(ref apuesta1, 1);
                    Array.Resize(ref apuesta2, 1);

                    // Poceada no maneja rangos
                    Array.Resize(ref transaccRtaB.RangoDesde1, cantApu - 1);
                    Array.Resize(ref transaccRtaB.RangoHasta1, cantApu - 1);
                    Array.Resize(ref transaccRtaB.RangoDesde2, cantApu - 1);
                    Array.Resize(ref transaccRtaB.RangoHasta2, cantApu - 1);

                    apuesta1[0] = (byte)Conversiones.AgregaDigito(byteRec, 17 + paqIndex);
                    transaccRtaB.NumeroAp1[i] = Conversiones.BCDtoString(apuesta1);                        // Numero Apostado 1

                    apuesta2[0] = (byte)Conversiones.AgregaDigito(byteRec, 18 + paqIndex);
                    transaccRtaB.NumeroAp2[i] = Conversiones.BCDtoString(apuesta2);                        // Numero Apostado 2

                    apuesta3[0] = (byte)Conversiones.AgregaDigito(byteRec, 19 + paqIndex);
                    transaccRtaB.NumeroAp3[i] = Conversiones.BCDtoString(apuesta3);                        // Numero Apostado 3

                    transaccRtaB.Importe[i] = (ushort)Conversiones.AgregaDigito16(byteRec, 21 + paqIndex); // Importe

                    limiteApu++;
                    paqIndex += 7;
                }
            }

            IList paq = new List<object> { err, transaccRtaH, transaccRtaB };
            return paq;
        }
예제 #8
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>
        public static 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;
        }
예제 #9
0
        static void Main(string[] args)
        {
            BaseConfig bc = new BaseConfig();

            #region //Prueba de QUINIELA

            TransacQuinielaB jue = new TransacQuinielaB();
            jue.TipoApuesta = new byte[] { 0x06, 0x06, 0x07, 0x06, 0x0b };
            jue.NumeroAp1   = new string[] { "0233", "077", "12", "2411", "33" };
            jue.RangoDesde1 = new byte[] { 0x01, 0x01, 0x01, 0x01, 0x00 };
            jue.RangoHasta1 = new byte[] { 0x01, 0x01, 0x05, 0x14, 0x00 };
            jue.NumeroAp2   = new string[] { null, null, "34", null, "77" };
            jue.NumeroAp3   = new string[] { null, null, null, null, "12" };
            jue.RangoDesde2 = new byte[] { 0x00, 0x00, 0x01, 0x00, 0x00 };
            jue.RangoHasta2 = new byte[] { 0x00, 0x00, 0x0a, 0x00, 0x00 };
            jue.Importe     = new ushort[] { 300, 600, 300, 400, 200 };//en centavos

            //jue.TipoApuesta = new byte[] { 0x06, 0x07 };
            //jue.NumeroAp1 = new string[] { "12", "21" };
            //jue.RangoDesde1 = new byte[] { 0x01, 0x01 };
            //jue.RangoHasta1 = new byte[] { 0x01, 0x01 };
            //jue.NumeroAp2 = new string[] { null, "45" };
            //jue.NumeroAp3 = new string[] { null, null };
            //jue.RangoDesde2 = new byte[] { 0x00, 0x01 };
            //jue.RangoHasta2 = new byte[] { 0x00, 0x05 };
            //jue.Importe = new ushort[] { 1000, 1000 };//en centavos

            #endregion

            try
            {
                Opera         opera = new Opera();
                ArchivoConfig lee   = new ArchivoConfig();

                Errorof errConfig = opera.LeeArchivo(ref lee);
                if (errConfig.Error != 0)
                {
                    Console.WriteLine("Error al leer archivo de configuración.");
                    Console.ReadLine();
                }
                else
                {
                    lee.Port             = 20900;
                    lee.MaskDesenmascara = new byte[] { 0x06, 0x07, 0x05 };
                    lee.MaskEnmascara    = new byte[] { 0x01, 0x03, 0xfc };

                    IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());

                    for (int i = 0; i < ipHostInfo.AddressList.Length; i++)
                    {
                        if (ipHostInfo.AddressList[i].AddressFamily == AddressFamily.InterNetwork)
                        {
                            lee.DefaultServer = ipHostInfo.AddressList[i];
                            break;
                        }
                    }
                }

                Error errBConfig = bc.LeeBaseConfig(ref bc);
                bc.Tarjeta = 53772;

                if (errBConfig.CodError != 0)
                {
                    Console.WriteLine("Error al leer archivo base de configuración.");
                    Console.ReadLine();
                }


                #region //Prueba de paquete A
                Terminal paqA    = new Terminal();
                var      entrada = new BaseConfig();
                var      salida  = bc.LeeBaseConfig(ref entrada);

                if (salida.CodError != 0)
                {
                    Exception ex = new Exception(salida.Descripcion);
                    throw ex;
                }
                else
                {
                    paqA.Tarjeta        = entrada.Tarjeta;
                    paqA.NumeroTerminal = entrada.Terminal;
                    paqA.MacTarjeta     = entrada.MsgMAC;
                }



                byte[] mac = new byte[] { 0xdf, 0x72, 0x0f, 0xae, 0xdf, 0xd4, 0xe9, 0x1e, 0xdf, 0x8e, 0x1f, 0x61 };//{ 0x00, 0xc2, 0x00, 0x71, 0x00, 0x09, 0xb3, 0x5a, 0x00, 0xde, 0xbf, 0x82 };//{  0x8e, 0xe9, 0x0f, 0x72, 0x1f, 0xd4, 0x61, 0x1e }      0xdf, , , 0xae, 0xdf, , , , 0xdf,,,  };


                //paqA.Tarjeta = lee.Tarjeta;//53164;//tarjeta  54781 //58977
                //paqA.NumeroTerminal = lee.Terminal;//terminal
                paqA.FechaHora = DateTime.Now;

                Version assemblyversion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
                paqA.Version = (ushort)((assemblyversion.Major * 1000) + (assemblyversion.Minor * 10) + (assemblyversion.Build));//version

                //paqA.MacTarjeta = lee.MsgMAC;//mac
                paqA.Tipo = EnumTerminalModelo.TML; //0x0c;

                #endregion

                MonedaJuego Monedas = new MonedaJuego();

                Comunicacion com = new Comunicacion(bc, lee);

                ProtocoloLib.TransacManager.ProtoConfig.CLAVE_TARJETA = BitConverter.GetBytes(0x8EE9AE721FD4611E).Reverse().ToArray();

                //Error errCxn = Comunicacion.AbrePuerto();


                Error  errCxn = com.Conectar(paqA, EnumModoConexion.ETHERNET);
                Agente agente = new Agente();
                if (errCxn.CodError != 0)
                {
                    Console.Write("Error: " + errCxn.CodError);
                    Console.WriteLine(" " + errCxn.Descripcion + "\n");

                    Console.Read();
                    Environment.Exit(0);
                }
                else
                {
                    IList objsRec = com.InteraccionAB(ref paqA);

                    TransaccionMSG mensaje;
                    if (objsRec.Count == 6)
                    {
                        mensaje = (TransaccionMSG)objsRec[5];
                    }


                    if (objsRec[1] is Agente)
                    {
                        agente = (Agente)objsRec[1];

                        Console.WriteLine("Agencia: " + agente.Nombre + "\nNúmero de Agencia: " + agente.Numero + "\n");
                        Error errOffline = new Error();
                    }

                    IList objsRec3 = new List <object>();
                    IList objsRec2 = new List <object>();

                    TransacQuinielaH  cabeceraAnul = new TransacQuinielaH();
                    TransacQuinielaB  cuerposAnul  = new TransacQuinielaB();
                    AnulReimpQuiniela anulacionQ   = new AnulReimpQuiniela();

                    TransacPoceado   poceadoAnul = new TransacPoceado();
                    AnulReimpPoceado anulacionP  = new AnulReimpPoceado();

                    if (objsRec.Count < 2 && objsRec[0] is Error)
                    {
                        Error err = (Error)objsRec[0];
                        if (err.CodError != 0)
                        {
                            Console.Write("Error: " + err.CodError);
                            Console.WriteLine(" " + err.Descripcion + "\n");
                        }
                    }
                    else if (objsRec.Count > 1)
                    {
                        bool validValue = false;
                        while (!validValue)
                        {
                            Console.WriteLine("Seleccione el tipo de mensaje: ");
                            Console.WriteLine("(1) Quiniela");
                            Console.WriteLine("(x) Salir");

                            ConsoleKeyInfo messageType = Console.ReadKey();
                            Console.WriteLine();

                            switch (messageType.KeyChar.ToString())
                            {
                            case "1":
                                #region
                                objsRec2 = com.InteraccionPQ1(PedidosSorteos.QUINIELA, Convert.ToUInt32(paqA.NumeroTerminal), EnumEstadoParametrosOff.HABILITADO);
                                if (objsRec2.Count > 0 && objsRec2[0] != null && objsRec2[0] is Error)
                                {
                                    Error psQErr = (Error)objsRec2[0];
                                    if (psQErr.CodError != 0)
                                    {
                                        Console.Write("Error: " + psQErr.CodError);
                                        Console.WriteLine(" " + psQErr.Descripcion + "\n");
                                    }
                                    else if (objsRec[1] is Agente && objsRec2[1] is ParamSorteoQuiniela)
                                    {
                                        psQErr = (Error)objsRec2[0];
                                        if (psQErr.CodError != 0)
                                        {
                                            Console.Write("Error: " + psQErr.CodError);
                                            Console.WriteLine(" " + psQErr.Descripcion + "\n");
                                        }
                                        else if (objsRec[1] is Agente && objsRec2[1] is ParamSorteoQuiniela)
                                        {
                                            ParamSorteoQuiniela psQ      = (ParamSorteoQuiniela)objsRec2[1];
                                            TransacQuinielaH    cabecera = new TransacQuinielaH();

                                            cabecera.Sorteo       = (ushort)psQ.SorteosNumeros[0];
                                            cabecera.FechaHora    = DateTime.Now;
                                            cabecera.NroSecuencia = 1;
                                            //cabecera.Entes = psQ.SorteoBmpEntes[0];
                                            byte[] byteEnte = { 1, 2, 3 };
                                            //byte[] bt = Conversiones.SeteaBits(byteEnte, 1, true);
                                            //cabecera.Entes = bt[0];
                                            cabecera.CantApu = 5;


                                            objsRec3 = com.InteraccionPQ2(cabecera, jue, PedidosSorteos.QUINIELA);
                                            if (objsRec3[0] != null && objsRec3[0] is Error)
                                            {
                                                Error TransErr = (Error)objsRec3[0];
                                                if (TransErr.CodError != 0)
                                                {
                                                    Console.Write("Error: " + TransErr.CodError);
                                                    Console.WriteLine(" " + TransErr.Descripcion + "\n");
                                                }
                                                else if (objsRec3[1] is TransacQuinielaH)
                                                {
                                                    TransacQuinielaH transRta = (TransacQuinielaH)objsRec3[1];
                                                    //certifica.CertificadoQuiniela(transRta.Protocolo, bc.MAC, (int)paqA.Tarjeta, (int)paqA.NumeroTerminal, ref transRta.Certificado);

                                                    LogBMTP.LogBuffer(byteToChar(transRta.Protocolo), "Test LoggeLib", transRta.Protocolo.Length, EnumNivelLog.Trace);

                                                    Console.WriteLine("Número de apuesta de QUINIELA: " + transRta.id_ticket + "\n");
                                                    Console.WriteLine("Número de certificado: " + transRta.Certificado + "\n");
                                                    Console.WriteLine("Fecha y hora de Host: " + transRta.Timehost + "\n");

                                                    cabeceraAnul.id_ticket    = transRta.id_ticket;
                                                    cabeceraAnul.Certificado  = transRta.Certificado;
                                                    cabeceraAnul.TipoTransacc = transRta.TipoTransacc;
                                                }
                                            }
                                        }
                                    }
                                }
                                validValue = false;
                                break;
                                #endregion
                            }
                        }

                        validValue = false;

                        while (!validValue)
                        {
                            Console.WriteLine("(x) Salir");

                            ConsoleKeyInfo messageType = Console.ReadKey();
                            Console.WriteLine();
                            Error err = new Error();

                            switch (messageType.KeyChar.ToString())
                            {
                            case "x":
                            case "X":
                                com.Desconectar(false);
                                Environment.Exit(0);
                                validValue = true;
                                break;

                            default:
                                Console.WriteLine("Debe seleccionar un valor válido. Seleccionó: " + messageType.KeyChar.ToString());
                                validValue = false;
                                break;
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception: {0}", e.ToString());
            }
        }
예제 #10
0
        // Quiniela Multiple
        public static byte[] crearP_QM(TransacQuinielaH cabecera, TransacQuinielaB juegos)
        {
            byte[] tipoMsg = DataConverter.Pack("^$8", "P");
            byte[] protocolo = ProtocoloApuesta.EmpaquetaQuiniela(cabecera, juegos);

            byte[] paq = new byte[tipoMsg.Length + protocolo.Length];

            Array.Copy(tipoMsg, paq, tipoMsg.Length);
            Array.Copy(protocolo, 0, paq, tipoMsg.Length, protocolo.Length);

            //paq.Skip(1).Take(paq.Length - 13).ToArray();

            //Comunicacion.PROTOCOLO = protocolo;
            //Array.Resize(ref Comunicacion.PROTOCOLO, protocolo.Length - 12);

            return paq;
        }