Table of Contents

Class SeedPermissionsRepository

Namespace
KadicAuth.Infrastructure.Repositories
Assembly
KadicAuth.Infrastructure.dll
public class SeedPermissionsRepository : ISeedPermissionsRepository
Inheritance
object
SeedPermissionsRepository
Implements

Constructors

SeedPermissionsRepository(AuthDbContext)

public SeedPermissionsRepository(AuthDbContext context)

Parameters

context AuthDbContext

Methods

AddModule(Module)

Encola un módulo. No persiste: hace falta SaveChangesAsync(CancellationToken).

public void AddModule(Module module)

Parameters

module Module

AddPermission(Permission)

Encola un permiso. No persiste.

public void AddPermission(Permission permission)

Parameters

permission Permission

AddSubModule(SubModule)

Encola un submódulo. No persiste.

public void AddSubModule(SubModule subModule)

Parameters

subModule SubModule

BulkAssignToTenantRolesAsync(List<Guid>, List<Guid>, CancellationToken)

Inserta en TenantRolePermissions todos los pares (tenantRoleId, permissionId) que no existan aún. Devuelve la cantidad de filas insertadas.

public Task<int> BulkAssignToTenantRolesAsync(List<Guid> tenantRoleIds, List<Guid> permissionIds, CancellationToken ct = default)

Parameters

tenantRoleIds List<Guid>
permissionIds List<Guid>
ct CancellationToken

Returns

Task<int>

CreatePermissionAsync(Permission, CancellationToken)

public Task<Permission> CreatePermissionAsync(Permission permission, CancellationToken ct = default)

Parameters

permission Permission
ct CancellationToken

Returns

Task<Permission>

CreateSubModuleAsync(SubModule, CancellationToken)

public Task<SubModule> CreateSubModuleAsync(SubModule subModule, CancellationToken ct = default)

Parameters

subModule SubModule
ct CancellationToken

Returns

Task<SubModule>

ExecuteInTransactionAsync<T>(Func<CancellationToken, Task<T>>, CancellationToken)

Ejecuta work dentro de una transacción: o entra todo, o no entra nada. Antes cada fila hacía su propio SaveChanges, así que un fallo a mitad de siembra dejaba un estado parcial imposible de distinguir de uno bueno.

public Task<T> ExecuteInTransactionAsync<T>(Func<CancellationToken, Task<T>> work, CancellationToken ct = default)

Parameters

work Func<CancellationToken, Task<T>>
ct CancellationToken

Returns

Task<T>

Type Parameters

T

GetAllActiveTenantRoleIdsAsync(CancellationToken)

Devuelve los IDs de todos los TenantRoles activos de todos los tenants.

public Task<List<Guid>> GetAllActiveTenantRoleIdsAsync(CancellationToken ct = default)

Parameters

ct CancellationToken

Returns

Task<List<Guid>>

GetAllModuleKeysAsync(CancellationToken)

public Task<HashSet<string>> GetAllModuleKeysAsync(CancellationToken ct)

Parameters

ct CancellationToken

Returns

Task<HashSet<string>>

GetAllModulesByKeyAsync(CancellationToken)

Todos los módulos, indexados por ModuleKey (case-insensitive).

public Task<Dictionary<string, Module>> GetAllModulesByKeyAsync(CancellationToken ct = default)

Parameters

ct CancellationToken

Returns

Task<Dictionary<string, Module>>

GetAllPermissionsForDiffAsync(CancellationToken)

public Task<Dictionary<string, (Guid Id, string Name, string? Description, Guid SubModuleId)>> GetAllPermissionsForDiffAsync(CancellationToken ct)

Parameters

ct CancellationToken

Returns

Task<Dictionary<string, (Guid Id, string Name, string Description, Guid SubModuleId)>>

GetAllPermissionsTrackedAsync(CancellationToken)

Todos los permisos, rastreados por el contexto para poder actualizarlos.

public Task<List<Permission>> GetAllPermissionsTrackedAsync(CancellationToken ct = default)

Parameters

ct CancellationToken

Returns

Task<List<Permission>>

GetAllSubModulesAsync(CancellationToken)

Todos los submódulos, para indexar por (ModuleId, Slug).

public Task<List<SubModule>> GetAllSubModulesAsync(CancellationToken ct = default)

Parameters

ct CancellationToken

Returns

Task<List<SubModule>>

GetModuleByKeyAsync(string, CancellationToken)

public Task<Module?> GetModuleByKeyAsync(string moduleKey, CancellationToken ct = default)

Parameters

moduleKey string
ct CancellationToken

Returns

Task<Module>

GetPermissionByCodeAsync(string, CancellationToken)

public Task<Permission?> GetPermissionByCodeAsync(string code, CancellationToken ct = default)

Parameters

code string
ct CancellationToken

Returns

Task<Permission>

GetSubModuleBySlugAsync(Guid, string, CancellationToken)

Busca un submódulo por slug, ESCOPEADO al módulo dado. Distintos módulos pueden declarar submódulos con el mismo slug de forma legítima (ej. UiMenu espeja el nombre de cada feature real) — nunca buscar por slug sin filtrar por ModuleId, o se reutilizará por error el submódulo de otro módulo (bug real encontrado: UI_MENU."accounts-receivable" vs ADJUSTMENT."accounts-receivable").

public Task<SubModule?> GetSubModuleBySlugAsync(Guid moduleId, string slug, CancellationToken ct = default)

Parameters

moduleId Guid
slug string
ct CancellationToken

Returns

Task<SubModule>

GetTenantRoleIdsAsync(List<Guid>?, List<string>?, List<Guid>?, CancellationToken)

Tenant-roles activos acotados por tenant, rol o tenant-role. Los criterios se combinan con OR; si no se indica ninguno, no devuelve nada — el modo Selected sin selección no debe caer en "todos" por accidente.

public Task<List<Guid>> GetTenantRoleIdsAsync(List<Guid>? tenantIds, List<string>? roleCodes, List<Guid>? tenantRoleIds, CancellationToken ct = default)

Parameters

tenantIds List<Guid>
roleCodes List<string>
tenantRoleIds List<Guid>
ct CancellationToken

Returns

Task<List<Guid>>

GetUnassignedPermissionsAsync(CancellationToken)

public Task<List<(Guid Id, string Code, string Name, string? SubModuleName)>> GetUnassignedPermissionsAsync(CancellationToken ct)

Parameters

ct CancellationToken

Returns

Task<List<(Guid Id, string Code, string Name, string SubModuleName)>>

SaveChangesAsync(CancellationToken)

Persiste todo lo encolado en una sola operación.

public Task<int> SaveChangesAsync(CancellationToken ct = default)

Parameters

ct CancellationToken

Returns

Task<int>