public List <MensajeDetallado> GetAllTrafico()
        {
            List <MensajeDetallado> mensajes = new List <MensajeDetallado>();

            try
            {
                using (StreamReader reader = new StreamReader(archivoTrafico))
                {
                    string text = null;
                    do
                    {
                        string[] textArray = text.Trim().Split('|');

                        MensajeDetallado m = new MensajeDetallado()
                        {
                            NroSerie = Convert.ToInt32(textArray[0]),
                            Fecha    = textArray[1],
                            Tipo     = textArray[2],
                            Valor    = Convert.ToInt32(textArray[3]),
                            Estado   = textArray[4]
                        };
                        mensajes.Add(m);
                    } while (text != null);
                }
            }
            catch (IOException ex)
            {
            }
            return(mensajes);
        }
 public void SaveTrafico(MensajeDetallado m)
 {
     try
     {
         using (StreamWriter writer = new StreamWriter(archivoTrafico, true))
         {
             string texto = JsonConvert.SerializeObject(m);
             writer.WriteLine(texto.ToString());
             writer.Flush();
         }
     }catch (IOException ex)
     {
     }
 }
        public void Ejecutar()
        {
            string   tipo, mensajeCliente, estado;
            string   fechaServer, fechaCliente;
            int      valor, nroMedidor;
            DateTime fecha1;
            DateTime fecha2;



            mensajeCliente = server.Leer();
            Console.WriteLine(mensajeCliente);
            fechaServer = DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss");

            //Se debe validar que el medidor este en el sistema
            string[] validacion = mensajeCliente.Split('|');
            Boolean  existe     = true;

            foreach (int element in medidores)
            {
                if (element == Convert.ToInt32(validacion[1]))
                {
                    existe = true;
                    break;
                }
                else
                {
                    existe = false;
                }
            }
            if (existe == false)
            {
                server.Escribir(fechaServer + '|' + validacion[1] + '|' + "ERROR");
                server.CerrarConexion();
                return;
            }
            else
            {
                server.Escribir(fechaServer + "|WAIT");


                //DateTime fecha = Convert.ToDateTime(fechaServer);

                fecha1         = DateTime.Now;
                mensajeCliente = server.Leer();
                Console.WriteLine(mensajeCliente);
                fecha2 = DateTime.Now;


                string[] textArray = mensajeCliente.Split('|');
                nroMedidor   = Convert.ToInt32(textArray[0]);
                fechaCliente = textArray[1];
                //DateTime fechaCliente = DateTime.Now;
                tipo   = textArray[2];
                valor  = Convert.ToInt32(textArray[3]);
                estado = textArray[4];
                //TimeSpan diff = fechaCliente.Subtract(fecha);
                //if (diff.Minutes < 30)
                //{

                /*for(int i = 0; i < textArray.Length; i++)
                 * {
                 *  Console.WriteLine(textArray[i]);
                 * }*/
                //nroMedidor = Int32.Parse(textArray[0]);
                if (fecha1.Subtract(fecha2).Minutes > 30)
                {
                    server.CerrarConexion();
                }
                else
                {
                    MensajeDetallado m = new MensajeDetallado()
                    {
                        NroSerie = nroMedidor,
                        Fecha    = fechaCliente,
                        Tipo     = tipo,
                        Valor    = Convert.ToInt32(valor),
                        Estado   = estado
                    };

                    if (tipo.Contains("consumo"))
                    {
                        lock (dal) {
                            dal.SaveConsumo(m);
                        }
                        server.Escribir(nroMedidor.ToString() + '|' + "OK");
                        server.CerrarConexion();
                    }
                    else if (tipo.Contains("trafico"))
                    {
                        lock (dal) {
                            dal.SaveTrafico(m);
                        }
                        server.Escribir(nroMedidor.ToString() + '|' + "OK");
                        server.CerrarConexion();
                    }
                }
                //}
                //else
                //{
                //    server.CerrarConexion();
                //}
            }
        }