using System.Data.OleDb; using System.Threading.Tasks; using Compliance.Domain.Models; namespace Compliance.Infrastructure.Repositories { public class ClientRepository(string connectionString) : IClientRepository, IDisposable { private readonly string _connectionString = connectionString; private bool _disposed; public async Task GetClientInformationAsync(string smartCode) { using var connection = new OleDbConnection(_connectionString); await connection.OpenAsync(); var query = @"SELECT * FROM Dados_cadastrais WHERE Cod_Smart_unidade = @smartCode"; using var command = new OleDbCommand(query, connection); command.Parameters.AddWithValue("@smartCode", smartCode); using var reader = await command.ExecuteReaderAsync(); if (await reader.ReadAsync()) { return new Client { SmartCode = reader["Cod_Smart_unidade"].ToString()!, Name = reader["Cliente"].ToString()!, Management = reader["Gestao"].ToString()!, Unit = reader["Unidade"].ToString()!, ConsumerGroup = reader["Grupo"].ToString()!, Subgroup = reader["Subgrupo"].ToString()!, SupplyVoltage = reader["Tensao"].ToString()! }; } return null; } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (!_disposed) { _disposed = true; } } } }