using Dapper; using GestionIntegral.Api.Models.Suscripciones; using System.Data; namespace GestionIntegral.Api.Data.Repositories.Suscripciones { public class LoteDebitoRepository : ILoteDebitoRepository { private readonly DbConnectionFactory _connectionFactory; private readonly ILogger _logger; public LoteDebitoRepository(DbConnectionFactory connectionFactory, ILogger logger) { _connectionFactory = connectionFactory; _logger = logger; } public async Task CreateAsync(LoteDebito nuevoLote, IDbTransaction transaction) { if (transaction == null || transaction.Connection == null) { throw new ArgumentNullException(nameof(transaction), "La transacción o su conexión no pueden ser nulas."); } const string sqlInsert = @" INSERT INTO dbo.susc_LotesDebito (FechaGeneracion, Periodo, NombreArchivo, ImporteTotal, CantidadRegistros, IdUsuarioGeneracion) OUTPUT INSERTED.* VALUES (GETDATE(), @Periodo, @NombreArchivo, @ImporteTotal, @CantidadRegistros, @IdUsuarioGeneracion);"; try { return await transaction.Connection.QuerySingleAsync(sqlInsert, nuevoLote, transaction); } catch (Exception ex) { _logger.LogError(ex, "Error al crear el registro de LoteDebito para el período {Periodo}", nuevoLote.Periodo); return null; } } } }