diff --git a/PARR.API/Contracts/V1/Responses/ScheduleResponseAreaTimeOffsetResponse.cs b/PARR.API/Contracts/V1/Responses/ScheduleResponseAreaTimeOffsetResponse.cs
new file mode 100644
index 00000000..8626c502
--- /dev/null
+++ b/PARR.API/Contracts/V1/Responses/ScheduleResponseAreaTimeOffsetResponse.cs
@@ -0,0 +1,11 @@
+namespace PARR.API.Contracts.V1.Responses
+{
+ public class ScheduleResponseAreaTimeOffsetResponse
+ {
+ public required string ResponseArea { get; set; }
+
+ public required string EsppValue { get; set; }
+
+ public TimeSpan UtcTimeOffset { get; set; }
+ }
+}
diff --git a/PARR.API/Contracts/V1/Responses/TemplateResponse.cs b/PARR.API/Contracts/V1/Responses/TemplateResponse.cs
index 415e8892..f210efc2 100644
--- a/PARR.API/Contracts/V1/Responses/TemplateResponse.cs
+++ b/PARR.API/Contracts/V1/Responses/TemplateResponse.cs
@@ -17,7 +17,7 @@
public DateTimeOffset NextRun { get; set; }
///
- /// NextRun с учетом ЗО
+ /// NextRun с учетом ЗО (локальное время по ЗО, не UTC)
///
public DateTimeOffset? NextRunResponseAreaInLocal { get; set; }
@@ -26,12 +26,12 @@
///
/// Рабочая группа (формируется из шорткода)
///
- public string? WorkGroup { get; set; }
+ public string? WorkGroup { get; set; }
///
/// ЗО, формируется из шорткода
///
- public string? ResponseArea { get; set; }
+ public string? ResponseArea { get; set; }
public UnitWithAttributesResponse? Unit { get; set; }
@@ -44,6 +44,8 @@
public int OrderCount { get; set; }
public bool IsAutoDistributionEnabled { get; set; }
+
+ public ScheduleResponseAreaTimeOffsetResponse? Timezone { get; set; }
}
diff --git a/PARR.API/Controllers/V1/TemplateController.cs b/PARR.API/Controllers/V1/TemplateController.cs
index 885037e4..51f0ee71 100644
--- a/PARR.API/Controllers/V1/TemplateController.cs
+++ b/PARR.API/Controllers/V1/TemplateController.cs
@@ -19,6 +19,7 @@ using PARR.DAL.DomainServices.Shortcodes;
using PARR.DAL.Models;
using PARR.DAL.NextRunServices;
using PARR.DAL.Services.Interfaces;
+using PARR.DAL.Services.Interfaces.Schedule;
namespace PARR.API.Controllers.V1
{
@@ -36,6 +37,8 @@ namespace PARR.API.Controllers.V1
private readonly IShortcodesService shortcodesService;
private readonly IOrderService orderService;
private readonly INextRunService nextRunService;
+ private readonly SettingsFromDb settingsFromDb;
+ private readonly IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService;
public TemplateController(
IMapper mapper,
@@ -45,7 +48,9 @@ namespace PARR.API.Controllers.V1
ILogger logger,
IShortcodesService shortcodesService,
IOrderService orderService,
- INextRunService nextRunService
+ INextRunService nextRunService,
+ SettingsFromDb settingsFromDb,
+ IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService
)
{
this.mapper = mapper;
@@ -56,6 +61,8 @@ namespace PARR.API.Controllers.V1
this.shortcodesService = shortcodesService;
this.orderService = orderService;
this.nextRunService = nextRunService;
+ this.settingsFromDb = settingsFromDb;
+ this.scheduleResponseAreaTimeOffsetService = scheduleResponseAreaTimeOffsetService;
}
@@ -337,9 +344,18 @@ namespace PARR.API.Controllers.V1
///
private void FillNextRunWithResponseAreaInLocal(TemplateBaseResponse response)
{
- response.NextRunResponseAreaInLocal = response.IsResponseAreaTimezone && !string.IsNullOrEmpty(response.ResponseArea)
- ? nextRunService.GetNextRunWithResponseAreaOffset(response.NextRun, response.ResponseArea)
- : response.NextRun;
+ var responseArea = response.IsResponseAreaTimezone && !string.IsNullOrEmpty(response.ResponseArea)
+ ? response.ResponseArea
+ : settingsFromDb.DefaultResponseAreaToTimeOffset;
+
+ //response.NextRunResponseAreaInLocal = response.IsResponseAreaTimezone && !string.IsNullOrEmpty(response.ResponseArea)
+ // ? nextRunService.GetNextRunWithResponseAreaOffset(response.NextRun, response.ResponseArea)
+ // // возвращаем в дефолтной зоне
+ // : nextRunService.GetNextRunWithResponseAreaOffset(response.NextRun, settingsFromDb.DefaultResponseAreaToTimeOffset);
+
+ response.NextRunResponseAreaInLocal = nextRunService.GetNextRunWithResponseAreaOffset(response.NextRun, responseArea);
+
+ response.Timezone = mapper.Map(scheduleResponseAreaTimeOffsetService.GetByResponseAreaOrDefault(responseArea));
}
}
diff --git a/PARR.API/MappingProfiles/DomainToResponseProfile.cs b/PARR.API/MappingProfiles/DomainToResponseProfile.cs
index 3dc51be0..96111074 100644
--- a/PARR.API/MappingProfiles/DomainToResponseProfile.cs
+++ b/PARR.API/MappingProfiles/DomainToResponseProfile.cs
@@ -71,6 +71,11 @@ namespace PARR.API.MappingProfiles
CreateMap();
+ #region ScheduleResponseAreaTimeOffsetResponse
+
+ CreateMap();
+
+ #endregion
#region StatusTypeResponse