diff --git a/src/Infrastructure/TakeoutSaaS.Infrastructure/Identity/Persistence/EfRoleRepository.cs b/src/Infrastructure/TakeoutSaaS.Infrastructure/Identity/Persistence/EfRoleRepository.cs index a6c43c4..10f17d8 100644 --- a/src/Infrastructure/TakeoutSaaS.Infrastructure/Identity/Persistence/EfRoleRepository.cs +++ b/src/Infrastructure/TakeoutSaaS.Infrastructure/Identity/Persistence/EfRoleRepository.cs @@ -10,20 +10,20 @@ namespace TakeoutSaaS.Infrastructure.Identity.Persistence; public sealed class EfRoleRepository(IdentityDbContext dbContext) : IRoleRepository { public Task FindByIdAsync(long roleId, long tenantId, CancellationToken cancellationToken = default) - => dbContext.Roles.AsNoTracking().FirstOrDefaultAsync(x => x.Id == roleId && x.TenantId == tenantId, cancellationToken); + => dbContext.Roles.AsNoTracking().FirstOrDefaultAsync(x => x.Id == roleId && x.TenantId == tenantId && x.DeletedAt == null, cancellationToken); public Task FindByCodeAsync(string code, long tenantId, CancellationToken cancellationToken = default) - => dbContext.Roles.AsNoTracking().FirstOrDefaultAsync(x => x.Code == code && x.TenantId == tenantId, cancellationToken); + => dbContext.Roles.AsNoTracking().FirstOrDefaultAsync(x => x.Code == code && x.TenantId == tenantId && x.DeletedAt == null, cancellationToken); public Task> GetByIdsAsync(long tenantId, IEnumerable roleIds, CancellationToken cancellationToken = default) => dbContext.Roles.AsNoTracking() - .Where(x => x.TenantId == tenantId && roleIds.Contains(x.Id)) + .Where(x => x.TenantId == tenantId && roleIds.Contains(x.Id) && x.DeletedAt == null) .ToListAsync(cancellationToken) .ContinueWith(t => (IReadOnlyList)t.Result, cancellationToken); public Task> SearchAsync(long tenantId, string? keyword, CancellationToken cancellationToken = default) { - var query = dbContext.Roles.AsNoTracking().Where(x => x.TenantId == tenantId); + var query = dbContext.Roles.AsNoTracking().Where(x => x.TenantId == tenantId && x.DeletedAt == null); if (!string.IsNullOrWhiteSpace(keyword)) { var normalized = keyword.Trim(); @@ -51,7 +51,8 @@ public sealed class EfRoleRepository(IdentityDbContext dbContext) : IRoleReposit var entity = await dbContext.Roles.FirstOrDefaultAsync(x => x.Id == roleId && x.TenantId == tenantId, cancellationToken); if (entity != null) { - dbContext.Roles.Remove(entity); + entity.DeletedAt = DateTime.UtcNow; + dbContext.Roles.Update(entity); } }