diff --git a/AsbCloudApp/Data/LimitingParameterDataDto.cs b/AsbCloudApp/Data/LimitingParameterDataDto.cs index ee957947..83db213b 100644 --- a/AsbCloudApp/Data/LimitingParameterDataDto.cs +++ b/AsbCloudApp/Data/LimitingParameterDataDto.cs @@ -21,12 +21,12 @@ namespace AsbCloudApp.Data /// /// Дата начала ограничения /// - public DateTimeOffset DateStart { get; set; } + public DateTime DateStart { get; set; } /// /// Дата окончания ограничения /// - public DateTimeOffset DateEnd { get; set; } + public DateTime DateEnd { get; set; } /// /// Глубина начала ограничения diff --git a/AsbCloudApp/Repositories/ILimitingParameterRepository.cs b/AsbCloudApp/Repositories/ILimitingParameterRepository.cs index 507270ef..fcce0759 100644 --- a/AsbCloudApp/Repositories/ILimitingParameterRepository.cs +++ b/AsbCloudApp/Repositories/ILimitingParameterRepository.cs @@ -20,6 +20,7 @@ namespace AsbCloudApp.Repositories /// /// Task> GetLimitingParametersAsync(LimitingParameterRequest request, WellDto wellDto, CancellationToken token); + Task> GetLimitingParametersAsync(LimitingParameterRequest request, int idTelemetry, double timezoneHours, CancellationToken token); } #nullable disable } diff --git a/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs b/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs index 88c5f869..9c05d743 100644 --- a/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs +++ b/AsbCloudInfrastructure/Repository/LimitingParameterRepository.cs @@ -3,6 +3,7 @@ using AsbCloudApp.Repositories; using AsbCloudApp.Requests; using AsbCloudDb.Model; using Microsoft.EntityFrameworkCore; +using System; using System.Collections.Generic; using System.Linq; using System.Threading; @@ -19,41 +20,49 @@ namespace AsbCloudInfrastructure.Repository { this.context = context; } + public async Task> GetLimitingParametersAsync(LimitingParameterRequest request, WellDto wellDto, CancellationToken token) { - var query = BuildQuery(request, wellDto); + var timezoneOffset = wellDto.Timezone.Hours; + var IdTelemetry = wellDto.IdTelemetry!.Value; + return await GetLimitingParametersAsync(request, IdTelemetry, timezoneOffset, token); + } + + public async Task> GetLimitingParametersAsync(LimitingParameterRequest request, int idTelemetry, double timezoneHours, CancellationToken token) + { + var timezoneSpan = TimeSpan.FromHours(timezoneHours); + var query = BuildQuery(request, idTelemetry, timezoneHours); var data = (await query.ToListAsync(token)) .Select(x => new LimitingParameterDataDto { - IdWell = wellDto.Id, + IdWell = request.IdWell, IdTelemetry = x.IdTelemetry, IdFeedRegulator = x.IdFeedRegulator, - DateStart = x.DateStart, - DateEnd = x.DateEnd, + DateStart = DateTime.SpecifyKind(x.DateStart.UtcDateTime + timezoneSpan, DateTimeKind.Unspecified), + DateEnd = DateTime.SpecifyKind(x.DateEnd.UtcDateTime + timezoneSpan, DateTimeKind.Unspecified), DepthStart = x.DepthStart, DepthEnd = x.DepthEnd }); - return data; } - private IQueryable BuildQuery(LimitingParameterRequest request, WellDto wellDto) + private IQueryable BuildQuery(LimitingParameterRequest request, int idTelemetry, double timezoneHours) { var query = context.LimitingParameter .OrderBy(x => x.Id) - .Where(x => x.IdTelemetry == wellDto.IdTelemetry) + .Where(x => x.IdTelemetry == idTelemetry) .AsNoTracking(); if (request.GtDate.HasValue) { - var gtDate = request.GtDate.Value.ToUtcDateTimeOffset(wellDto.Timezone.Hours); + var gtDate = request.GtDate.Value.ToUtcDateTimeOffset(timezoneHours); query = query.Where(x => x.DateEnd >= gtDate); } if (request.LtDate.HasValue) { - var ltDate = request.LtDate.Value.ToUtcDateTimeOffset(wellDto.Timezone.Hours); + var ltDate = request.LtDate.Value.ToUtcDateTimeOffset(timezoneHours); query = query.Where(x => x.DateStart <= ltDate); } diff --git a/AsbCloudInfrastructure/Services/LimitingParameterService.cs b/AsbCloudInfrastructure/Services/LimitingParameterService.cs index 0a609507..848fbdf2 100644 --- a/AsbCloudInfrastructure/Services/LimitingParameterService.cs +++ b/AsbCloudInfrastructure/Services/LimitingParameterService.cs @@ -40,7 +40,6 @@ namespace AsbCloudInfrastructure.Services var data = (await limitingParameterRepository.GetLimitingParametersAsync(request, well, token)) .GroupBy(x => x.IdFeedRegulator); - List result = new List(data.Count()); foreach (var item in data) { @@ -107,7 +106,7 @@ namespace AsbCloudInfrastructure.Services return (float)result; } - private DateTimeOffset GetDate(double depth, LimitingParameterDataDto dto) + private DateTime GetDate(double depth, LimitingParameterDataDto dto) { var a = depth - dto.DepthStart; var b = dto.DepthEnd - dto.DepthStart;