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