namespace SharepointToolbox.Core.Models;

/// <summary>
/// Flat record representing one permission assignment on a SharePoint object.
/// Mirrors the $entry object built by the PowerShell Generate-PnPSitePermissionRpt function.
/// </summary>
public record PermissionEntry(
    string ObjectType,          // "Site Collection" | "Site" | "List" | "Folder"
    string Title,
    string Url,
    bool   HasUniquePermissions,
    string Users,               // Semicolon-joined display names
    string UserLogins,          // Semicolon-joined login names
    string PermissionLevels,    // Semicolon-joined role names (Limited Access already removed)
    string GrantedThrough,      // "Direct Permissions" | "SharePoint Group: <name>"
    string PrincipalType,       // "SharePointGroup" | "User" | "External User"
    bool   WasAutoElevated = false, // Set to true when site admin was auto-granted to access this entry
    // Resolved target for Limited Access System Group For Web/List and SharingLinks
    // groups — populated when GrantedThrough is one of those system groups, null otherwise.
    string? TargetUrl = null,
    string? TargetLabel = null,
    string? SharingLinkType = null  // OrganizationEdit | OrganizationView | AnonymousEdit | AnonymousView | etc.
);
