using TarninaHub.Domain.Enums; namespace TarninaHub.Domain.Rules; public static class PartnershipWorkflow { private static readonly IReadOnlyDictionary Transitions = new Dictionary { [PartnershipStatus.Proposed] = [PartnershipStatus.Active, PartnershipStatus.Closed], [PartnershipStatus.Active] = [PartnershipStatus.Closed], [PartnershipStatus.Closed] = [], }; public static bool CanTransition(PartnershipStatus from, PartnershipStatus to) => from == to || Transitions[from].Contains(to); public static bool IsTerminal(PartnershipStatus status) => Transitions[status].Length == 0; }