39 lines
2.5 KiB
C#
39 lines
2.5 KiB
C#
using Nexus.Api.Data;
|
|
using Nexus.Api.DTOs;
|
|
using Nexus.Api.Models;
|
|
|
|
namespace Nexus.Api.Services;
|
|
|
|
public enum TaskOperationOutcome { Success, NotFound, InvalidState }
|
|
|
|
public sealed record TaskOperationResult(TaskOperationOutcome Outcome, WorkTask? Task = null);
|
|
|
|
public interface ITaskService
|
|
{
|
|
Task<IReadOnlyList<WorkTask>> GetAllAsync(CancellationToken ct = default);
|
|
Task<WorkTask?> GetByIdAsync(Guid id, CancellationToken ct = default);
|
|
Task<IReadOnlyList<WorkTask>> GetPendingApprovalAsync(CancellationToken ct = default);
|
|
Task<WorkTask> CreateAsync(CreateTaskRequest request, CancellationToken ct = default);
|
|
Task<TaskOperationResult> ApproveAsync(Guid id, CancellationToken ct = default);
|
|
Task<TaskOperationResult> RejectAsync(Guid id, CancellationToken ct = default);
|
|
Task<TaskOperationResult> UpdateStateAsync(Guid id, string state, CancellationToken ct = default);
|
|
Task<TaskOperationResult> UpdateAsync(Guid id, UpdateTaskRequest request, CancellationToken ct = default);
|
|
Task<TaskOperationResult> DeleteAsync(Guid id, CancellationToken ct = default);
|
|
|
|
// Dashboard-facing task operations
|
|
Task<IReadOnlyList<WorkTask>> GetOpenAsync(CancellationToken ct = default);
|
|
Task<WorkTask> CreateDashboardTaskAsync(string title, string? detail, string? source, string? priority, string? assignedTo, Guid? parentTaskId = null, CancellationToken ct = default);
|
|
Task<TaskOperationResult> UpdateDashboardTaskAsync(Guid id, string? title, string? detail, string? source, string? priority, string? assignedTo, DateTimeOffset? dueDate = null, CancellationToken ct = default);
|
|
Task<TaskOperationResult> UpdateStatusAsync(Guid id, string status, CancellationToken ct = default);
|
|
Task<TaskOperationResult> CompleteViaQueueAsync(Guid id, CancellationToken ct = default);
|
|
Task<TaskOperationResult> CyclePriorityAsync(Guid id, CancellationToken ct = default);
|
|
|
|
// Task Board
|
|
Task<TaskBoardResponse> GetBoardAsync(CancellationToken ct = default);
|
|
Task<TaskOperationResult> MoveTaskAsync(Guid id, string newState, CancellationToken ct = default);
|
|
Task<int> ResetStaleInProgressTasksAsync(TimeSpan staleThreshold, CancellationToken ct = default);
|
|
Task<IReadOnlyList<WorkTask>> GetChildTasksAsync(Guid parentId, CancellationToken ct = default);
|
|
Task<List<ActivityEvent>> GetTaskActivityAsync(Guid taskId, CancellationToken ct = default);
|
|
Task<int> ImportFromIrisTodoAsync(bool deleteAfterImport = false, CancellationToken ct = default);
|
|
}
|