using e_suite.Workflow.Core.Enums; using e_suite.Workflow.Core.Interfaces; namespace e_suite.Workflow.Core; public abstract class TaskBase : ITask, IBudget, ITags { 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 ITask? Predecessor { 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 required TimeSpan Duration { get; set; } public IList Tags { get; set; } = new List(); //Todo can only be on a run-time instance //public virtual Task OnActivateAsync() //{ // return Task.CompletedTask; //} //public virtual Task OnCompleteAsync() //{ // return Task.FromResult(true); //} }