diff --git a/AsbCloudInfrastructure/Repository/UserRepository.cs b/AsbCloudInfrastructure/Repository/UserRepository.cs index fa69ac0d..5648b21b 100644 --- a/AsbCloudInfrastructure/Repository/UserRepository.cs +++ b/AsbCloudInfrastructure/Repository/UserRepository.cs @@ -62,11 +62,12 @@ namespace AsbCloudInfrastructure.Repository var users = await GetCacheUserAsync(token); if (users is null) return Enumerable.Empty(); - var dtos = users - .Select(d => Convert(d)); - foreach(var dto in dtos) + var dtos = new List(); + foreach(var user in users) { - dto.RoleNames = GetRolesNamesByIdUser(dto.Id); + var dto = Convert(user); + dto.RoleNames = GetRolesNamesByIdUser(user.Id); + dtos.Add(dto); }; return dtos; } @@ -111,6 +112,7 @@ namespace AsbCloudInfrastructure.Repository if (entity is null) return -1; entity.Id = dto.Id; + entity.Login = dto.Login; entity.Name = dto.Name; entity.Email = dto.Email; entity.Phone = dto.Phone; @@ -128,11 +130,18 @@ namespace AsbCloudInfrastructure.Repository { var user = (await GetCacheUserAsync(token)).FirstOrDefault(u => u.Id == id); if (user is null) - return 0; - var result = dbContext.Users.Remove(user); - await dbContext.SaveChangesAsync(token); - DropCacheUsers(); - return result.Entity.Id; + return 0; + var query = dbContext + .Users + .Where(u => u.Id == id); + if (query.Any()) + { + var result = dbContext.Users.Remove(query.First()); + await dbContext.SaveChangesAsync(token); + DropCacheUsers(); + return result.Entity.Id; + } + return -1; } public IEnumerable GetRolesByIdUser(int idUser, int nestedLevel = 0) @@ -168,9 +177,14 @@ namespace AsbCloudInfrastructure.Repository } private IEnumerable GetRolesNamesByIdUser(int idUser) - => GetRolesByIdUser(idUser, 7) - .Select(r => r.Caption) - .Distinct(); + { + var userRoles = GetRolesByIdUser(idUser, 7) + .Select(r => r.Caption) + .Distinct(); + if (userRoles.Any()) + return userRoles; + return Enumerable.Empty(); + } private async Task AssertLoginIsBusyAsync(string login, CancellationToken token) { @@ -184,7 +198,7 @@ namespace AsbCloudInfrastructure.Repository private IEnumerable GetCachRelationUserUserRoleCacheTag() { - var cache = memoryCache.GetOrCreate(userCacheTag, cacheEntry => + var cache = memoryCache.GetOrCreate(relationUserUserRoleCacheTag, cacheEntry => { cacheEntry.AbsoluteExpirationRelativeToNow = cacheObsolence; cacheEntry.SlidingExpiration = cacheObsolence; @@ -259,7 +273,7 @@ namespace AsbCloudInfrastructure.Repository { var dto = entity.Adapt(); return dto; - } + } } #nullable disable }