using EntitlementDAL.DTOs; using GB5Shared.QueryExecutor; namespace EntitlementBLL.Interfaces; public interface IChangeRequestBLL { Task SubmitChangePlanRequestAsync(int clientId, int subscriptionId, int newPlanId, int requestedByClientUserId, CancellationToken ct); Task SubmitRenewalRequestAsync(int clientId, int subscriptionId, DateTime proposedValidTill, int requestedByClientUserId, CancellationToken ct); /// validUntil is stored on ChangeRequestDTO.ProposedValidTill (reused rather than adding /// a beta-specific column) and becomes the enrolment's ValidUntil on approval; ValidFrom is set /// to the approval timestamp, not the submission timestamp. Task SubmitBetaEnrolRequestAsync(int clientId, string betaProgramName, DateTime validUntil, int requestedByClientUserId, CancellationToken ct); Task SubmitBetaOptOutRequestAsync(int clientId, string betaProgramName, int requestedByClientUserId, CancellationToken ct); Task ApproveChangeRequestAsync(int changeRequestId, int reviewerUserId, string? comments, CancellationToken ct); Task RejectChangeRequestAsync(int changeRequestId, int reviewerUserId, string? comments, CancellationToken ct); /// clientId == -1 serves the admin approval inbox (any client); requestStatus == -1 = any. Task> GetChangeRequestListAsync(int clientId, int requestStatus, int page, int pageSize, CancellationToken ct); }