namespace Baya.Domain.Entities.User;

/// <summary>
/// The platform role vocabulary. <see cref="Customer"/> and <see cref="Nurse"/> are the public actor
/// roles a user may self-select (a user can hold both). The admin sub-roles are provisioned internally
/// only and are never self-assignable through any public endpoint.
/// </summary>
public static class RoleNames
{
    public const string Customer = "customer";
    public const string Nurse = "nurse";

    public const string Admin = "admin";
    public const string Support = "support";
    public const string Finance = "finance";
    public const string Moderation = "moderation";
    public const string SuperAdmin = "super_admin";

    public static readonly IReadOnlyList<string> SelfAssignable = [Customer, Nurse];

    public static readonly IReadOnlyList<string> All =
        [Customer, Nurse, Admin, Support, Finance, Moderation, SuperAdmin];
}