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 }