PI_Assync_SCDE/Infrastructure/AccessRepository.cs
Adriano Serighelli a8d87addad Melhoria do processo de erros definitivos e retry.
Melhoria do processo de estimativa de dados faltantes para atender metodologia da CCEE.

Adapatação de modelos para poder inserir dados nulos (faltantes) no banco de dados.
2025-10-15 11:09:23 -03:00

42 lines
2.0 KiB
C#

using System.Data.OleDb;
using Domain;
namespace Infrastructure
{
public class AccessRepository : IAccessRepository
{
private readonly string _connectionString;
public AccessRepository(string connectionString)
{
_connectionString = connectionString;
}
public async Task<IEnumerable<Perfil>> ObterPerfisAsync(CancellationToken ct)
{
var perfis = new List<Perfil>();
using var connection = new OleDbConnection(_connectionString);
await connection.OpenAsync(ct);
string sql = $"SELECT Cod_5min, Codigo_SCDE, Data_de_Migracao FROM Dados_cadastrais WHERE LEN(Codigo_SCDE) > 5 AND Unidade_gerenciada ORDER BY cod_smart_unidade";
//string sql = "SELECT Cod_5min, Codigo_SCDE, Data_de_Migracao FROM Dados_cadastrais WHERE LEN(Codigo_SCDE) > 5 and (Cliente = 'RMC ALIMENTOS' OR Cliente = 'FERREIRA SUPERMERCADO' OR Cliente = 'VANGUARDA ALIMENTOS') AND Unidade_gerenciada ORDER BY PerfilCCEE";
//string sql = "SELECT Cod_5min, Codigo_SCDE, Data_de_Migracao FROM Dados_cadastrais WHERE LEN(Codigo_SCDE) > 5 and Cliente = 'ABEVÊ' and Unidade = 'ABV LOJA 29 - COXIM' AND Unidade_gerenciada ORDER BY PerfilCCEE";
//string sql = "SELECT Cod_5min, Codigo_SCDE, Data_de_Migracao FROM Dados_cadastrais WHERE LEN(Codigo_SCDE) > 5 and Cliente = 'calvi granitos' AND Unidade_gerenciada ORDER BY PerfilCCEE";
using var command = new OleDbCommand(sql, connection);
using var reader = await command.ExecuteReaderAsync(ct);
while (await reader.ReadAsync(ct))
{
var cod5min = reader.IsDBNull(0) ? null : reader.GetString(0);
var codigoSCDE = reader.IsDBNull(1) ? null : reader.GetString(1);
var dataMigracao = reader.IsDBNull(2) ? (DateTime?)null : reader.GetDateTime(2);
perfis.Add(new Perfil(cod5min, codigoSCDE, dataMigracao));
}
return perfis;
}
}
}