using GestionIntegral.Api.Models.Suscripciones;
using System.Data;

namespace GestionIntegral.Api.Data.Repositories.Suscripciones
{
    public interface ISuscripcionRepository
    {
        Task<Suscripcion?> GetByIdAsync(int idSuscripcion);
        Task<IEnumerable<Suscripcion>> GetBySuscriptorIdAsync(int idSuscriptor);
        Task<IEnumerable<Suscripcion>> GetAllActivasParaFacturacion(string periodo, IDbTransaction transaction);
        Task<Suscripcion?> CreateAsync(Suscripcion nuevaSuscripcion, IDbTransaction transaction);
        Task<bool> UpdateAsync(Suscripcion suscripcionAActualizar, IDbTransaction transaction);
        Task<IEnumerable<(SuscripcionPromocion Asignacion, Promocion Promocion)>> GetPromocionesAsignadasBySuscripcionIdAsync(int idSuscripcion);
        Task AsignarPromocionAsync(SuscripcionPromocion asignacion, IDbTransaction transaction);
        Task<bool> QuitarPromocionAsync(int idSuscripcion, int idPromocion, IDbTransaction transaction);
    }
}