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 1/2] 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); } } From 4c08a2963fb51202e252ddf8b2778cb3b837f728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A4=D1=80=D0=BE=D0=BB=D0=BE=D0=B2?= Date: Thu, 30 Sep 2021 12:38:29 +0500 Subject: [PATCH 2/2] Add fileDto to reportprops dto. For unification download mechanism. --- AsbCloudApp/Data/ReportPropertiesDto.cs | 2 +- .../Services/ReportService.cs | 29 ++++++++++++++----- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/AsbCloudApp/Data/ReportPropertiesDto.cs b/AsbCloudApp/Data/ReportPropertiesDto.cs index a1e3e6e9..a8acfe71 100644 --- a/AsbCloudApp/Data/ReportPropertiesDto.cs +++ b/AsbCloudApp/Data/ReportPropertiesDto.cs @@ -6,7 +6,7 @@ namespace AsbCloudApp.Data { public int Id { get; set; } public string Name { get; set; } - public string Url { get; set; } + public FileInfoDto File { get; set; } public int IdWell { get; set; } public DateTime Date { get; set; } public DateTimeOffset Begin { get; set; } diff --git a/AsbCloudInfrastructure/Services/ReportService.cs b/AsbCloudInfrastructure/Services/ReportService.cs index e9a47329..90345c67 100644 --- a/AsbCloudInfrastructure/Services/ReportService.cs +++ b/AsbCloudInfrastructure/Services/ReportService.cs @@ -128,9 +128,7 @@ namespace AsbCloudInfrastructure.Services }; } - - [Obsolete] - Task> IReportService.GetSuitableReportsAsync(int idWell, DateTime begin, DateTime end, int stepSeconds, int format, CancellationToken token) => + public Task> GetSuitableReportsAsync(int idWell, DateTime begin, DateTime end, int stepSeconds, int format, CancellationToken token) => (from r in db.ReportProperties.Include(r => r.File) where r.IdWell == idWell && r.Begin >= begin @@ -141,7 +139,16 @@ namespace AsbCloudInfrastructure.Services { Id = r.Id, Name = r.File.Name, - Url = fileService.GetUrl(r.IdFile), + File = new FileInfoDto{ + Id = r.File.Id, + Author = null, + IdAuthor = r.File.IdAuthor??0, + IdCategory = r.File.IdCategory, + IdWell = r.File.IdWell, + Name = r.File.Name, + Size = r.File.Size, + UploadDate = r.File.UploadDate, + }, IdWell = r.IdWell, Date = r.File.UploadDate, Begin = r.Begin, @@ -160,9 +167,17 @@ namespace AsbCloudInfrastructure.Services { Id = r.Id, Name = r.File.Name, -#pragma warning disable IDE0057 // Use range operator - Url = fileService.GetUrl(r.IdWell, ReportCategoryId, r.File.Id, r.File.Name.Substring(r.File.Name.LastIndexOf(".") > 0 ? r.File.Name.LastIndexOf(".") : r.File.Name.Length)), -#pragma warning restore IDE0057 // Use range operator + File = new FileInfoDto + { + Id = r.File.Id, + Author = null, + IdAuthor = r.File.IdAuthor ?? 0, + IdCategory = r.File.IdCategory, + IdWell = r.File.IdWell, + Name = r.File.Name, + Size = r.File.Size, + UploadDate = r.File.UploadDate, + }, IdWell = r.IdWell, Date = r.File.UploadDate, Begin = r.Begin,