forked from ddrilling/AsbCloudServer
#7987467 Исправления
This commit is contained in:
parent
ff16974312
commit
07fe9fcc5a
@ -8,20 +8,16 @@ namespace AsbCloudApp.Data
|
||||
/// </summary>
|
||||
public class ProcessMapDto : IId, IWellRelated
|
||||
{
|
||||
/// <summary>
|
||||
/// <inheritdoc/>
|
||||
/// </summary>
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// <inheritdoc/>
|
||||
/// </summary>
|
||||
public int IdWell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Id пользователя
|
||||
/// Id пользователя, поле заполнять не нужно, подставляется автоматически
|
||||
/// </summary>
|
||||
public int IdUser { get; set; }
|
||||
public int? IdUser { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Тип секции
|
||||
|
@ -129,7 +129,7 @@ namespace AsbCloudInfrastructure
|
||||
services.AddTransient<IDetectedOperationService, DetectedOperationService>();
|
||||
services.AddTransient<ISubsystemOperationTimeService, SubsystemOperationTimeService>();
|
||||
services.AddTransient<IScheduleRepository, ScheduleRepository>();
|
||||
services.AddTransient<IRepositoryWellRelated<OperationValueDto>, CrudWellRelatedServiceBase<OperationValueDto, OperationValue>>();
|
||||
services.AddTransient<IRepositoryWellRelated<OperationValueDto>, CrudWellRelatedRepositoryBase<OperationValueDto, OperationValue>>();
|
||||
services.AddTransient<IUserSettingsRepository, UserSettingsRepository>();
|
||||
services.AddTransient<IWellFinalDocumentsService, WellFinalDocumentsService>();
|
||||
services.AddTransient<IFileCategoryService, FileCategoryService>();
|
||||
|
@ -11,14 +11,14 @@ using System.Threading.Tasks;
|
||||
namespace AsbCloudInfrastructure.Repository
|
||||
{
|
||||
#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 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<DbSet<TEntity>, IQueryable<TEntity>> makeQuery)
|
||||
public CrudWellRelatedCacheRepositoryBase(IAsbCloudDbContext context, IMemoryCache memoryCache, Func<DbSet<TEntity>, IQueryable<TEntity>> makeQuery)
|
||||
: base(context, memoryCache, makeQuery) { }
|
||||
|
||||
public async Task<IEnumerable<TDto>?> GetByIdWellAsync(int idWell, CancellationToken token)
|
@ -10,14 +10,14 @@ using System.Threading.Tasks;
|
||||
namespace AsbCloudInfrastructure.Repository
|
||||
{
|
||||
#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 TEntity : class, IId, IWellRelated
|
||||
{
|
||||
public CrudWellRelatedServiceBase(IAsbCloudDbContext context)
|
||||
public CrudWellRelatedRepositoryBase(IAsbCloudDbContext 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) { }
|
||||
|
||||
public async Task<IEnumerable<TDto>?> GetByIdWellAsync(int idWell, CancellationToken token)
|
@ -12,7 +12,7 @@ using System.Threading.Tasks;
|
||||
namespace AsbCloudInfrastructure.Repository
|
||||
{
|
||||
#nullable enable
|
||||
public class ProcessMapRepository : CrudWellRelatedServiceBase<ProcessMapDto, ProcessMap>,
|
||||
public class ProcessMapRepository : CrudWellRelatedRepositoryBase<ProcessMapDto, ProcessMap>,
|
||||
IProcessMapRepository
|
||||
{
|
||||
private readonly IWellService wellService;
|
||||
|
@ -11,7 +11,7 @@ using System.Threading.Tasks;
|
||||
namespace AsbCloudInfrastructure.Repository
|
||||
{
|
||||
#nullable enable
|
||||
public class ScheduleRepository : CrudWellRelatedServiceBase<ScheduleDto, Schedule>, IScheduleRepository
|
||||
public class ScheduleRepository : CrudWellRelatedRepositoryBase<ScheduleDto, Schedule>, IScheduleRepository
|
||||
{
|
||||
private readonly IWellService wellService;
|
||||
|
||||
|
@ -11,7 +11,7 @@ using System.Linq;
|
||||
|
||||
namespace AsbCloudInfrastructure.Repository
|
||||
{
|
||||
public class SetpointsRequestRepository : CrudWellRelatedCacheServiceBase<SetpointsRequestDto, SetpointsRequest>
|
||||
public class SetpointsRequestRepository : CrudWellRelatedCacheRepositoryBase<SetpointsRequestDto, SetpointsRequest>
|
||||
{
|
||||
private readonly IWellService wellService;
|
||||
|
||||
|
@ -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
|
||||
/// <summary>
|
||||
/// CRUD контроллер для админки.
|
||||
/// </summary>
|
||||
@ -55,7 +56,7 @@ namespace AsbCloudWebApi.Controllers
|
||||
/// <returns>запись</returns>
|
||||
[HttpGet("{id}")]
|
||||
[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);
|
||||
return Ok(result);
|
||||
@ -139,4 +140,5 @@ namespace AsbCloudWebApi.Controllers
|
||||
return Ok(result);
|
||||
}
|
||||
}
|
||||
#nullable disable
|
||||
}
|
||||
|
@ -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
|
||||
/// <summary>
|
||||
/// CRUD контроллер dto связных со скважиной для админки.
|
||||
/// </summary>
|
||||
@ -75,14 +76,17 @@ namespace AsbCloudWebApi.Controllers
|
||||
/// <param name="token"></param>
|
||||
/// <returns>запись</returns>
|
||||
[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);
|
||||
// TODO: this can be nullref
|
||||
var result = actionResult.Value;
|
||||
if (!await UserHasAccesToWellAsync(result.IdWell, token))
|
||||
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 Ok(result);
|
||||
}
|
||||
|
||||
return actionResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -157,4 +161,5 @@ namespace AsbCloudWebApi.Controllers
|
||||
return false;
|
||||
}
|
||||
}
|
||||
#nullable disable
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user