public List <Artigo> ObterListaArtigosFicheiro(string fullPath, string Nome, string PLU) { List <Artigo> LstArtigos = new List <Artigo>(); if (File.Exists(fullPath)) { FileInfo file = new FileInfo(fullPath); string[] linhas = File.ReadAllLines(file.FullName); if (file.Name.Contains("SCAL29999")) { foreach (var linha in linhas) { int.TryParse(linha.ToString().Substring(37, 5), out int IdArtigo); double precoPromocao = 0; double preco = 0; switch (linha.ToString().Substring(82, 1)) { case "1": double.TryParse(linha.ToString().Substring(84, 5) + "," + linha.ToString().Substring(89, 2), out preco); double.TryParse(linha.ToString().Substring(59, 5) + "," + linha.ToString().Substring(64, 2), out precoPromocao); break; case "0": double.TryParse(linha.ToString().Substring(59, 5) + "," + linha.ToString().Substring(64, 2), out preco); double.TryParse(linha.ToString().Substring(84, 5) + "," + linha.ToString().Substring(89, 2), out precoPromocao); break; } DateTime dataAtualizacao = file.LastWriteTime; Promocao promocao = precoPromocao == 0 ? new Promocao() : new Promocao { IdArtigo = IdArtigo, PrecoPromocao = precoPromocao, PromocaoAtiva = true }; Artigo artigo = new Artigo { IdArtigo = IdArtigo, NomeArtigo = linha.Substring(2, 24), UltimaAtualizacao = dataAtualizacao, Preco = preco, Promocao = promocao }; 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); } } } } } return(LstArtigos); }
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()); }