forked from ddrilling/AsbCloudServer
Merge branch 'dev' of http://46.146.209.148:8080/DDrilling/AsbCloudServer into dev
This commit is contained in:
commit
7c31f7ce76
@ -27,6 +27,16 @@ namespace AsbCloudApp.Data
|
|||||||
/// Идентификатор критерия бурения
|
/// Идентификатор критерия бурения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public short IdFeedRegulator { get; set; }
|
public short IdFeedRegulator { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Наименование критерия бурения
|
||||||
|
/// </summary>
|
||||||
|
public string NameFeedRegulator { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Количество включений
|
||||||
|
/// </summary>
|
||||||
|
public int NumberInclusions { get; set; }
|
||||||
}
|
}
|
||||||
#nullable disable
|
#nullable disable
|
||||||
}
|
}
|
||||||
|
@ -90,10 +90,10 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
|
|
||||||
public async Task<int> UpdateAsync(UserRoleDto dto, CancellationToken token)
|
public async Task<int> UpdateAsync(UserRoleDto dto, CancellationToken token)
|
||||||
{
|
{
|
||||||
var entity = Convert(dto);
|
|
||||||
await UpdatePermissionsAsync(dto, token);
|
await UpdatePermissionsAsync(dto, token);
|
||||||
await UpdateIncludedRolesAsync(dto, token);
|
await UpdateIncludedRolesAsync(dto, token);
|
||||||
|
|
||||||
|
var entity = Convert(dto);
|
||||||
var result = dbContext.UserRoles.Upsert(entity);
|
var result = dbContext.UserRoles.Upsert(entity);
|
||||||
await dbContext.SaveChangesAsync(token);
|
await dbContext.SaveChangesAsync(token);
|
||||||
DropCacheUserRole();
|
DropCacheUserRole();
|
||||||
@ -177,13 +177,29 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private IEnumerable<UserRoleDto> GetNestedByIds(IEnumerable<int> ids, int recursionLevel = 7)
|
||||||
|
{
|
||||||
|
var roles = new List<UserRoleDto>();
|
||||||
|
foreach (var id in ids)
|
||||||
|
roles.AddRange(GetNestedById(id, recursionLevel));
|
||||||
|
|
||||||
|
return roles;
|
||||||
|
}
|
||||||
|
|
||||||
private async Task UpdateIncludedRolesAsync(UserRoleDto dto, CancellationToken token)
|
private async Task UpdateIncludedRolesAsync(UserRoleDto dto, CancellationToken token)
|
||||||
{
|
{
|
||||||
if (dto?.Roles is null)
|
if (dto?.Roles is null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var relations = (await GetCacheRelationUserRoleUserRoleAsync(token).ConfigureAwait(false))
|
var idsIncludeRole = GetNestedByIds(dto.Roles.Select(x => x.Id)).Select(x => x.Id);
|
||||||
.Where(r => r.Id == dto.Id);
|
|
||||||
|
if (idsIncludeRole is not null && idsIncludeRole.Any(x => x == dto.Id))
|
||||||
|
throw new ArgumentInvalidException("Invalid include role (self reference)", nameof(dto));
|
||||||
|
|
||||||
|
var relations = await dbContext.RelationUserRoleUserRoles
|
||||||
|
.Where(r => r.Id == dto.Id)
|
||||||
|
.ToListAsync(token)
|
||||||
|
.ConfigureAwait(false);
|
||||||
|
|
||||||
dbContext.RelationUserRoleUserRoles.RemoveRange(relations);
|
dbContext.RelationUserRoleUserRoles.RemoveRange(relations);
|
||||||
|
|
||||||
@ -201,9 +217,10 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
if (dto?.Permissions is null)
|
if (dto?.Permissions is null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var relations = (await GetCacheRelationUserRolePermissionsAsync(token).ConfigureAwait(false))
|
var relations = await dbContext.RelationUserRolePermissions
|
||||||
.Where(r => r.IdUserRole == dto.Id);
|
.Where(r => r.IdUserRole == dto.Id)
|
||||||
|
.ToListAsync(token)
|
||||||
|
.ConfigureAwait(false);
|
||||||
dbContext.RelationUserRolePermissions.RemoveRange(relations);
|
dbContext.RelationUserRolePermissions.RemoveRange(relations);
|
||||||
|
|
||||||
if (dto.Permissions.Any())
|
if (dto.Permissions.Any())
|
||||||
@ -235,19 +252,9 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
private void DropCacheUserRole()
|
private void DropCacheUserRole()
|
||||||
=> dbContext.RelationUserUserRoles.DropCache(userRoleCacheTag);
|
=> dbContext.RelationUserUserRoles.DropCache(userRoleCacheTag);
|
||||||
|
|
||||||
private Task<IEnumerable<RelationUserRoleUserRole>> GetCacheRelationUserRoleUserRoleAsync(CancellationToken token)
|
|
||||||
=> dbContext.RelationUserRoleUserRoles
|
|
||||||
.Include(r => r.IncludeRole)
|
|
||||||
.Include(r => r.Role)
|
|
||||||
.FromCacheAsync(relationUserRoleUserRoleCacheTag, relationCacheObsolence, token);
|
|
||||||
private void DropCacheRelationUserRoleUserRole()
|
private void DropCacheRelationUserRoleUserRole()
|
||||||
=> dbContext.RelationUserUserRoles.DropCache(relationUserRoleUserRoleCacheTag);
|
=> dbContext.RelationUserUserRoles.DropCache(relationUserRoleUserRoleCacheTag);
|
||||||
|
|
||||||
private Task<IEnumerable<RelationUserRolePermission>> GetCacheRelationUserRolePermissionsAsync(CancellationToken token)
|
|
||||||
=> dbContext.RelationUserRolePermissions
|
|
||||||
.Include(r => r.UserRole)
|
|
||||||
.Include(r => r.Permission)
|
|
||||||
.FromCacheAsync(relationUserRolePermissionsCacheTag, relationCacheObsolence, token);
|
|
||||||
private IEnumerable<RelationUserRolePermission> GetCacheRelationUserRolePermissions()
|
private IEnumerable<RelationUserRolePermission> GetCacheRelationUserRolePermissions()
|
||||||
=> dbContext.RelationUserRolePermissions
|
=> dbContext.RelationUserRolePermissions
|
||||||
.Include(r => r.UserRole)
|
.Include(r => r.UserRole)
|
||||||
|
@ -15,6 +15,14 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
{
|
{
|
||||||
private readonly ILimitingParameterRepository limitingParameterRepository;
|
private readonly ILimitingParameterRepository limitingParameterRepository;
|
||||||
private readonly IWellService wellService;
|
private readonly IWellService wellService;
|
||||||
|
private readonly Dictionary<int, string> feedRegulatorData = new Dictionary<int, string>()
|
||||||
|
{
|
||||||
|
{ 0, "Нет ограничения" },
|
||||||
|
{ 1, "МСП" },
|
||||||
|
{ 2, "Давление" },
|
||||||
|
{ 3, "Осевая нагрузка" },
|
||||||
|
{ 4, "Момент" }
|
||||||
|
};
|
||||||
|
|
||||||
public LimitingParameterService(ILimitingParameterRepository limitingParameterRepository,
|
public LimitingParameterService(ILimitingParameterRepository limitingParameterRepository,
|
||||||
IWellService wellService)
|
IWellService wellService)
|
||||||
@ -46,7 +54,9 @@ namespace AsbCloudInfrastructure.Services
|
|||||||
IdWell = well.Id,
|
IdWell = well.Id,
|
||||||
IdFeedRegulator = item.Key,
|
IdFeedRegulator = item.Key,
|
||||||
Depth = allItemDepths,
|
Depth = allItemDepths,
|
||||||
TotalMinutes = (float)allItemDates
|
TotalMinutes = (float)allItemDates,
|
||||||
|
NumberInclusions = item.Count(),
|
||||||
|
NameFeedRegulator = feedRegulatorData.GetValueOrDefault(item.Key) ?? $"Id: {item.Key}"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user