#7987467 Исправления

This commit is contained in:
ai.astrakhantsev 2022-12-07 15:04:36 +05:00
parent ff16974312
commit 07fe9fcc5a
9 changed files with 27 additions and 24 deletions

View File

@ -8,20 +8,16 @@ namespace AsbCloudApp.Data
/// </summary> /// </summary>
public class ProcessMapDto : IId, IWellRelated public class ProcessMapDto : IId, IWellRelated
{ {
/// <summary>
/// <inheritdoc/> /// <inheritdoc/>
/// </summary>
public int Id { get; set; } public int Id { get; set; }
/// <summary>
/// <inheritdoc/> /// <inheritdoc/>
/// </summary>
public int IdWell { get; set; } public int IdWell { get; set; }
/// <summary> /// <summary>
/// Id пользователя /// Id пользователя, поле заполнять не нужно, подставляется автоматически
/// </summary> /// </summary>
public int IdUser { get; set; } public int? IdUser { get; set; }
/// <summary> /// <summary>
/// Тип секции /// Тип секции

View File

@ -129,7 +129,7 @@ namespace AsbCloudInfrastructure
services.AddTransient<IDetectedOperationService, DetectedOperationService>(); services.AddTransient<IDetectedOperationService, DetectedOperationService>();
services.AddTransient<ISubsystemOperationTimeService, SubsystemOperationTimeService>(); services.AddTransient<ISubsystemOperationTimeService, SubsystemOperationTimeService>();
services.AddTransient<IScheduleRepository, ScheduleRepository>(); services.AddTransient<IScheduleRepository, ScheduleRepository>();
services.AddTransient<IRepositoryWellRelated<OperationValueDto>, CrudWellRelatedServiceBase<OperationValueDto, OperationValue>>(); services.AddTransient<IRepositoryWellRelated<OperationValueDto>, CrudWellRelatedRepositoryBase<OperationValueDto, OperationValue>>();
services.AddTransient<IUserSettingsRepository, UserSettingsRepository>(); services.AddTransient<IUserSettingsRepository, UserSettingsRepository>();
services.AddTransient<IWellFinalDocumentsService, WellFinalDocumentsService>(); services.AddTransient<IWellFinalDocumentsService, WellFinalDocumentsService>();
services.AddTransient<IFileCategoryService, FileCategoryService>(); services.AddTransient<IFileCategoryService, FileCategoryService>();

View File

@ -11,14 +11,14 @@ using System.Threading.Tasks;
namespace AsbCloudInfrastructure.Repository namespace AsbCloudInfrastructure.Repository
{ {
#nullable enable #nullable enable
public class CrudWellRelatedCacheServiceBase<TDto, TEntity> : CrudCacheRepositoryBase<TDto, TEntity>, IRepositoryWellRelated<TDto> public class CrudWellRelatedCacheRepositoryBase<TDto, TEntity> : CrudCacheRepositoryBase<TDto, TEntity>, IRepositoryWellRelated<TDto>
where TDto : AsbCloudApp.Data.IId, AsbCloudApp.Data.IWellRelated where TDto : AsbCloudApp.Data.IId, AsbCloudApp.Data.IWellRelated
where TEntity : class, IId, IWellRelated where TEntity : class, IId, IWellRelated
{ {
public CrudWellRelatedCacheServiceBase(IAsbCloudDbContext context, IMemoryCache memoryCache) public CrudWellRelatedCacheRepositoryBase(IAsbCloudDbContext context, IMemoryCache memoryCache)
: base(context, memoryCache) { } : base(context, memoryCache) { }
public CrudWellRelatedCacheServiceBase(IAsbCloudDbContext context, IMemoryCache memoryCache, Func<DbSet<TEntity>, IQueryable<TEntity>> makeQuery) public CrudWellRelatedCacheRepositoryBase(IAsbCloudDbContext context, IMemoryCache memoryCache, Func<DbSet<TEntity>, IQueryable<TEntity>> makeQuery)
: base(context, memoryCache, makeQuery) { } : base(context, memoryCache, makeQuery) { }
public async Task<IEnumerable<TDto>?> GetByIdWellAsync(int idWell, CancellationToken token) public async Task<IEnumerable<TDto>?> GetByIdWellAsync(int idWell, CancellationToken token)

View File

@ -10,14 +10,14 @@ using System.Threading.Tasks;
namespace AsbCloudInfrastructure.Repository namespace AsbCloudInfrastructure.Repository
{ {
#nullable enable #nullable enable
public class CrudWellRelatedServiceBase<TDto, TEntity> : CrudRepositoryBase<TDto, TEntity>, IRepositoryWellRelated<TDto> public class CrudWellRelatedRepositoryBase<TDto, TEntity> : CrudRepositoryBase<TDto, TEntity>, IRepositoryWellRelated<TDto>
where TDto : AsbCloudApp.Data.IId, AsbCloudApp.Data.IWellRelated where TDto : AsbCloudApp.Data.IId, AsbCloudApp.Data.IWellRelated
where TEntity : class, IId, IWellRelated where TEntity : class, IId, IWellRelated
{ {
public CrudWellRelatedServiceBase(IAsbCloudDbContext context) public CrudWellRelatedRepositoryBase(IAsbCloudDbContext context)
: base(context) { } : base(context) { }
public CrudWellRelatedServiceBase(IAsbCloudDbContext context, Func<DbSet<TEntity>, IQueryable<TEntity>> makeQuery) public CrudWellRelatedRepositoryBase(IAsbCloudDbContext context, Func<DbSet<TEntity>, IQueryable<TEntity>> makeQuery)
: base(context, makeQuery) { } : base(context, makeQuery) { }
public async Task<IEnumerable<TDto>?> GetByIdWellAsync(int idWell, CancellationToken token) public async Task<IEnumerable<TDto>?> GetByIdWellAsync(int idWell, CancellationToken token)

View File

@ -12,7 +12,7 @@ using System.Threading.Tasks;
namespace AsbCloudInfrastructure.Repository namespace AsbCloudInfrastructure.Repository
{ {
#nullable enable #nullable enable
public class ProcessMapRepository : CrudWellRelatedServiceBase<ProcessMapDto, ProcessMap>, public class ProcessMapRepository : CrudWellRelatedRepositoryBase<ProcessMapDto, ProcessMap>,
IProcessMapRepository IProcessMapRepository
{ {
private readonly IWellService wellService; private readonly IWellService wellService;

View File

@ -11,7 +11,7 @@ using System.Threading.Tasks;
namespace AsbCloudInfrastructure.Repository namespace AsbCloudInfrastructure.Repository
{ {
#nullable enable #nullable enable
public class ScheduleRepository : CrudWellRelatedServiceBase<ScheduleDto, Schedule>, IScheduleRepository public class ScheduleRepository : CrudWellRelatedRepositoryBase<ScheduleDto, Schedule>, IScheduleRepository
{ {
private readonly IWellService wellService; private readonly IWellService wellService;

View File

@ -11,7 +11,7 @@ using System.Linq;
namespace AsbCloudInfrastructure.Repository namespace AsbCloudInfrastructure.Repository
{ {
public class SetpointsRequestRepository : CrudWellRelatedCacheServiceBase<SetpointsRequestDto, SetpointsRequest> public class SetpointsRequestRepository : CrudWellRelatedCacheRepositoryBase<SetpointsRequestDto, SetpointsRequest>
{ {
private readonly IWellService wellService; private readonly IWellService wellService;

View File

@ -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 // For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
namespace AsbCloudWebApi.Controllers namespace AsbCloudWebApi.Controllers
{ {
#nullable enable
/// <summary> /// <summary>
/// CRUD контроллер для админки. /// CRUD контроллер для админки.
/// </summary> /// </summary>
@ -55,7 +56,7 @@ namespace AsbCloudWebApi.Controllers
/// <returns>запись</returns> /// <returns>запись</returns>
[HttpGet("{id}")] [HttpGet("{id}")]
[Permission] [Permission]
public virtual async Task<ActionResult<T>> GetAsync(int id, CancellationToken token) public virtual async Task<ActionResult<T?>> GetOrDefaultAsync(int id, CancellationToken token)
{ {
var result = await service.GetOrDefaultAsync(id, token).ConfigureAwait(false); var result = await service.GetOrDefaultAsync(id, token).ConfigureAwait(false);
return Ok(result); return Ok(result);
@ -139,4 +140,5 @@ namespace AsbCloudWebApi.Controllers
return Ok(result); return Ok(result);
} }
} }
#nullable disable
} }

View File

@ -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 // For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
namespace AsbCloudWebApi.Controllers namespace AsbCloudWebApi.Controllers
{ {
#nullable enable
/// <summary> /// <summary>
/// CRUD контроллер dto связных со скважиной для админки. /// CRUD контроллер dto связных со скважиной для админки.
/// </summary> /// </summary>
@ -75,14 +76,17 @@ namespace AsbCloudWebApi.Controllers
/// <param name="token"></param> /// <param name="token"></param>
/// <returns>запись</returns> /// <returns>запись</returns>
[HttpGet("{id}")] [HttpGet("{id}")]
public override async Task<ActionResult<T>> GetAsync(int id, CancellationToken token) public override async Task<ActionResult<T?>> GetOrDefaultAsync(int id, CancellationToken token)
{ {
var actionResult = await base.GetAsync(id, token); var actionResult = await base.GetOrDefaultAsync(id, token);
// TODO: this can be nullref if(actionResult.Result is OkObjectResult okResult)
var result = actionResult.Value; {
if (!await UserHasAccesToWellAsync(result.IdWell, token)) if (okResult.Value is IWellRelated wellRelated)
return Forbid(); if (!await UserHasAccesToWellAsync(wellRelated.IdWell, token))
return Ok(result); return Forbid();
}
return actionResult;
} }
/// <summary> /// <summary>
@ -157,4 +161,5 @@ namespace AsbCloudWebApi.Controllers
return false; return false;
} }
} }
#nullable disable
} }