From 1e8d409c770cb5cbf906026361df4263a8825946 Mon Sep 17 00:00:00 2001 From: Mikhail Trubnikov Date: Thu, 29 Aug 2024 10:15:54 +1000 Subject: [PATCH] =?UTF-8?q?feat(api):=20WorkloadBaseQuery=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20=D0=BF=D0=B0=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D1=80=20TimeZoneOffsetHours,=20=D1=81=D0=BC?= =?UTF-8?q?=D0=B5=D1=89=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=82=D0=B0=D0=B9=D0=BC?= =?UTF-8?q?=D0=B7=D0=BE=D0=BD=D1=8B=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=BE=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BE=D1=82?= =?UTF-8?q?=D1=87=D0=B5=D1=82=D0=BE=D0=B2=20=D0=B2=20=D1=87=D0=B0=D1=81?= =?UTF-8?q?=D0=BE=D0=B2=D0=BE=D0=BC=20=D0=BF=D0=BE=D1=8F=D1=81=D0=B5=20?= =?UTF-8?q?=D0=BA=D0=BB=D0=B8=D0=B5=D0=BD=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V1/Requests/Queries/WorkloadBaseQuery.cs | 2 ++ .../StatResponseAreaWorkLoadController.cs | 4 ++-- .../StatWorkGroupWorkLoadController.cs | 3 ++- .../V1/Statistics/StatWorkWorkLoadController.cs | 3 ++- .../Services/Implementations/WorkLoadService.cs | 16 ++++++++-------- 5 files changed, 16 insertions(+), 12 deletions(-) diff --git a/PARR.API/Contracts/V1/Requests/Queries/WorkloadBaseQuery.cs b/PARR.API/Contracts/V1/Requests/Queries/WorkloadBaseQuery.cs index 284b8cf4..b6b04ca0 100644 --- a/PARR.API/Contracts/V1/Requests/Queries/WorkloadBaseQuery.cs +++ b/PARR.API/Contracts/V1/Requests/Queries/WorkloadBaseQuery.cs @@ -10,5 +10,7 @@ public bool? IsActiveSchedule { get; set; } public bool? IsMonth { get; set; } + + public int TimeZoneOffsetHours { get; set; } = 0; } } diff --git a/PARR.API/Controllers/V1/Statistics/StatResponseAreaWorkLoadController.cs b/PARR.API/Controllers/V1/Statistics/StatResponseAreaWorkLoadController.cs index cdca4666..3b987954 100644 --- a/PARR.API/Controllers/V1/Statistics/StatResponseAreaWorkLoadController.cs +++ b/PARR.API/Controllers/V1/Statistics/StatResponseAreaWorkLoadController.cs @@ -78,8 +78,8 @@ namespace PARR.API.Controllers.V1.Statistics if (responseAreas != null && responseAreas.Count() > 0) query = query.Where(t => responseAreas.Any(x => x == t.Host.WorkGroup.ResponseAreaCode)); - - var groupedQuery = query.GroupBy(t => new { t.NextRun.DateTime.Date, t.Host!.WorkGroup!.ResponseAreaCode }) + //var groupedQuery = query.GroupBy(t => new { t.NextRun.DateTime.Date, t.Host!.WorkGroup!.ResponseAreaCode }) + var groupedQuery = query.GroupBy(t => new { t.NextRun.AddHours(requestQuery.TimeZoneOffsetHours).DateTime.Date, t.Host!.WorkGroup!.ResponseAreaCode }) .Select(t => new { ResponseAreaCode = t.Key.ResponseAreaCode, diff --git a/PARR.API/Controllers/V1/Statistics/StatWorkGroupWorkLoadController.cs b/PARR.API/Controllers/V1/Statistics/StatWorkGroupWorkLoadController.cs index 96d11ad5..658b1256 100644 --- a/PARR.API/Controllers/V1/Statistics/StatWorkGroupWorkLoadController.cs +++ b/PARR.API/Controllers/V1/Statistics/StatWorkGroupWorkLoadController.cs @@ -92,7 +92,8 @@ namespace PARR.API.Controllers.V1.Statistics query = query.Where(t => workGroups.Any(x => x == t.Host!.WorkGroupId.Value)); - var groupedQuery = query.GroupBy(t => new { t.NextRun.DateTime.Date, t.Host!.WorkGroupId }) + // var groupedQuery = query.GroupBy(t => new { t.NextRun.DateTime.Date, t.Host!.WorkGroupId }) + var groupedQuery = query.GroupBy(t => new { t.NextRun.AddHours(requestQuery.TimeZoneOffsetHours).DateTime.Date, t.Host!.WorkGroupId }) .Select(t => new { WorkGroupId = t.Key.WorkGroupId, diff --git a/PARR.API/Controllers/V1/Statistics/StatWorkWorkLoadController.cs b/PARR.API/Controllers/V1/Statistics/StatWorkWorkLoadController.cs index 20b71098..5204aaf8 100644 --- a/PARR.API/Controllers/V1/Statistics/StatWorkWorkLoadController.cs +++ b/PARR.API/Controllers/V1/Statistics/StatWorkWorkLoadController.cs @@ -94,7 +94,8 @@ namespace PARR.API.Controllers.V1.Statistics //query = query.Where(t => jobsRequests.Any(x => x.JobId == t.ApplicationInWorkId && x.WorkGroupId == t.Host!.WorkGroupId.Value)); /*&& x.WorkGroupId == t.Host!.WorkGroupId.Value*/ query = query.Where(t => jobsRequests.Select(t => t.JobId).Any(x => x == t.ApplicationInWorkId) && jobsRequests.Select(t => t.WorkGroupId).Any(x => x == t.Host!.WorkGroupId.Value)); - var groupedQuery = query.GroupBy(t => new { t.NextRun.DateTime.Date, t.ApplicationInWorkId, t.Host.WorkGroupId }) + //var groupedQuery = query.GroupBy(t => new { t.NextRun.DateTime.Date, t.ApplicationInWorkId, t.Host.WorkGroupId }) + var groupedQuery = query.GroupBy(t => new { t.NextRun.AddHours(requestQuery.TimeZoneOffsetHours).DateTime.Date, t.ApplicationInWorkId, t.Host.WorkGroupId }) .Select(t => new { ApplicationInWorkId = t.Key.ApplicationInWorkId, diff --git a/PARR.API/Services/Implementations/WorkLoadService.cs b/PARR.API/Services/Implementations/WorkLoadService.cs index 1a1f7eae..a046659c 100644 --- a/PARR.API/Services/Implementations/WorkLoadService.cs +++ b/PARR.API/Services/Implementations/WorkLoadService.cs @@ -6,16 +6,16 @@ namespace PARR.API.Services.Implementations { internal class WorkLoadService : IWorkLoadService { - private DateTime GetStartDate() + private DateTime GetStartDate(int timeZoneOffsetHours) { //начинаем не с сегодняшнего дня, а с завтра, так как на сегодня уже некоторые работы были проведены и их дата изменилась - return DateTimeOffset.UtcNow.Date.AddDays(1); + return DateTimeOffset.UtcNow.AddHours(timeZoneOffsetHours).Date.AddDays(1); } - private DateTime GetEndDate(bool? isMonth) + private DateTime GetEndDate(bool? isMonth, int timeZoneOffsetHours) { - var startDate = GetStartDate(); + var startDate = GetStartDate(timeZoneOffsetHours); return isMonth == true ? startDate.AddDays(30) : startDate.AddDays(6); } @@ -23,8 +23,8 @@ namespace PARR.API.Services.Implementations public List GetDatesForPeriod(WorkloadBaseQuery requestQuery) { - var startDate = GetStartDate(); - var endDate = GetEndDate(requestQuery.IsMonth); + var startDate = GetStartDate(requestQuery.TimeZoneOffsetHours); + var endDate = GetEndDate(requestQuery.IsMonth, requestQuery.TimeZoneOffsetHours); var daysList = new List(); @@ -39,8 +39,8 @@ namespace PARR.API.Services.Implementations public IQueryable