From 102288f9e5c81b3292c52d57756c8a3e1a8d76ca Mon Sep 17 00:00:00 2001 From: "ai.astrakhantsev" Date: Wed, 7 Dec 2022 10:52:35 +0500 Subject: [PATCH] #7987467 fix --- AsbCloudApp/Data/ProcessMapDto.cs | 5 +-- AsbCloudDb/Model/ProcessMap.cs | 4 +-- .../Repository/ProcessMapRepository.cs | 33 +++++++++++-------- .../Controllers/ProcessMapController.cs | 4 ++- 4 files changed, 25 insertions(+), 21 deletions(-) diff --git a/AsbCloudApp/Data/ProcessMapDto.cs b/AsbCloudApp/Data/ProcessMapDto.cs index d74c370e..aae1ba2e 100644 --- a/AsbCloudApp/Data/ProcessMapDto.cs +++ b/AsbCloudApp/Data/ProcessMapDto.cs @@ -1,7 +1,4 @@ -using Microsoft.EntityFrameworkCore.Metadata.Internal; -using System; -using System.ComponentModel.DataAnnotations.Schema; -using System.Linq; +using System; namespace AsbCloudApp.Data { diff --git a/AsbCloudDb/Model/ProcessMap.cs b/AsbCloudDb/Model/ProcessMap.cs index 0445861d..6bf791dc 100644 --- a/AsbCloudDb/Model/ProcessMap.cs +++ b/AsbCloudDb/Model/ProcessMap.cs @@ -67,11 +67,11 @@ namespace AsbCloudDb.Model [JsonIgnore] [ForeignKey(nameof(IdWell))] - public virtual Well? Well { get; set; } = null!; + public virtual Well Well { get; set; } = null!; [JsonIgnore] [ForeignKey(nameof(IdWellSectionType))] - public virtual WellSectionType? WellSectionType { get; set; } = null!; + public virtual WellSectionType WellSectionType { get; set; } = null!; } #nullable disable } diff --git a/AsbCloudInfrastructure/Repository/ProcessMapRepository.cs b/AsbCloudInfrastructure/Repository/ProcessMapRepository.cs index 9c3238dc..24a6fb74 100644 --- a/AsbCloudInfrastructure/Repository/ProcessMapRepository.cs +++ b/AsbCloudInfrastructure/Repository/ProcessMapRepository.cs @@ -26,29 +26,20 @@ namespace AsbCloudInfrastructure.Repository } public async Task> GetAllAsync(int idWell, - DateTime? updateFrom, CancellationToken token = default) + DateTime? updateFrom, CancellationToken token) { - var timezone = wellService.GetTimezone(idWell); - var updateFromUtc = updateFrom?.ToUtcDateTimeOffset(timezone.Hours); - var entities = await GetQuery() - .Where(e => e.IdWell == idWell) - .Where(e => e.LastUpdate >= updateFromUtc) + var entities = await BuildQuery(idWell, updateFrom) .OrderBy(e => e.DepthStart) .ThenBy(e => e.Id) .ToListAsync(token) .ConfigureAwait(false); - var dtos = entities.Select(entity => - { - var dto = entity.Adapt(); - dto.LastUpdate = entity.LastUpdate.ToRemoteDateTime(timezone.Hours); - return dto; - }); + var dtos = entities.Select(Convert); return dtos; } public override async Task InsertAsync(ProcessMapDto dto, - CancellationToken token = default) + CancellationToken token) { dto.LastUpdate = DateTime.UtcNow; var result = await base.InsertAsync(dto, token); @@ -56,13 +47,27 @@ namespace AsbCloudInfrastructure.Repository } public override async Task UpdateAsync(ProcessMapDto dto, - CancellationToken token = default) + CancellationToken token) { dto.LastUpdate = DateTime.UtcNow; var result = await base.UpdateAsync(dto, token); return result; } + + private IQueryable BuildQuery(int idWell, DateTime? updateFrom) + { + var query = GetQuery().Where(e => e.IdWell == idWell); + + if (updateFrom is not null) + { + var timezone = wellService.GetTimezone(idWell); + var updateFromUtc = updateFrom?.ToUtcDateTimeOffset(timezone.Hours); + query.Where(e => e.LastUpdate >= updateFromUtc); + } + + return query; + } protected override ProcessMapDto Convert(ProcessMap entity) { var dto = entity.Adapt(); diff --git a/AsbCloudWebApi/Controllers/ProcessMapController.cs b/AsbCloudWebApi/Controllers/ProcessMapController.cs index 70d70f84..1a7ef435 100644 --- a/AsbCloudWebApi/Controllers/ProcessMapController.cs +++ b/AsbCloudWebApi/Controllers/ProcessMapController.cs @@ -9,6 +9,7 @@ using System.Threading.Tasks; namespace AsbCloudWebApi.Controllers { +#nullable enable /// /// РТК /// @@ -37,7 +38,7 @@ namespace AsbCloudWebApi.Controllers [Route("/api/telemetry/{uid}/drillFlowChart")] [AllowAnonymous] [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] - public async Task GetByTelemetryAsync(string uid, DateTime updateFrom = default, CancellationToken token = default) + public async Task GetByTelemetryAsync(string uid, DateTime updateFrom, CancellationToken token) { var idWell = telemetryService.GetIdWellByTelemetryUid(uid); if (idWell is null) @@ -88,4 +89,5 @@ namespace AsbCloudWebApi.Controllers return await base.InsertAsync(value, token); } } +#nullable disable } \ No newline at end of file