using EntitlementDAL.DTOs; using GB5Shared.DTO.Framework.Login; namespace EntitlementBLL.Interfaces; public interface IBetaClientBLL { Task> GetListAsync(LoginDTO login, CancellationToken ct); /// Client-facing "my beta enrolments" — scoped to one client, unlike GetListAsync /// which lists every client's enrolments (admin-only browse). Task> GetListByClientAsync(int clientId, LoginDTO login, CancellationToken ct); Task SaveAsync(BetaClientDTO dto, LoginDTO login, CancellationToken ct); Task DeleteAsync(int betaClientId, LoginDTO login, CancellationToken ct); Task> GetOpenProgramsAsync(LoginDTO login, CancellationToken ct); /// Enrols a client into a beta program — reactivates a prior opt-out's row rather than /// inserting a duplicate (UX_MENTITLEMENTBETACLIENT is not Status-filtered). Called only from /// ChangeRequestBLL.ApproveChangeRequestAsync — never exposed on a client-reachable endpoint /// directly, since enrolling still requires approval. Task EnrolAsync(int clientId, string betaProgramName, DateTime validFrom, DateTime validUntil, LoginDTO login, CancellationToken ct); /// Opts a client out of a beta program (soft-delete). Same approval-only calling /// convention as EnrolAsync. Task OptOutAsync(int clientId, string betaProgramName, LoginDTO login, CancellationToken ct); }