From 07fe9fcc5a148913922513cf6e7713c188cc2077 Mon Sep 17 00:00:00 2001 From: "ai.astrakhantsev" Date: Wed, 7 Dec 2022 15:04:36 +0500 Subject: [PATCH] =?UTF-8?q?#7987467=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AsbCloudApp/Data/ProcessMapDto.cs | 8 ++------ AsbCloudInfrastructure/DependencyInjection.cs | 2 +- ... => CrudWellRelatedCacheRepositoryBase.cs} | 6 +++--- ...se.cs => CrudWellRelatedRepositoryBase.cs} | 6 +++--- .../Repository/ProcessMapRepository.cs | 2 +- .../Repository/ScheduleRepository.cs | 2 +- .../Repository/SetpointsRequestRepository.cs | 2 +- AsbCloudWebApi/Controllers/CrudController.cs | 4 +++- .../Controllers/CrudWellRelatedController.cs | 19 ++++++++++++------- 9 files changed, 27 insertions(+), 24 deletions(-) rename AsbCloudInfrastructure/Repository/{CrudWellRelatedCacheServiceBase.cs => CrudWellRelatedCacheRepositoryBase.cs} (76%) rename AsbCloudInfrastructure/Repository/{CrudWellRelatedServiceBase.cs => CrudWellRelatedRepositoryBase.cs} (79%) diff --git a/AsbCloudApp/Data/ProcessMapDto.cs b/AsbCloudApp/Data/ProcessMapDto.cs index aae1ba2e..72990b03 100644 --- a/AsbCloudApp/Data/ProcessMapDto.cs +++ b/AsbCloudApp/Data/ProcessMapDto.cs @@ -8,20 +8,16 @@ namespace AsbCloudApp.Data /// public class ProcessMapDto : IId, IWellRelated { - /// /// - /// public int Id { get; set; } - /// /// - /// public int IdWell { get; set; } /// - /// Id пользователя + /// Id пользователя, поле заполнять не нужно, подставляется автоматически /// - public int IdUser { get; set; } + public int? IdUser { get; set; } /// /// Тип секции diff --git a/AsbCloudInfrastructure/DependencyInjection.cs b/AsbCloudInfrastructure/DependencyInjection.cs index e5578bfe..34311da8 100644 --- a/AsbCloudInfrastructure/DependencyInjection.cs +++ b/AsbCloudInfrastructure/DependencyInjection.cs @@ -129,7 +129,7 @@ namespace AsbCloudInfrastructure services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient, CrudWellRelatedServiceBase>(); + services.AddTransient, CrudWellRelatedRepositoryBase>(); services.AddTransient(); services.AddTransient(); services.AddTransient(); diff --git a/AsbCloudInfrastructure/Repository/CrudWellRelatedCacheServiceBase.cs b/AsbCloudInfrastructure/Repository/CrudWellRelatedCacheRepositoryBase.cs similarity index 76% rename from AsbCloudInfrastructure/Repository/CrudWellRelatedCacheServiceBase.cs rename to AsbCloudInfrastructure/Repository/CrudWellRelatedCacheRepositoryBase.cs index 9ac2c8b7..c392426f 100644 --- a/AsbCloudInfrastructure/Repository/CrudWellRelatedCacheServiceBase.cs +++ b/AsbCloudInfrastructure/Repository/CrudWellRelatedCacheRepositoryBase.cs @@ -11,14 +11,14 @@ using System.Threading.Tasks; namespace AsbCloudInfrastructure.Repository { #nullable enable - public class CrudWellRelatedCacheServiceBase : CrudCacheRepositoryBase, IRepositoryWellRelated + public class CrudWellRelatedCacheRepositoryBase : CrudCacheRepositoryBase, IRepositoryWellRelated where TDto : AsbCloudApp.Data.IId, AsbCloudApp.Data.IWellRelated where TEntity : class, IId, IWellRelated { - public CrudWellRelatedCacheServiceBase(IAsbCloudDbContext context, IMemoryCache memoryCache) + public CrudWellRelatedCacheRepositoryBase(IAsbCloudDbContext context, IMemoryCache memoryCache) : base(context, memoryCache) { } - public CrudWellRelatedCacheServiceBase(IAsbCloudDbContext context, IMemoryCache memoryCache, Func, IQueryable> makeQuery) + public CrudWellRelatedCacheRepositoryBase(IAsbCloudDbContext context, IMemoryCache memoryCache, Func, IQueryable> makeQuery) : base(context, memoryCache, makeQuery) { } public async Task?> GetByIdWellAsync(int idWell, CancellationToken token) diff --git a/AsbCloudInfrastructure/Repository/CrudWellRelatedServiceBase.cs b/AsbCloudInfrastructure/Repository/CrudWellRelatedRepositoryBase.cs similarity index 79% rename from AsbCloudInfrastructure/Repository/CrudWellRelatedServiceBase.cs rename to AsbCloudInfrastructure/Repository/CrudWellRelatedRepositoryBase.cs index eb59a94d..982d49e1 100644 --- a/AsbCloudInfrastructure/Repository/CrudWellRelatedServiceBase.cs +++ b/AsbCloudInfrastructure/Repository/CrudWellRelatedRepositoryBase.cs @@ -10,14 +10,14 @@ using System.Threading.Tasks; namespace AsbCloudInfrastructure.Repository { #nullable enable - public class CrudWellRelatedServiceBase : CrudRepositoryBase, IRepositoryWellRelated + public class CrudWellRelatedRepositoryBase : CrudRepositoryBase, IRepositoryWellRelated where TDto : AsbCloudApp.Data.IId, AsbCloudApp.Data.IWellRelated where TEntity : class, IId, IWellRelated { - public CrudWellRelatedServiceBase(IAsbCloudDbContext context) + public CrudWellRelatedRepositoryBase(IAsbCloudDbContext context) : base(context) { } - public CrudWellRelatedServiceBase(IAsbCloudDbContext context, Func, IQueryable> makeQuery) + public CrudWellRelatedRepositoryBase(IAsbCloudDbContext context, Func, IQueryable> makeQuery) : base(context, makeQuery) { } public async Task?> GetByIdWellAsync(int idWell, CancellationToken token) diff --git a/AsbCloudInfrastructure/Repository/ProcessMapRepository.cs b/AsbCloudInfrastructure/Repository/ProcessMapRepository.cs index 260fa925..0090c752 100644 --- a/AsbCloudInfrastructure/Repository/ProcessMapRepository.cs +++ b/AsbCloudInfrastructure/Repository/ProcessMapRepository.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace AsbCloudInfrastructure.Repository { #nullable enable - public class ProcessMapRepository : CrudWellRelatedServiceBase, + public class ProcessMapRepository : CrudWellRelatedRepositoryBase, IProcessMapRepository { private readonly IWellService wellService; diff --git a/AsbCloudInfrastructure/Repository/ScheduleRepository.cs b/AsbCloudInfrastructure/Repository/ScheduleRepository.cs index eaca8115..b43abe98 100644 --- a/AsbCloudInfrastructure/Repository/ScheduleRepository.cs +++ b/AsbCloudInfrastructure/Repository/ScheduleRepository.cs @@ -11,7 +11,7 @@ using System.Threading.Tasks; namespace AsbCloudInfrastructure.Repository { #nullable enable - public class ScheduleRepository : CrudWellRelatedServiceBase, IScheduleRepository + public class ScheduleRepository : CrudWellRelatedRepositoryBase, IScheduleRepository { private readonly IWellService wellService; diff --git a/AsbCloudInfrastructure/Repository/SetpointsRequestRepository.cs b/AsbCloudInfrastructure/Repository/SetpointsRequestRepository.cs index 325cae07..844ebcfe 100644 --- a/AsbCloudInfrastructure/Repository/SetpointsRequestRepository.cs +++ b/AsbCloudInfrastructure/Repository/SetpointsRequestRepository.cs @@ -11,7 +11,7 @@ using System.Linq; namespace AsbCloudInfrastructure.Repository { - public class SetpointsRequestRepository : CrudWellRelatedCacheServiceBase + public class SetpointsRequestRepository : CrudWellRelatedCacheRepositoryBase { private readonly IWellService wellService; diff --git a/AsbCloudWebApi/Controllers/CrudController.cs b/AsbCloudWebApi/Controllers/CrudController.cs index 4b0a6c19..0decf79a 100644 --- a/AsbCloudWebApi/Controllers/CrudController.cs +++ b/AsbCloudWebApi/Controllers/CrudController.cs @@ -11,6 +11,7 @@ using System.Threading.Tasks; // For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 namespace AsbCloudWebApi.Controllers { +#nullable enable /// /// CRUD контроллер для админки. /// @@ -55,7 +56,7 @@ namespace AsbCloudWebApi.Controllers /// запись [HttpGet("{id}")] [Permission] - public virtual async Task> GetAsync(int id, CancellationToken token) + public virtual async Task> GetOrDefaultAsync(int id, CancellationToken token) { var result = await service.GetOrDefaultAsync(id, token).ConfigureAwait(false); return Ok(result); @@ -139,4 +140,5 @@ namespace AsbCloudWebApi.Controllers return Ok(result); } } +#nullable disable } diff --git a/AsbCloudWebApi/Controllers/CrudWellRelatedController.cs b/AsbCloudWebApi/Controllers/CrudWellRelatedController.cs index 7cdf5570..3e7d1508 100644 --- a/AsbCloudWebApi/Controllers/CrudWellRelatedController.cs +++ b/AsbCloudWebApi/Controllers/CrudWellRelatedController.cs @@ -10,6 +10,7 @@ using System.Threading.Tasks; // For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 namespace AsbCloudWebApi.Controllers { +#nullable enable /// /// CRUD контроллер dto связных со скважиной для админки. /// @@ -75,14 +76,17 @@ namespace AsbCloudWebApi.Controllers /// /// запись [HttpGet("{id}")] - public override async Task> GetAsync(int id, CancellationToken token) + public override async Task> GetOrDefaultAsync(int id, CancellationToken token) { - var actionResult = await base.GetAsync(id, token); - // TODO: this can be nullref - var result = actionResult.Value; - if (!await UserHasAccesToWellAsync(result.IdWell, token)) - return Forbid(); - return Ok(result); + var actionResult = await base.GetOrDefaultAsync(id, token); + if(actionResult.Result is OkObjectResult okResult) + { + if (okResult.Value is IWellRelated wellRelated) + if (!await UserHasAccesToWellAsync(wellRelated.IdWell, token)) + return Forbid(); + } + + return actionResult; } /// @@ -157,4 +161,5 @@ namespace AsbCloudWebApi.Controllers return false; } } +#nullable disable }