public Balanca ObterBalanca(int IDBalanca) { using Database conn = ConnectionString; QueryResult result = conn.Query("SELECT IdBalanza, Nombre, Dir_IP, BalanzaTradicional, DireccionLogica, PuertoEnvio_Tx FROM dat_balanza Where IdBalanza=" + IDBalanca + " Order by DireccionLogica"); result.Read(); Balanca res = new Balanca() { IdBalanca = result["IdBalanza"], NomeBalanca = result["Nombre"], Dir_IP = result["Dir_IP"], DirecaoLogica = result["DireccionLogica"], PortaTX = result.reader.IsDBNull(5) ? 0 : result["PuertoEnvio_Tx"], IDTipoBalanca = result["BalanzaTradicional"] }; conn.Connection.Close(); res.DefinirTipo(); DateTime UltimaAtualizacaoSucesso = new DateTime(); conn.Connection.Open(); result = conn.Query("SELECT Fecha FROM sys_transacciones.dat_transacciones Where Dir_IPDestino='" + res.Dir_IP + "' AND Enviado = 1 ORDER BY Fecha DESC LIMIT 1;"); result.Read(); if (result.reader.HasRows) { DateTime.TryParse(result["Fecha"], out UltimaAtualizacaoSucesso); } conn.Connection.Close(); res.TransacoesPendentesArtigos = ObterCount("SELECT COUNT(*) FROM sys_transacciones.dat_transacciones where Dir_IPDestino='" + res.Dir_IP + "' AND Enviado = 0 AND SentenciaInsert like '" + res.DirecaoLogica + res.RegistoArtigo + "%';"); res.TransacoesPendentesOfertas = ObterCount("SELECT COUNT(*) FROM sys_transacciones.dat_transacciones where Dir_IPDestino='" + res.Dir_IP + "' AND Enviado = 0 AND SentenciaInsert like '" + res.DirecaoLogica + res.RegistoOferta + "%';"); res.TransacoesPendentes = ObterCount("SELECT COUNT(*) FROM sys_transacciones.dat_transacciones where Dir_IPDestino='" + res.Dir_IP + "' AND Enviado = 0;"); res.TransacoesErro = ObterCount("SELECT COUNT(*) FROM sys_transacciones.dat_transacciones where Dir_IPDestino='" + res.Dir_IP + "' AND NIntentos > 0 AND Enviado=0;"); res.UltimaAtualizacaoSucesso = UltimaAtualizacaoSucesso; res.DefinirEstado(); return(res); }
public List <Artigo> ObterListaArtigosBalanca(int IdBalanca, string Nome, string PLU) { List <Artigo> LstArtigos = new List <Artigo>(); Balanca balanca = ObterBalanca(IdBalanca); if (Directory.Exists(ComunicacionesLogs)) { DirectoryInfo info = new DirectoryInfo(ComunicacionesLogs); FileInfo[] files = info.GetFiles().OrderBy(p => p.CreationTime).ToArray(); foreach (FileInfo file in files) { if (!file.Name.Contains("commL")) { string[] linhas = File.ReadAllLines(file.FullName); bool lerLinha = false; foreach (var linha in linhas) { if (lerLinha && linha.Length == 177 && (linha.ToString().Substring(47, 4) == balanca.DirecaoLogica + balanca.RegistoArtigo) && (linha.ToString().Substring(53, 1) != "B")) { int.TryParse(linha.ToString().Substring(54, 6), out int IdArtigo); double.TryParse(linha.ToString().Substring(135, 6) + "," + linha.ToString().Substring(141, 2), out double preco); double.TryParse(linha.ToString().Substring(143, 6) + "," + linha.ToString().Substring(149, 2), out double precoPromocao); string Data = linha.Substring(0, 10) + " " + linha.Substring(12, 8); DateTime.TryParse(Data, out DateTime dataAtualizacao); Artigo artigo = new Artigo { IdArtigo = IdArtigo, NomeArtigo = linha.Substring(63, 48), UltimaAtualizacao = dataAtualizacao }; if (precoPromocao == 0) { artigo.Preco = preco; } else { artigo.Preco = precoPromocao; } if (IdArtigo.ToString().Contains(PLU) && artigo.NomeArtigo.Contains(Nome, StringComparison.CurrentCultureIgnoreCase)) { int index = LstArtigos.IndexOf(LstArtigos.Where(a => a.IdArtigo == IdArtigo).FirstOrDefault()); if (index >= 0) { LstArtigos[index] = artigo; } else { LstArtigos.Add(artigo); } } } if (linha.ToString().Contains("Socket cliente abierto correctamente. IP Balanza:")) { lerLinha = (ObterIPString(linha.ToString()) == balanca.Dir_IP); } } } } } return(LstArtigos.OrderByDescending(o => o.UltimaAtualizacao).ToList()); }