using GB5Shared.DTO.Framework.Login; using SwDAL.DTO.ChangeRequest; namespace SwBLL.ChangeRequest; public interface IChangeRequestBLL { Task GetById(int changeRequestId, LoginDTO login, CancellationToken ct); Task GetList(ChangeRequestListCriteria criteria, int pageOffset, int pageSize, LoginDTO login, CancellationToken ct); Task GetSelectList(int firstNumber, int maxResult, LoginDTO login, CancellationToken ct); Task Save(ChangeRequestDTO dto, LoginDTO login, CancellationToken ct); Task Delete(int changeRequestId, LoginDTO login, CancellationToken ct); Task Submit(int changeRequestId, LoginDTO login, CancellationToken ct); Task Approve(int changeRequestId, string? comment, LoginDTO login, CancellationToken ct); Task Reject(int changeRequestId, string reason, LoginDTO login, CancellationToken ct); Task Return(int changeRequestId, string? comment, LoginDTO login, CancellationToken ct); Task Execute(int changeRequestId, LoginDTO login, CancellationToken ct); // Background execution (tracker §37) — additive alongside Execute(), which stays unchanged // for existing callers/tests. QueueExecutionAsync returns immediately; a Quartz job // (ChangeRequestExecutionWorkerJob) calls ProcessQueuedExecutionsAsync on a timer to do the // actual work, sharing the exact same execution logic Execute() itself uses. Task QueueExecutionAsync(int changeRequestId, LoginDTO login, CancellationToken ct); Task ProcessQueuedExecutionsAsync(LoginDTO login, CancellationToken ct); }