feat(15-01): add LocationInfo and ConsolidatedPermissionEntry model records

- LocationInfo record holds five location fields (SiteUrl, SiteTitle, ObjectTitle, ObjectUrl, ObjectType)
- ConsolidatedPermissionEntry record holds key fields plus IReadOnlyList<LocationInfo> Locations
- LocationCount computed property returns Locations.Count
This commit is contained in:
Dev
2026-04-09 11:41:05 +02:00
parent f5b3f08f88
commit 270329bd82
2 changed files with 34 additions and 0 deletions

View File

@@ -0,0 +1,21 @@
namespace SharepointToolbox.Core.Models;
/// <summary>
/// A consolidated permission row produced by grouping UserAccessEntry rows
/// that share the same (UserLogin, PermissionLevel, AccessType, GrantedThrough) key.
/// All distinct locations for that key are collected into <see cref="Locations"/>.
/// </summary>
public record ConsolidatedPermissionEntry(
string UserDisplayName,
string UserLogin,
string PermissionLevel,
AccessType AccessType,
string GrantedThrough,
bool IsHighPrivilege,
bool IsExternalUser,
IReadOnlyList<LocationInfo> Locations
)
{
/// <summary>Convenience count — equals Locations.Count.</summary>
public int LocationCount => Locations.Count;
}

View File

@@ -0,0 +1,13 @@
namespace SharepointToolbox.Core.Models;
/// <summary>
/// Holds the five location-related fields extracted from a UserAccessEntry
/// when permission rows are merged into a consolidated entry.
/// </summary>
public record LocationInfo(
string SiteUrl,
string SiteTitle,
string ObjectTitle,
string ObjectUrl,
string ObjectType
);