using Data.SeaHavenIndustries.Enums; namespace SeaHaven.Services.DTOs; public sealed class TeamPermissionProfileDTO { public required string UserId { get; init; } public string? RoleName { get; init; } public required IReadOnlyList Permissions { get; init; } } public sealed class TeamPermissionValueDTO { public required string PermissionKey { get; init; } public UserPermissionState OverrideState { get; init; } public bool IsGranted { get; init; } } public sealed class EffectivePermissionsDTO { public required IReadOnlyList Permissions { get; init; } } public sealed class SetTeamPermissionOverrideDTO { public UserPermissionState State { get; init; } } public enum TeamPermissionResultStatus { Success, Unauthorized, Forbidden, NotFound, InvalidPermissionKey } public sealed class TeamPermissionResult { private TeamPermissionResult(TeamPermissionResultStatus status, T? value) { Status = status; Value = value; } public TeamPermissionResultStatus Status { get; } public T? Value { get; } public bool IsSuccess => Status == TeamPermissionResultStatus.Success; public static TeamPermissionResult Success(T value) => new(TeamPermissionResultStatus.Success, value); public static TeamPermissionResult Failure(TeamPermissionResultStatus status) => new(status, default); }