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