From 0b419ec3c614aa5f979928b97314ec4705333079 Mon Sep 17 00:00:00 2001 From: eugeniy_ivanov Date: Thu, 20 Oct 2022 12:44:24 +0500 Subject: [PATCH 1/7] =?UTF-8?q?=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=83=D0=BF=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B8=D0=BD?= =?UTF-8?q?=D1=82=D0=B5=D1=80=D0=B2=D0=B0=D0=BB=D0=B0=20=D0=BD=D0=B0=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=B8=20=D0=BF=D0=BE=D0=B4=D1=81?= =?UTF-8?q?=D0=B8=D1=81=D1=82=D0=B5=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Subsystems/SubsystemOperationTimeService.cs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs index 18566010..1961c74f 100644 --- a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs +++ b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs @@ -185,6 +185,21 @@ namespace AsbCloudInfrastructure.Services.Subsystems } + private (DateTimeOffset, DateTimeOffset) GetDateRangeOperationTime(int idSubsystem) + { + var dateRange = db.SubsystemOperationTimes + .Where(o => o.Id == idSubsystem) + .GroupBy(o => o.IdSubsystem) + .Select(g => new + { + DateFirst = g.Min(o => o.DateStart), + DateLast = g.Max(o => o.DateEnd) + }) + .FirstOrDefault(); + (DateTimeOffset dateFirst, DateTimeOffset dateLast) result = (dateRange.DateFirst, dateRange.DateLast); + return result; + } + private IQueryable? BuildQuery(SubsystemOperationTimeRequest request) { var well = wellService.GetOrDefault(request.IdWell); From 87805a7104c64940b649454e7665b3009fc0579c Mon Sep 17 00:00:00 2001 From: eugeniy_ivanov Date: Thu, 20 Oct 2022 14:26:36 +0500 Subject: [PATCH 2/7] =?UTF-8?q?=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20=D0=BC=D0=B5=D1=82=D0=BE?= =?UTF-8?q?=D0=B4=D0=B0=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=B4=D0=B8=D0=B0=D0=BF=D0=B0=D0=B7=D0=BE=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=B4=D0=B0=D1=82=20=D0=BF=D0=BE=20=D0=BD=D0=B0=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=BA=D0=B0=D0=BC=20=D0=BF=D0=BE=D0=B4=D1=81?= =?UTF-8?q?=D0=B8=D1=81=D1=82=D0=B5=D0=BC,=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=B5=D1=82=D0=BE?= =?UTF-8?q?=D0=B4=D0=B0=20=D0=B2=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D1=84?= =?UTF-8?q?=D0=B5=D0=B9=D1=81=20ISubsystemOperationTimeService?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Subsystems/ISubsystemOperationTimeService.cs | 10 +++++++++- .../Subsystems/SubsystemOperationTimeService.cs | 10 +++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/AsbCloudApp/Services/Subsystems/ISubsystemOperationTimeService.cs b/AsbCloudApp/Services/Subsystems/ISubsystemOperationTimeService.cs index 07e41895..605d844c 100644 --- a/AsbCloudApp/Services/Subsystems/ISubsystemOperationTimeService.cs +++ b/AsbCloudApp/Services/Subsystems/ISubsystemOperationTimeService.cs @@ -36,7 +36,15 @@ namespace AsbCloudApp.Services.Subsystems /// /// /// - Task?> GetOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token); + Task?> GetOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token); + + /// + /// Временной диапазон за который есть статистика работы подсистем + /// + /// + /// + /// + Task?> GetDateRangeOperationTimeAsync(int idSubsystem, CancellationToken token); } #nullable disable } diff --git a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs index 1961c74f..5b0fdbb1 100644 --- a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs +++ b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs @@ -185,9 +185,9 @@ namespace AsbCloudInfrastructure.Services.Subsystems } - private (DateTimeOffset, DateTimeOffset) GetDateRangeOperationTime(int idSubsystem) + private async Task<(DateTimeOffset, DateTimeOffset)?> GetDateRangeOperationTime(int idSubsystem, CancellationToken token) { - var dateRange = db.SubsystemOperationTimes + var dateRange = await db.SubsystemOperationTimes .Where(o => o.Id == idSubsystem) .GroupBy(o => o.IdSubsystem) .Select(g => new @@ -195,7 +195,11 @@ namespace AsbCloudInfrastructure.Services.Subsystems DateFirst = g.Min(o => o.DateStart), DateLast = g.Max(o => o.DateEnd) }) - .FirstOrDefault(); + .FirstOrDefaultAsync(token); + if (dateRange == null) + { + return null; + } (DateTimeOffset dateFirst, DateTimeOffset dateLast) result = (dateRange.DateFirst, dateRange.DateLast); return result; } From dd711c4aa5dce10a52b8f33aefa433d462228d56 Mon Sep 17 00:00:00 2001 From: eugeniy_ivanov Date: Fri, 21 Oct 2022 15:52:51 +0500 Subject: [PATCH 3/7] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D0=BB=D0=B5?= =?UTF-8?q?=D1=80=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=B8=D0=B0=D0=BF=D0=BE=D0=B7?= =?UTF-8?q?=D0=BE=D0=BD=D0=B0=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=20=D0=B0=D1=80=D0=B3=D1=83=D0=BC=D0=B5=D0=BD=D1=82=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=B4=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=B5=D0=BD=D0=B0=20=D0=BB=D0=BE=D0=B3=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=B4=D0=B0=20=D0=B8=20=D0=B2=D0=BE=D0=B7?= =?UTF-8?q?=D0=B2=D1=80=D0=B0=D1=89=D0=B0=D0=B5=D0=BC=D0=BE=D0=B5=20=D0=B7?= =?UTF-8?q?=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ISubsystemOperationTimeService.cs | 5 +-- .../SubsystemOperationTimeService.cs | 34 ++++++++++++------- .../SubsystemOperationTimeController.cs | 13 +++++++ 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/AsbCloudApp/Services/Subsystems/ISubsystemOperationTimeService.cs b/AsbCloudApp/Services/Subsystems/ISubsystemOperationTimeService.cs index 605d844c..e8332f36 100644 --- a/AsbCloudApp/Services/Subsystems/ISubsystemOperationTimeService.cs +++ b/AsbCloudApp/Services/Subsystems/ISubsystemOperationTimeService.cs @@ -1,5 +1,6 @@ using AsbCloudApp.Data.Subsystems; using AsbCloudApp.Requests; +using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; @@ -41,10 +42,10 @@ namespace AsbCloudApp.Services.Subsystems /// /// Временной диапазон за который есть статистика работы подсистем /// - /// + /// /// /// - Task?> GetDateRangeOperationTimeAsync(int idSubsystem, CancellationToken token); + Task?> GetDateRangeOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token); } #nullable disable } diff --git a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs index 5b0fdbb1..09027db2 100644 --- a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs +++ b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs @@ -185,22 +185,28 @@ namespace AsbCloudInfrastructure.Services.Subsystems } - private async Task<(DateTimeOffset, DateTimeOffset)?> GetDateRangeOperationTime(int idSubsystem, CancellationToken token) + /// + public async Task?> GetDateRangeOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token) { - var dateRange = await db.SubsystemOperationTimes - .Where(o => o.Id == idSubsystem) - .GroupBy(o => o.IdSubsystem) - .Select(g => new - { - DateFirst = g.Min(o => o.DateStart), - DateLast = g.Max(o => o.DateEnd) - }) - .FirstOrDefaultAsync(token); - if (dateRange == null) - { + if (request.IdsSubsystems is null) return null; + List<(DateTimeOffset dateFirst, DateTimeOffset dateLast)> result = new(); + var dateRanges = await db.SubsystemOperationTimes + .Where(o => request.IdsSubsystems.Contains(o.IdSubsystem)) + .GroupBy(o => o.IdSubsystem) + .Select(g => new + { + DateFirst = g.Min(o => o.DateStart), + DateLast = g.Max(o => o.DateEnd) + }) + .ToListAsync(token); + if (dateRanges.Any() != true) + return null; + foreach (var dateRange in dateRanges) + { + var resultItem = (dateRange.DateFirst, dateRange.DateLast); + result.Add(resultItem); } - (DateTimeOffset dateFirst, DateTimeOffset dateLast) result = (dateRange.DateFirst, dateRange.DateLast); return result; } @@ -268,6 +274,8 @@ namespace AsbCloudInfrastructure.Services.Subsystems dto.DateEnd = operationTime.DateEnd.ToRemoteDateTime(well.Timezone.Hours); return dto; } + + } #nullable disable } diff --git a/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs b/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs index e4466d9d..e69ef535 100644 --- a/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs +++ b/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs @@ -59,6 +59,19 @@ namespace AsbCloudWebApi.Controllers.Subsystems return Ok(result); } + /// + /// получить доступный диапазон дат наработки подсистемы. + /// + [HttpGet("rangeDate")] + [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] + public async Task GetDateRangeOperationTimeAsync([FromQuery] SubsystemOperationTimeRequest request, CancellationToken token = default) + { + if (!await UserHasAccesToWellAsync(request.IdWell, token)) + return Forbid(); + var result = await subsystemOperationTimeService.GetDateRangeOperationTimeAsync(request, token); + return Ok(result); + } + /// /// получить список наработок подсистем /// From cc75bcf4f9dcd4ec982c6e0679c4eb26fc393da1 Mon Sep 17 00:00:00 2001 From: eugeniy_ivanov Date: Fri, 21 Oct 2022 15:58:33 +0500 Subject: [PATCH 4/7] =?UTF-8?q?=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D0=B0=20=D1=82=D0=B8=D0=BF=D0=B0?= =?UTF-8?q?=20=D0=B2=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D0=BB?= =?UTF-8?q?=D0=B5=D1=80=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Subsystems/SubsystemOperationTimeController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs b/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs index e69ef535..6dce80c6 100644 --- a/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs +++ b/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs @@ -63,7 +63,7 @@ namespace AsbCloudWebApi.Controllers.Subsystems /// получить доступный диапазон дат наработки подсистемы. /// [HttpGet("rangeDate")] - [ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)] + [ProducesResponseType(typeof(IEnumerable<(DateTimeOffset,DateTimeOffset)>), (int)System.Net.HttpStatusCode.OK)] public async Task GetDateRangeOperationTimeAsync([FromQuery] SubsystemOperationTimeRequest request, CancellationToken token = default) { if (!await UserHasAccesToWellAsync(request.IdWell, token)) From 17c7392542070a6fdbfbab137c36199d883fef41 Mon Sep 17 00:00:00 2001 From: eugeniy_ivanov Date: Tue, 25 Oct 2022 09:42:08 +0500 Subject: [PATCH 5/7] =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D1=8C=20=D0=B2=D0=BE?= =?UTF-8?q?=D0=B7=D0=B2=D1=80=D0=B0=D1=89=D0=B0=D0=B5=D0=BC=D0=B0=D1=8F=20?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=BE=D0=BC=20=D0=B8=D0=B7=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=B5=D0=BD=20=D0=B0=D0=BB=D0=B3=D0=BE=D1=80=D0=B8?= =?UTF-8?q?=D1=82=D0=BC=20=D0=B2=D0=BD=D1=83=D1=82=D1=80=D0=B8=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Requests/SubsystemOperationTimeRequest.cs | 2 +- .../ISubsystemOperationTimeService.cs | 5 +-- .../SubsystemOperationTimeService.cs | 34 ++++++++----------- .../SubsystemOperationTimeController.cs | 5 +-- 4 files changed, 21 insertions(+), 25 deletions(-) diff --git a/AsbCloudApp/Requests/SubsystemOperationTimeRequest.cs b/AsbCloudApp/Requests/SubsystemOperationTimeRequest.cs index 3a4c3e56..567e11cf 100644 --- a/AsbCloudApp/Requests/SubsystemOperationTimeRequest.cs +++ b/AsbCloudApp/Requests/SubsystemOperationTimeRequest.cs @@ -14,7 +14,7 @@ namespace AsbCloudApp.Requests public class SubsystemOperationTimeRequest: RequestBase { /// - /// идентификатор скважины, может не указыватся пользователем + /// идентификатор скважины /// [Required] public int IdWell { get; set; } diff --git a/AsbCloudApp/Services/Subsystems/ISubsystemOperationTimeService.cs b/AsbCloudApp/Services/Subsystems/ISubsystemOperationTimeService.cs index e8332f36..62ade194 100644 --- a/AsbCloudApp/Services/Subsystems/ISubsystemOperationTimeService.cs +++ b/AsbCloudApp/Services/Subsystems/ISubsystemOperationTimeService.cs @@ -1,4 +1,5 @@ -using AsbCloudApp.Data.Subsystems; +using AsbCloudApp.Data; +using AsbCloudApp.Data.Subsystems; using AsbCloudApp.Requests; using System; using System.Collections.Generic; @@ -45,7 +46,7 @@ namespace AsbCloudApp.Services.Subsystems /// /// /// - Task?> GetDateRangeOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token); + Task GetDateRangeOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token); } #nullable disable } diff --git a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs index 09027db2..ae055acf 100644 --- a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs +++ b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs @@ -186,28 +186,22 @@ namespace AsbCloudInfrastructure.Services.Subsystems } /// - public async Task?> GetDateRangeOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token) - { - if (request.IdsSubsystems is null) - return null; - List<(DateTimeOffset dateFirst, DateTimeOffset dateLast)> result = new(); - var dateRanges = await db.SubsystemOperationTimes - .Where(o => request.IdsSubsystems.Contains(o.IdSubsystem)) - .GroupBy(o => o.IdSubsystem) - .Select(g => new - { - DateFirst = g.Min(o => o.DateStart), - DateLast = g.Max(o => o.DateEnd) - }) - .ToListAsync(token); - if (dateRanges.Any() != true) - return null; - foreach (var dateRange in dateRanges) + public async Task GetDateRangeOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token) + { + var query = BuildQuery(request); + if (query is not null) { - var resultItem = (dateRange.DateFirst, dateRange.DateLast); - result.Add(resultItem); + var result = await query + .GroupBy(o => o.IdSubsystem) + .Select(g => new DatesRangeDto + { + From = g.Min(o => o.DateStart).DateTime, + To = g.Max(o => o.DateEnd).DateTime + }) + .FirstOrDefaultAsync(token); + return result; } - return result; + return null; } private IQueryable? BuildQuery(SubsystemOperationTimeRequest request) diff --git a/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs b/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs index 6dce80c6..7ac1c560 100644 --- a/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs +++ b/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs @@ -10,6 +10,7 @@ using System.Threading; using System.Threading.Tasks; using AsbCloudInfrastructure; using System; +using AsbCloudApp.Data; namespace AsbCloudWebApi.Controllers.Subsystems { @@ -63,11 +64,11 @@ namespace AsbCloudWebApi.Controllers.Subsystems /// получить доступный диапазон дат наработки подсистемы. /// [HttpGet("rangeDate")] - [ProducesResponseType(typeof(IEnumerable<(DateTimeOffset,DateTimeOffset)>), (int)System.Net.HttpStatusCode.OK)] + [ProducesResponseType(typeof(DatesRangeDto), (int)System.Net.HttpStatusCode.OK)] public async Task GetDateRangeOperationTimeAsync([FromQuery] SubsystemOperationTimeRequest request, CancellationToken token = default) { if (!await UserHasAccesToWellAsync(request.IdWell, token)) - return Forbid(); + return Forbid(); var result = await subsystemOperationTimeService.GetDateRangeOperationTimeAsync(request, token); return Ok(result); } From 22136824ac30e8f4bb94baffa2bd0d8fd4a5c4c8 Mon Sep 17 00:00:00 2001 From: eugeniy_ivanov Date: Tue, 25 Oct 2022 22:18:28 +0500 Subject: [PATCH 6/7] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B3=D1=80=D1=83=D0=BF=D0=BF=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=BA=D0=B8=20=D0=BF=D0=BE=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=B4=D1=81=D0=B8=D1=81=D1=82=D0=B5=D0=BC=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Subsystems/SubsystemOperationTimeService.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs index ae055acf..4cab373a 100644 --- a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs +++ b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs @@ -187,18 +187,18 @@ namespace AsbCloudInfrastructure.Services.Subsystems /// public async Task GetDateRangeOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token) - { + { var query = BuildQuery(request); if (query is not null) { var result = await query - .GroupBy(o => o.IdSubsystem) - .Select(g => new DatesRangeDto - { - From = g.Min(o => o.DateStart).DateTime, - To = g.Max(o => o.DateEnd).DateTime - }) - .FirstOrDefaultAsync(token); + .GroupBy(o => o.IdTelemetry) + .Select(g => new DatesRangeDto + { + From = g.Min(o => o.DateStart).DateTime, + To = g.Max(o => o.DateEnd).DateTime + }) + .FirstOrDefaultAsync(token); return result; } return null; From 1a2806b273b8f2bf4fc87b23f2d3d62da879422e Mon Sep 17 00:00:00 2001 From: ngfrolov Date: Wed, 26 Oct 2022 10:30:59 +0500 Subject: [PATCH 7/7] nit --- .../SubsystemOperationTimeService.cs | 22 +++++++++---------- .../SubsystemOperationTimeController.cs | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs index 4cab373a..cbef2343 100644 --- a/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs +++ b/AsbCloudInfrastructure/Services/Subsystems/SubsystemOperationTimeService.cs @@ -189,19 +189,19 @@ namespace AsbCloudInfrastructure.Services.Subsystems public async Task GetDateRangeOperationTimeAsync(SubsystemOperationTimeRequest request, CancellationToken token) { var query = BuildQuery(request); - if (query is not null) + if (query is null) { - var result = await query - .GroupBy(o => o.IdTelemetry) - .Select(g => new DatesRangeDto - { - From = g.Min(o => o.DateStart).DateTime, - To = g.Max(o => o.DateEnd).DateTime - }) - .FirstOrDefaultAsync(token); - return result; + return null; } - return null; + var result = await query + .GroupBy(o => o.IdTelemetry) + .Select(g => new DatesRangeDto + { + From = g.Min(o => o.DateStart).DateTime, + To = g.Max(o => o.DateEnd).DateTime + }) + .FirstOrDefaultAsync(token); + return result; } private IQueryable? BuildQuery(SubsystemOperationTimeRequest request) diff --git a/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs b/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs index 7ac1c560..d86a411f 100644 --- a/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs +++ b/AsbCloudWebApi/Controllers/Subsystems/SubsystemOperationTimeController.cs @@ -63,7 +63,7 @@ namespace AsbCloudWebApi.Controllers.Subsystems /// /// получить доступный диапазон дат наработки подсистемы. /// - [HttpGet("rangeDate")] + [HttpGet("datesRange")] [ProducesResponseType(typeof(DatesRangeDto), (int)System.Net.HttpStatusCode.OK)] public async Task GetDateRangeOperationTimeAsync([FromQuery] SubsystemOperationTimeRequest request, CancellationToken token = default) {