예제 #1
0
        /*Constructor para enviar los datos del servicio considerando el objeto richText Box */

        public ConexionTCP(TcpClient clie, ConfiguracionServicio serviceConf, RichTextBox visor, AtmObj terminalObj, BddSQLServer conexion)
        {
            try
            {
                this.terminal       = terminalObj;
                cliente             = clie;
                stream              = new NetworkStream(cliente.Client);
                sincronico          = true;
                stream.ReadTimeout  = 10000; // Tiempo esperado para lectura
                stream.WriteTimeout = 10000; // Tiempo esperado para la escritura
                terminalArchivo     = new LecturaEscrituraArchivo();
                error = new LecturaEscrituraArchivo();
                terminalArchivo.archivo_guardar("MENSAGE_TERMINAL", terminal.codigo);
                error.archivo_guardar("ERROR", terminal.codigo);
                configurarServicio = serviceConf;
                //this.visor = visor;
                comadoToATM                   = new ComandoNdcTerminal();
                sincronico                    = true;
                enviarDato                    = false;
                conBdd                        = conexion;
                verificacionConexion          = new System.Timers.Timer();
                verificacionConexion.Elapsed += new System.Timers.ElapsedEventHandler(verificarConexion);
                verificacionConexion.Interval = segSondeo * 1000;
                verificacionConexion.Enabled  = true;
                verificacionConexion.Start();
                parseoAlrma                  = new ProcesamientoTrama(this.terminal);
                this.terminal.conexion       = true;
                this.terminal.modoSupervisor = false;
                conBdd.actualizar_terminal(this.terminal);// actualiza el estado a conectado
                mt                       = new MonitoreoDispositivos();
                mt.id_atm                = terminal.id_atm;
                mt.estado_gaveta1        = "0";
                mt.estado_gaveta2        = "0";
                mt.estado_gaveta3        = "0";
                mt.estado_gaveta4        = "0";
                mt.estado_gaveta5        = "0";
                mt.estado_impresora      = "0";
                mt.estado_impresora_jrnl = "0";
                mt.estado_dispensador    = "0";
                mt.estado_encriptora     = "0";
                mt.estado_lectora        = "0";
                mt.tipo_estado           = "C";
                conBdd.insertar_actualizar_monitoreo_dispositivos(mt); // Como incia conexion se rocede a encerar
                mt.tipo_estado = "S";
                conBdd.insertar_actualizar_monitoreo_dispositivos(mt); // Como incia conexion se rocede a encerar
                string parametroEnvio  = conBdd.obtenerParametro(3).valor;
                string parametroMsg    = conBdd.obtenerParametro(6).valor;
                string parametroCorreo = conBdd.obtenerParametro(1).valor;
                string pathGuardado    = conBdd.obtenerParametro(5).ToString();
                notificacion = new NotificacionEnviar(parametroCorreo.Split(':'), parametroMsg.Split(':'), pathGuardado, parametroEnvio.Split(':'));
            }
            catch (Exception ex)
            {
                error.escritura_archivo_string(ex.Message);
                //mensaje_error_sistema(ex.Message,Color.Red);
                this.terminal.conexion       = false;
                this.terminal.modoSupervisor = false;
                conBdd.actualizar_terminal(this.terminal);
            }
        }
예제 #2
0
        public void cerrar_conexion()
        {
            try
            {
                terminal.conexion = false;
                conBdd.actualizar_terminal(terminal);
                verificacionConexion.Enabled = false;
                verificacionConexion.Stop();
                sincronico       = false;
                clienteConectado = false;
                cliente.Close();
                stream.Close();
            }
            catch (NullReferenceException ex)
            {
                error.escritura_archivo_string("Error al cerrar conexion :" + ex.StackTrace);
            }
            catch (Exception ex)
            {
                error.escritura_archivo_string("Error al cerrar conexion" + ex.StackTrace);
            }

            /*try
             * {
             *  conBdd.cerrar_conexion_base();
             * }
             * catch (ExConexionBase ex)
             * {
             *  error.escritura_archivo_string("Error al cerrar conexion base datos" + ex.StackTrace);
             * }*/
        }
예제 #3
0
 public void ActualizarEstadoConexionTerminal()
 {
     foreach (AtmObj atm in atmsAutorizados)
     {
         atm.conexion = false;
         conBdd.actualizar_terminal(atm);
     }
 }
예제 #4
0
        public void aceptar_conexion()
        {
            try
            {
                IPlocal  = IPAddress.Parse(parametrosconfig.ip);
                servidor = new TcpListener(IPlocal, parametrosconfig.puerto);
                servidor.Start();
                opc = true;
                /*Monitorea el estado de la conexion*/
                hiloMonitor = new Thread((ThreadStart)verificarEstadoConexion);
                hiloMonitor.Start();
                /*Ingresa a un lazo repetitivo para validar esperar varias conexiones*/
                while (opc)
                {
                    cliente = servidor.AcceptTcpClient();
                    mensaje_error_sistema("Conexion ip " + cliente.Client.RemoteEndPoint.ToString().Split(':')[0] + " remota", Color.Blue);
                    AtmObj atmIng = verificarIpAutorizada(cliente.Client.RemoteEndPoint.ToString().Split(':')[0]);

                    if (atmIng != null)
                    {
                        //conBdd.abrir_conexion_base();
                        atmIng.conexion = true;
                        conBdd.actualizar_terminal(atmIng);
                        //conBdd.cerrar_conexion_base();
                        mensaje_error_sistema("Ip " + cliente.Client.RemoteEndPoint.ToString().Split(':')[0] + " remota - aceptada ", Color.Green);
                        ConexionTCP clien = new ConexionTCP(cliente, parametrosconfig, this.visor, atmIng, conBdd);
                        clien.datoIn   += new datoIngresoServicio(obtener_tramaIn);
                        clien.datoResp += new datoIngresoServicio(obtener_tramaRespuesta);
                        terminalesConectadas.Add(clien);
                        if (opc)
                        {
                            try
                            {
                                hiloServidor = new Thread((ThreadStart)clien.cliente_servicio);
                                hiloServidor.Start();
                            }
                            catch (Exception excli)
                            {
                                mensaje_error_sistema(excli.Message, Color.Red);
                            }
                        }
                    }
                    else
                    {
                        cliente.Close();
                        mensaje_error_sistema("No autorizada para conectarse ...", Color.Red);
                    }
                }
            }
            catch (SocketException ex)
            {
                mensaje_error_sistema(" " + ex.Message, Color.Red);
            }
            finally
            {
                servidor.Stop();
            }
        }
예제 #5
0
        public string control_guardar_actualizar_terminal(AtmObj terminal, bool actualizar)
        {
            conBdd.abrir_conexion_base();
            string mensaje = string.Empty;

            try
            {
                if (actualizar)
                {
                    conBdd.actualizar_terminal(terminal);
                    mensaje = "Actualizacion de datos terminal correcto";
                }
                else
                {
                    conBdd.insertar_atm(terminal);
                    mensaje = "Ingreso de nuevo terminal correcto";
                }
            }
            catch (ExInsertarRegistro ex)
            {
                logSistema.escritura_archivo_string(ex.Message);
                mensaje = ex.Message;
            }
            catch (ExActualizarRegistro ex)
            {
                logSistema.escritura_archivo_string(ex.Message);
                mensaje = ex.Message;
            }
            catch (Exception ex)
            {
                logSistema.escritura_archivo_string(ex.Message);
                mensaje = ex.Message;
            }
            finally
            {
                conBdd.cerrar_conexion_base();
            }
            return(mensaje);
        }
예제 #6
0
        public void cliente_servicio()
        {
            try
            {
                sincronico = true;
                AlarmasObj mensajeEnvioRecep = new AlarmasObj();
                this.comadoToATM.setPonerEnServicio();
                string datoEnvio     = this.comadoToATM.getTramaComandoTerminal();
                string datoRespuesta = "";
                datoIn("CONEXION NUEVA TERMINAL :" + terminal.codigo);
                enviarDato = true;
                while (sincronico)
                {
                    if (enviarDato)
                    {
                        clienteConectado = true;
                        datoEnvio        = comadoToATM.getTramaComandoTerminal();
                        envio_string(datoEnvio);
                        mensajeEnvioRecep = parseoAlrma.parseaTramaIngreso(datoEnvio.Substring(2, datoEnvio.Length - 2));
                        mensajeEnvioRecep.envio_recepcion = 0;//cero envio, uno recibo

                        terminalArchivo.escritura_archivo_string(">>>[" + datoEnvio.Length + "] : " + datoEnvio);
                        enviarDato = false;
                        datoIn("[" + terminal.codigo + "]:" + datoEnvio.Substring(2, datoEnvio.Length - 2));
                        conBdd.insertar_alarmas(mensajeEnvioRecep);
                        datoEnvio = "";
                    }
                    datoRespuesta = recepcion_de_datos();
                    if (!string.IsNullOrEmpty(datoRespuesta) && datoRespuesta.Length > 2)
                    {
                        terminalArchivo.escritura_archivo_string("<<<[" + datoRespuesta.Length + "] : " + datoRespuesta);
                        datoResp("[" + terminal.codigo + "]:" + datoRespuesta.Substring(2, datoRespuesta.Length - 2));
                        mensajeEnvioRecep = parseoAlrma.parseaTramaIngreso(datoRespuesta.Substring(2, datoRespuesta.Length - 2));
                        mensajeEnvioRecep.envio_recepcion = 1; //cero envio, uno recibo
                        /*Si al momento de inserta devuelve 1 se procede con el envio de la notificacion a los usuarios*/
                        string [] resultado = conBdd.insertar_alarmas(mensajeEnvioRecep);
                        string    enviarStr = resultado[1];
                        string    id_suceso = resultado[0];
                        int       enviar    = int.Parse(enviarStr);
                        if (mensajeEnvioRecep.descriptor != null)
                        {
                            if (mensajeEnvioRecep.descriptor.Equals("F"))
                            {
                                if (mensajeEnvioRecep.id_tipo_dispositivo.Equals("1"))
                                {
                                    List <MonitoreoDispositivos> mts = parseoAlrma.parseaTramaAlarmaDispositivo(mensajeEnvioRecep);
                                    foreach (MonitoreoDispositivos tmp in mts)
                                    {
                                        conBdd.insertar_actualizar_monitoreo_dispositivos(tmp);
                                    }
                                }
                            }
                        }
                        else if (mensajeEnvioRecep.id_tipo_dispositivo != null)
                        {
                            if (mensajeEnvioRecep.id_tipo_dispositivo.Equals("P"))
                            {
                                /*con estado 2 indica si entro o no a modo supervisor*/
                                if (mensajeEnvioRecep.estado_dispositivo.Equals("2"))
                                {
                                    terminal.modoSupervisor = mensajeEnvioRecep.error_severidad == "1";
                                    conBdd.actualizar_terminal(terminal);
                                }
                            }
                        }

                        if (enviar == 1)
                        {
                            mensajeEnvioRecep.id_alarma = int.Parse(id_suceso);
                            if (mensajeEnvioRecep.error_severidad == null)
                            {
                                mensajeEnvioRecep.error_severidad = "99";
                            }
                            DetalleDescripcionObj detalleDes = conBdd.obtener_detalle_por_alarma_terminal(mensajeEnvioRecep);
                            //string mensaje = conBdd.obtener_descripcion_error(int.Parse(mensajeEnvioRecep.error_severidad), mensajeEnvioRecep.id_tipo_dispositivo);
                            detalleDes = parseoAlrma.procesamientoDescripcion(detalleDes);
                            string mensaje = detalleDes.detalle_descripcion;
                            if (string.IsNullOrEmpty(mensaje))
                            {
                                mensaje = "Sin detalle, por favor consulte con el personal tecnico ";
                            }
                            List <UsuarioObj> sendUsuario = new List <UsuarioObj>();
                            sendUsuario = conBdd.obtener_usuario_por_terminal(terminal);
                            mensaje    += " Cajero :" + terminal.codigo;
                            notificacion.enviarNotificacionUsuario(sendUsuario, mensaje, id_suceso);
                        }
                        datoRespuesta = "";
                    }
                }
            }catch (SocketException ex)
            {
                error.escritura_archivo_string(ex.StackTrace);
                //mensaje_error_sistema(ex.Message, Color.Red);
                //mensaje_error_sistema(ex.StackTrace,Color.Red);
                sincronico        = false;
                clienteConectado  = false;
                terminal.conexion = false;
                conBdd.actualizar_terminal(terminal);
            }catch (ErrorConexionTerminal ex)
            {
                //mensaje_error_sistema(ex.Message, Color.Green);
                sincronico        = false;
                clienteConectado  = false;
                terminal.conexion = false;
                error.escritura_archivo_string(ex.Message);
                conBdd.actualizar_terminal(terminal);
            }
            catch (Exception ex)
            {
                error.escritura_archivo_string(ex.StackTrace);
                //mensaje_error_sistema(ex.Message, Color.Red);
                //mensaje_error_sistema(ex.StackTrace,Color.Red);
                sincronico        = false;
                clienteConectado  = false;
                terminal.conexion = false;
                conBdd.actualizar_terminal(terminal);
            }finally
            {
                cerrar_conexion();
            }
        }