using TarninaHub.Domain.Enums; namespace TarninaHub.Domain.Rules; public static class IdeaWorkflow { private static readonly IReadOnlyDictionary Transitions = new Dictionary { [IdeaStatus.Draft] = [IdeaStatus.Submitted], [IdeaStatus.Submitted] = [IdeaStatus.InReview], [IdeaStatus.InReview] = [IdeaStatus.Accepted, IdeaStatus.Rejected], [IdeaStatus.Accepted] = [], [IdeaStatus.Rejected] = [], }; public static bool CanTransition(IdeaStatus from, IdeaStatus to) => from == to || Transitions[from].Contains(to); public static bool IsTerminal(IdeaStatus status) => Transitions[status].Length == 0; }