TourIAm/TIAM.Database/DbSets/Permissions/PermissionsDbSetExtensions.cs

45 lines
2.5 KiB
C#

using TIAM.Database.DbContexts.ServiceProviders;
using TIAM.Database.DbSets.Users;
using TIAM.Entities.Permissions;
namespace TIAM.Database.DbSets.Permissions;
public static class PermissionsDbSetExtensions
{
//public static IQueryable<PermissionGroup> GetPermissionGroupByContextMapping(this IPermissionsDbSetContext ctx, PermissionContextMapping permissionContextMapping)
//{
// if (permissionContextMapping.SubjectType == PermissionContextMappingSubjectType.Group)
// return ctx.PermissionGroups.Where(x => x.Id == permissionContextMapping.SubjectId);
// else if (permissionContextMapping.SubjectType == PermissionContextMappingSubjectType.User)
// return ctx.PermissionGroups.Where(x => x.Id == permissionContextMapping.SubjectId);
//}
//public static IQueryable<PermissionContextMapping> GetPermissionContextMappingByAssignedUserId(this IPermissionsDbSetContext ctx, Guid assignedUserId)
//{
// var subjectIds = ctx.GetAssignedUsersByContextId(assignedUserId).Select(x => x.Id).
// Concat(ctx.PermissionGroupUserMappings.Where(x => x.AssignedUserId == assignedUserId).Select(x => x.)).ToHashSet();
// return ctx.GetPermissionContextMappingsBySubjectIds(subjectIds);
//}
public static IQueryable<PermissionContextMapping> GetPermissionContextMappingsBySubjectIds(this IPermissionsDbSetContext ctx, IEnumerable<Guid> subjectIds)
=> ctx.PermissionContextMappings.Where(x => subjectIds.Contains(x.SubjectId));
public static PermissionContextMapping? GetPermissionContextMappingBySubjectId(this IPermissionsDbSetContext ctx, Guid subjectId)
=> ctx.PermissionContextMappings.FirstOrDefault(x => x.SubjectId == subjectId);
public static void RemoveContextMappingBySubjectId(this IPermissionsDbSetContext ctx, Guid subjectId)
{
var contextMapping = ctx.GetPermissionContextMappingBySubjectId(subjectId);
if (contextMapping == null) return;
ctx.PermissionContextMappings.Remove(contextMapping);
}
public static IQueryable<PermissionGroupUserMapping> GetAllPermissionGroupsByAssignedUserId(this IPermissionsDbSetContext ctx, Guid assignedUserId)
=> ctx.PermissionGroupUserMappings.Where(x => x.AssignedUserId == assignedUserId);
public static void RemoveAssingedUserFromPermissionGroups(this IPermissionsDbSetContext ctx, Guid assignedUserId)
=> ctx.PermissionGroupUserMappings.RemoveRange(ctx.GetAllPermissionGroupsByAssignedUserId(assignedUserId));
}