using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using FrameworkDAL.DTO.Workflow; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using static GB5Shared.DTO.WorkFlow.ContractsDTO; using WorkflowDTO = FrameworkDAL.DTO.Workflow.WorkflowDTO; namespace FrameworkBLL.WorkFlow { public interface IWorkFlowBLL { // ── Workflow engine ─────────────────────────────────────────────────── Task CheckApplicability( WorkflowCheckContext context, LoginDTO loginDTO); Task StartWorkflow( WorkflowStartRequest request, LoginDTO loginDTO); // ── Actions ─────────────────────────────────────────────────────────── Task WorkFlowActions(WorkFlowActionDTO WorkFlowActionDTO, LoginDTO LoginDTO); // ── Approval lists ──────────────────────────────────────────────────── Task> WorkFlowApprovalList(int WorkflowType, int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO); // ── History and status ──────────────────────────────────────────────── Task> WorkFlowStatus(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO); Task> WorkFlowHistory(int WorkflowType, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO); Task> CurrentApprovalStatus( int entityId, int objectId, LoginDTO loginDTO); // ── Auto-approve ───────────────────────────────────────────────────── /// /// Queries all overdue auto-approve tasks and calls WorkFlowActions for each. /// Called by the background WorkflowAutoApproveService. /// Task ProcessAutoApprovalsAsync(LoginDTO systemLogin, CancellationToken cancellationToken); // ── Monitor dashboard ───────────────────────────────────────────────── Task GetWorkflowMonitorSummaryAsync( int entityId, DateTime? dateFrom, DateTime? dateTo, int page, int pageSize, LoginDTO loginDTO); // ── Workflow CRUD ───────────────────────────────────────────────────── Task GetWorkflow(int WorkflowId, LoginDTO LoginDTO); Task SaveWorkflow(WorkflowDTO WorkflowDTO, LoginDTO LoginDTO); Task DeleteWorkflow(int WorkflowId, LoginDTO LoginDTO); Task GetSelectListWorkflow(CriteriaDTO criteriaDTO, LoginDTO LoginDTO); } }