From 96dae2f247c882811c7117a53593d122f8b28544 Mon Sep 17 00:00:00 2001 From: eugeniy_ivanov Date: Tue, 14 Feb 2023 18:36:25 +0500 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA?= =?UTF-8?q?=20=D0=B2=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Repository/UserRepository.cs | 42 ++++++++++++------- 1 file changed, 28 insertions(+), 14 deletions(-) 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 }