using PI_Assync_PLD.Models; using System.Data.OleDb; public class AccessRepository : IDataRepository { private readonly string _connectionString; public AccessRepository(string caminhoBD) { _connectionString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={caminhoBD};Jet OLEDB:Database Password=gds21"; } public DateTime ObterDataInicial() { using var conn = new OleDbConnection(_connectionString); conn.Open(); string query = "SELECT MAX(Data) FROM PLD_comp"; using var cmd = new OleDbCommand(query, conn); return cmd.ExecuteScalar() is DateTime data ? data.AddDays(1) : new DateTime(2022, 01, 01); } public void SalvarPLDs(List plds, DateTime ultimaData) { using var conn = new OleDbConnection(_connectionString); conn.Open(); // Filtrar apenas os PLDs mais recentes var novosPLDs = plds.FindAll(pld => pld.Dia >= ultimaData); if (novosPLDs.Count == 0) return; // Nenhum dado novo, então sair da função foreach (var pld in novosPLDs) { string query = "INSERT INTO PLD_comp (Data, Hora, Submercado, Valor, Mes_ref, Dia_da_semana) " + "VALUES (@Data, @Hora, @Submercado, @Valor, @MesRef, @DiaSemana)"; using var cmd = new OleDbCommand(query, conn); cmd.Parameters.AddWithValue("@Data", pld.Dia); cmd.Parameters.AddWithValue("@Hora", pld.Hora); cmd.Parameters.AddWithValue("@Submercado", pld.Submercado); cmd.Parameters.AddWithValue("@Valor", pld.Valor); cmd.Parameters.AddWithValue("@MesRef", pld.Mes); cmd.Parameters.AddWithValue("@DiaSemana", pld.DiaSemana); cmd.ExecuteNonQuery(); } } }