using e_suite.Database.Core.Tables.Activity; using e_suite.Workflow.Core.Enums; using e_suite.Workflow.Core.Interfaces; namespace e_suite.Workflow.Core; public abstract class TaskBase : ITask, IBudget, ITags, IJoin { public Guid Guid { get; set; } = Guid.CreateVersion7(); public required ITask Parent { get; set; } public required string Name { get; set; } public string Description { get; set; } = string.Empty; public required TimeSpan Duration { get; set; } public List Predecessors { get; set; } = []; public decimal UnitsOfWork { get; set; } = 1; public required Cost Cost { get; set; } public BudgetOption BudgetOption { get; set; } = BudgetOption.DoNotShow; public bool AllowTimeTracking { get; set; } = true; public Priority Priority { get; set; } = Priority.Normal; public IList Tags { get; set; } = new List(); public List WaitFor { get; } public virtual Task OnStartedAsync(ActivityTask activityTask) { return Task.CompletedTask; } public virtual Task OnCompleteAsync(ActivityTask activityTask) { return Task.CompletedTask; } }