PI_Assync_PLD/Data/AccessRepository.cs
Adriano Serighelli 751e7da3a6 Código funcional.
Consulta da data máxima de cada banco de dados realizada individualmente.
Dados sendo inseridos conforme a data máxima de cada banco de dados.
Pendente realizar paginação da requisição http.
2025-03-22 15:05:14 -03:00

46 lines
1.8 KiB
C#

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<PLDModel> 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();
}
}
}