#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>
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>
/// Тип секции

View File

@ -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>();

View File

@ -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)

View File

@ -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)

View File

@ -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;

View File

@ -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;

View File

@ -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;

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
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
}

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
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
}