69 lines
2.7 KiB
C#
69 lines
2.7 KiB
C#
|
|
using System.Text;
|
||
|
|
using Dapper;
|
||
|
|
using GestionIntegral.Api.Models.Comunicaciones;
|
||
|
|
|
||
|
|
namespace GestionIntegral.Api.Data.Repositories.Comunicaciones
|
||
|
|
{
|
||
|
|
public class LoteDeEnvioRepository : ILoteDeEnvioRepository
|
||
|
|
{
|
||
|
|
private readonly DbConnectionFactory _connectionFactory;
|
||
|
|
public LoteDeEnvioRepository(DbConnectionFactory connectionFactory)
|
||
|
|
{
|
||
|
|
_connectionFactory = connectionFactory;
|
||
|
|
}
|
||
|
|
|
||
|
|
public async Task<LoteDeEnvio> CreateAsync(LoteDeEnvio lote)
|
||
|
|
{
|
||
|
|
const string sql = @"
|
||
|
|
INSERT INTO dbo.com_LotesDeEnvio (FechaInicio, Periodo, Origen, Estado, IdUsuarioDisparo)
|
||
|
|
OUTPUT INSERTED.*
|
||
|
|
VALUES (@FechaInicio, @Periodo, @Origen, @Estado, @IdUsuarioDisparo);";
|
||
|
|
using var connection = _connectionFactory.CreateConnection();
|
||
|
|
return await connection.QuerySingleAsync<LoteDeEnvio>(sql, lote);
|
||
|
|
}
|
||
|
|
|
||
|
|
public async Task<bool> UpdateAsync(LoteDeEnvio lote)
|
||
|
|
{
|
||
|
|
const string sql = @"
|
||
|
|
UPDATE dbo.com_LotesDeEnvio SET
|
||
|
|
FechaFin = @FechaFin,
|
||
|
|
Estado = @Estado,
|
||
|
|
TotalCorreos = @TotalCorreos,
|
||
|
|
TotalEnviados = @TotalEnviados,
|
||
|
|
TotalFallidos = @TotalFallidos
|
||
|
|
WHERE IdLoteDeEnvio = @IdLoteDeEnvio;";
|
||
|
|
using var connection = _connectionFactory.CreateConnection();
|
||
|
|
var rows = await connection.ExecuteAsync(sql, lote);
|
||
|
|
return rows == 1;
|
||
|
|
}
|
||
|
|
|
||
|
|
public async Task<IEnumerable<LoteDeEnvio>> GetAllAsync(int? anio, int? mes)
|
||
|
|
{
|
||
|
|
var sqlBuilder = new StringBuilder("SELECT * FROM dbo.com_LotesDeEnvio WHERE 1=1");
|
||
|
|
var parameters = new DynamicParameters();
|
||
|
|
|
||
|
|
if (anio.HasValue)
|
||
|
|
{
|
||
|
|
sqlBuilder.Append(" AND YEAR(FechaInicio) = @Anio");
|
||
|
|
parameters.Add("Anio", anio.Value);
|
||
|
|
}
|
||
|
|
if (mes.HasValue)
|
||
|
|
{
|
||
|
|
sqlBuilder.Append(" AND MONTH(FechaInicio) = @Mes");
|
||
|
|
parameters.Add("Mes", mes.Value);
|
||
|
|
}
|
||
|
|
|
||
|
|
sqlBuilder.Append(" ORDER BY FechaInicio DESC;");
|
||
|
|
|
||
|
|
using var connection = _connectionFactory.CreateConnection();
|
||
|
|
return await connection.QueryAsync<LoteDeEnvio>(sqlBuilder.ToString(), parameters);
|
||
|
|
}
|
||
|
|
|
||
|
|
public async Task<LoteDeEnvio?> GetByIdAsync(int id)
|
||
|
|
{
|
||
|
|
const string sql = "SELECT * FROM dbo.com_LotesDeEnvio WHERE IdLoteDeEnvio = @Id;";
|
||
|
|
using var connection = _connectionFactory.CreateConnection();
|
||
|
|
return await connection.QuerySingleOrDefaultAsync<LoteDeEnvio>(sql, new { Id = id });
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|