using Nexus.Api.Data; using Nexus.Api.DTOs; namespace Nexus.Api.Services; public enum TaskOperationOutcome { Success, NotFound, InvalidState } public sealed record TaskOperationResult(TaskOperationOutcome Outcome, WorkTask? Task = null); public interface ITaskService { Task> GetAllAsync(CancellationToken ct = default); Task GetByIdAsync(Guid id, CancellationToken ct = default); Task> GetPendingApprovalAsync(CancellationToken ct = default); Task CreateAsync(CreateTaskRequest request, CancellationToken ct = default); Task ApproveAsync(Guid id, CancellationToken ct = default); Task RejectAsync(Guid id, CancellationToken ct = default); Task UpdateStateAsync(Guid id, string state, CancellationToken ct = default); Task UpdateAsync(Guid id, UpdateTaskRequest request, CancellationToken ct = default); Task DeleteAsync(Guid id, CancellationToken ct = default); // Dashboard-facing task operations Task> GetOpenAsync(CancellationToken ct = default); Task CreateDashboardTaskAsync(string title, string? detail, string? source, string? priority, string? assignedTo, CancellationToken ct = default); Task UpdateDashboardTaskAsync(Guid id, string? title, string? detail, string? source, string? priority, string? assignedTo, CancellationToken ct = default); Task UpdateStatusAsync(Guid id, string status, CancellationToken ct = default); Task CompleteViaQueueAsync(Guid id, CancellationToken ct = default); Task CyclePriorityAsync(Guid id, CancellationToken ct = default); }