From 90bdb264cb254c573773552727cab368d4c30835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A4=D1=80=D0=BE=D0=BB=D0=BE=D0=B2?= Date: Wed, 29 Sep 2021 17:05:27 +0500 Subject: [PATCH] fix Get* methods. add orderBy, specify dateTimeKind and return value:) --- .../Services/TelemetryDataBaseService.cs | 10 +++++++-- .../TelemetryDataBaseController.cs | 21 +++++++++++++------ 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs b/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs index d818e37d..2e203dfa 100644 --- a/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs @@ -88,6 +88,9 @@ namespace AsbCloudInfrastructure.Services if (dateBegin == default) dateBegin = DateTime.Now.AddSeconds(-intervalSec); + if (dateBegin.Kind == DateTimeKind.Unspecified) + dateBegin = DateTime.SpecifyKind(dateBegin, DateTimeKind.Utc); + var datEnd = dateBegin.AddSeconds(intervalSec); var dbSet = db.Set(); @@ -109,8 +112,11 @@ namespace AsbCloudInfrastructure.Services query = query.Where(d => d.Id % m == 0); } - var entities = await query.AsNoTracking() - .ToListAsync(token).ConfigureAwait(false); + var entities = await query + .OrderBy(d=>d.Date) + .AsNoTracking() + .ToListAsync(token) + .ConfigureAwait(false); var dtos = entities.Select(e => Convert(e)); diff --git a/AsbCloudWebApi/Controllers/TelemetryDataBaseController.cs b/AsbCloudWebApi/Controllers/TelemetryDataBaseController.cs index 75d19a05..93bf0658 100644 --- a/AsbCloudWebApi/Controllers/TelemetryDataBaseController.cs +++ b/AsbCloudWebApi/Controllers/TelemetryDataBaseController.cs @@ -79,15 +79,24 @@ namespace AsbCloudWebApi.Controllers public virtual async Task GetDataAsync(int idWell, DateTime begin = default, int intervalSec = 600, int approxPointsCount = 1024, CancellationToken token = default) { + int? idCompany = User.GetCompanyId(); + + if (idCompany is null) + return Forbid(); + + bool isCompanyOwnsWell = await wellService.IsCompanyInvolvedInWellAsync((int)idCompany, + idWell, token).ConfigureAwait(false); + + if (!isCompanyOwnsWell) + return Forbid(); + if (begin == default) begin = DateTime.Now.AddSeconds(-intervalSec); + var content = await telemetryDataService.GetAsync(idWell, begin, intervalSec, approxPointsCount, token).ConfigureAwait(false); - if (content is null || !content.Any()) - return NoContent(); - - return Ok(null); + return Ok(content); } /// @@ -113,10 +122,10 @@ namespace AsbCloudWebApi.Controllers if (!isCompanyOwnsWell) return Forbid(); - DatesRangeDto dataDatesRange = await telemetryDataService.GetDataDatesRangeAsync(idWell, + var dataDatesRange = await telemetryDataService.GetDataDatesRangeAsync(idWell, token).ConfigureAwait(false); - return Ok(null); + return Ok(dataDatesRange); } }