public Promocao ObterPromocao(int idArtigo)
        {
            using Database conn = ConnectionString;
            QueryResult result   = conn.Query("SELECT FechaInicio, FechaFin, dat_tarifa.idarticulo, dat_articulo.PrecioOferta FROM dat_tarifa INNER JOIN dat_articulo ON dat_tarifa.idarticulo = dat_articulo.idarticulo where dat_tarifa.idarticulo='" + idArtigo + "'");
            Promocao    promocao = new Promocao();

            if (result.reader.HasRows)
            {
                result.Read();

                DateTime.TryParse(result[0], out DateTime dataInicio);
                DateTime.TryParse(result[1], out DateTime dataFim);
                Double.TryParse(result[3], out double pvpPromocao);

                promocao = (new Promocao(dataInicio, dataFim, idArtigo, pvpPromocao));
            }
            return(promocao);
        }
        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);
        }