feat(api): WorkloadBaseQuery добавлен параметр TimeZoneOffsetHours, смещение таймзоны для построения отчетов в часовом поясе клиента
This commit is contained in:
@@ -10,5 +10,7 @@
|
|||||||
public bool? IsActiveSchedule { get; set; }
|
public bool? IsActiveSchedule { get; set; }
|
||||||
|
|
||||||
public bool? IsMonth { get; set; }
|
public bool? IsMonth { get; set; }
|
||||||
|
|
||||||
|
public int TimeZoneOffsetHours { get; set; } = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,8 +78,8 @@ namespace PARR.API.Controllers.V1.Statistics
|
|||||||
if (responseAreas != null && responseAreas.Count() > 0)
|
if (responseAreas != null && responseAreas.Count() > 0)
|
||||||
query = query.Where(t => responseAreas.Any(x => x == t.Host.WorkGroup.ResponseAreaCode));
|
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
|
.Select(t => new
|
||||||
{
|
{
|
||||||
ResponseAreaCode = t.Key.ResponseAreaCode,
|
ResponseAreaCode = t.Key.ResponseAreaCode,
|
||||||
|
|||||||
@@ -92,7 +92,8 @@ namespace PARR.API.Controllers.V1.Statistics
|
|||||||
query = query.Where(t => workGroups.Any(x => x == t.Host!.WorkGroupId.Value));
|
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
|
.Select(t => new
|
||||||
{
|
{
|
||||||
WorkGroupId = t.Key.WorkGroupId,
|
WorkGroupId = t.Key.WorkGroupId,
|
||||||
|
|||||||
@@ -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.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));
|
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
|
.Select(t => new
|
||||||
{
|
{
|
||||||
ApplicationInWorkId = t.Key.ApplicationInWorkId,
|
ApplicationInWorkId = t.Key.ApplicationInWorkId,
|
||||||
|
|||||||
@@ -6,16 +6,16 @@ namespace PARR.API.Services.Implementations
|
|||||||
{
|
{
|
||||||
internal class WorkLoadService : IWorkLoadService
|
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);
|
return isMonth == true ? startDate.AddDays(30) : startDate.AddDays(6);
|
||||||
}
|
}
|
||||||
@@ -23,8 +23,8 @@ namespace PARR.API.Services.Implementations
|
|||||||
|
|
||||||
public List<DateTimeOffset> GetDatesForPeriod(WorkloadBaseQuery requestQuery)
|
public List<DateTimeOffset> GetDatesForPeriod(WorkloadBaseQuery requestQuery)
|
||||||
{
|
{
|
||||||
var startDate = GetStartDate();
|
var startDate = GetStartDate(requestQuery.TimeZoneOffsetHours);
|
||||||
var endDate = GetEndDate(requestQuery.IsMonth);
|
var endDate = GetEndDate(requestQuery.IsMonth, requestQuery.TimeZoneOffsetHours);
|
||||||
|
|
||||||
var daysList = new List<DateTimeOffset>();
|
var daysList = new List<DateTimeOffset>();
|
||||||
|
|
||||||
@@ -39,8 +39,8 @@ namespace PARR.API.Services.Implementations
|
|||||||
|
|
||||||
public IQueryable<Template> FilterTemplatesQuery(IQueryable<Template> query, WorkloadBaseQuery requestQuery)
|
public IQueryable<Template> FilterTemplatesQuery(IQueryable<Template> query, WorkloadBaseQuery requestQuery)
|
||||||
{
|
{
|
||||||
var startDate = GetStartDate();
|
var startDate = GetStartDate(requestQuery.TimeZoneOffsetHours);
|
||||||
var endDate = GetEndDate(requestQuery.IsMonth);
|
var endDate = GetEndDate(requestQuery.IsMonth, requestQuery.TimeZoneOffsetHours);
|
||||||
|
|
||||||
query = query.Where(t =>
|
query = query.Where(t =>
|
||||||
t.NextRun.DateTime.Date >= startDate.Date && t.NextRun.DateTime.Date <= endDate.Date
|
t.NextRun.DateTime.Date >= startDate.Date && t.NextRun.DateTime.Date <= endDate.Date
|
||||||
|
|||||||
Reference in New Issue
Block a user