// Archivo: GestionIntegral.Api/Data/Repositories/Suscripciones/IAjusteRepository.cs

using GestionIntegral.Api.Models.Suscripciones;
using System;
using System.Collections.Generic;
using System.Data;
using System.Threading.Tasks;

namespace GestionIntegral.Api.Data.Repositories.Suscripciones
{
    public interface IAjusteRepository
    {
        Task<Ajuste?> GetByIdAsync(int idAjuste);
        Task<Ajuste?> CreateAsync(Ajuste nuevoAjuste, IDbTransaction transaction);
        Task<bool> UpdateAsync(Ajuste ajuste, IDbTransaction transaction);
        Task<bool> AnularAjusteAsync(int idAjuste, int idUsuario, IDbTransaction transaction);
        Task<IEnumerable<Ajuste>> GetAjustesPorSuscriptorAsync(int idSuscriptor, DateTime? fechaDesde, DateTime? fechaHasta);
        Task<IEnumerable<Ajuste>> GetAjustesPendientesHastaFechaAsync(int idSuscriptor, int idEmpresa, DateTime fechaHasta, IDbTransaction transaction);
        Task<bool> MarcarAjustesComoAplicadosAsync(IEnumerable<int> idsAjustes, int idFactura, IDbTransaction transaction);
        Task<IEnumerable<Ajuste>> GetAjustesPorIdFacturaAsync(int idFactura);
    }
}