using Socialize.Api.Modules.Identity.Contracts; namespace Socialize.Api.Modules.Approvals.Services; public static class ApprovalStepTargetTypes { public const string Role = "Role"; public const string Membership = "Membership"; public const string Member = "Member"; } public static class ApprovalMembershipTargets { public const string Team = "Team"; public const string Client = "Client"; } public static class ApprovalStepConfigurationRules { public static readonly IReadOnlySet AllowedTargetTypes = new HashSet(StringComparer.Ordinal) { ApprovalStepTargetTypes.Role, ApprovalStepTargetTypes.Membership, ApprovalStepTargetTypes.Member, }; public static readonly IReadOnlySet AllowedRoleTargets = new HashSet(StringComparer.Ordinal) { KnownRoles.Administrator, KnownRoles.Manager, KnownRoles.WorkspaceMember, KnownRoles.Client, KnownRoles.Provider, }; public static readonly IReadOnlySet AllowedMembershipTargets = new HashSet(StringComparer.Ordinal) { ApprovalMembershipTargets.Team, ApprovalMembershipTargets.Client, }; public static bool IsValidTargetType(string? targetType) { return !string.IsNullOrWhiteSpace(targetType) && AllowedTargetTypes.Contains(targetType.Trim()); } public static bool IsValidRoleTarget(string? targetValue) { return !string.IsNullOrWhiteSpace(targetValue) && AllowedRoleTargets.Contains(targetValue.Trim()); } public static bool IsValidMembershipTarget(string? targetValue) { return !string.IsNullOrWhiteSpace(targetValue) && AllowedMembershipTargets.Contains(targetValue.Trim()); } }