SubsystemOperationTimeController изменен валидатор. null - валидное значение для nullable свойств запроса. SubsystemOperationTimeService.BuildQuery изменен по тем же причинам.

This commit is contained in:
ngfrolov 2022-09-22 17:40:18 +05:00
parent a457da8ead
commit e8789df59e
2 changed files with 8 additions and 11 deletions

View File

@ -187,9 +187,6 @@ namespace AsbCloudInfrastructure.Services.Subsystems
private IQueryable<SubsystemOperationTime>? BuildQuery(SubsystemOperationTimeRequest request) private IQueryable<SubsystemOperationTime>? BuildQuery(SubsystemOperationTimeRequest request)
{ {
if (request.SelectMode > 0 && request.GtDate is null && request.LtDate is null)
return null;
var well = wellService.GetOrDefault(request.IdWell); var well = wellService.GetOrDefault(request.IdWell);
if (well?.IdTelemetry is null || well.Timezone is null) if (well?.IdTelemetry is null || well.Timezone is null)
return null; return null;

View File

@ -39,7 +39,7 @@ namespace AsbCloudWebApi.Controllers.Subsystems
{ {
if (!await UserHasAccesToWellAsync(request.IdWell, token)) if (!await UserHasAccesToWellAsync(request.IdWell, token))
return Forbid(); return Forbid();
if (!await TimeRequestValidate(request, token)) if (!await IsValidRequest(request, token))
return BadRequest("Запрашиваемый диапазон должен заканчиваться за 2 часа до текущего времени(после приведения к UTC)."); return BadRequest("Запрашиваемый диапазон должен заканчиваться за 2 часа до текущего времени(после приведения к UTC).");
var subsystemResult = await subsystemOperationTimeService.GetStatAsync(request, token); var subsystemResult = await subsystemOperationTimeService.GetStatAsync(request, token);
return Ok(subsystemResult); return Ok(subsystemResult);
@ -71,7 +71,7 @@ namespace AsbCloudWebApi.Controllers.Subsystems
{ {
if (!await UserHasAccesToWellAsync(request.IdWell, token)) if (!await UserHasAccesToWellAsync(request.IdWell, token))
return Forbid(); return Forbid();
if (!await TimeRequestValidate(request, token)) if (!await IsValidRequest(request, token))
return BadRequest("Запрашиваемый диапазон должен заканчиваться за 2 часа до текущего времени(после приведения к UTC)."); return BadRequest("Запрашиваемый диапазон должен заканчиваться за 2 часа до текущего времени(после приведения к UTC).");
var result = await subsystemOperationTimeService.GetOperationTimeAsync(request, token); var result = await subsystemOperationTimeService.GetOperationTimeAsync(request, token);
@ -93,7 +93,7 @@ namespace AsbCloudWebApi.Controllers.Subsystems
{ {
if (!await UserHasAccesToWellAsync(request.IdWell, token)) if (!await UserHasAccesToWellAsync(request.IdWell, token))
return Forbid(); return Forbid();
if (!await TimeRequestValidate(request, token)) if (!await IsValidRequest(request, token))
return BadRequest("Запрашиваемый диапазон должен заканчиваться за 2 часа до текущего времени(после приведения к UTC)."); return BadRequest("Запрашиваемый диапазон должен заканчиваться за 2 часа до текущего времени(после приведения к UTC).");
var result = await subsystemOperationTimeService.DeleteAsync(request, token); var result = await subsystemOperationTimeService.DeleteAsync(request, token);
return Ok(result); return Ok(result);
@ -108,20 +108,20 @@ namespace AsbCloudWebApi.Controllers.Subsystems
return true; return true;
return false; return false;
} }
protected async Task<bool> TimeRequestValidate(SubsystemOperationTimeRequest request, CancellationToken token) protected async Task<bool> IsValidRequest(SubsystemOperationTimeRequest request, CancellationToken token)
{ {
var well = await wellService.GetOrDefaultAsync(request.IdWell, token); var well = await wellService.GetOrDefaultAsync(request.IdWell, token);
if (well is not null) if (well is not null && request.LtDate.HasValue)
{ {
var ltDate = (DateTimeOffset)request.LtDate; var ltDate = (DateTimeOffset)request.LtDate;
var utcDateRequest = ltDate.ToRemoteDateTime(well.Timezone.Hours); var utcDateRequest = ltDate.ToRemoteDateTime(well.Timezone.Hours);
if (utcDateRequest.AddHours(2) < DateTime.UtcNow) if (utcDateRequest.AddHours(2) > DateTime.UtcNow)
{ {
return true;
}
}
return false; return false;
} }
} }
return true;
}
}
} }