feat(api): templateResponse - добавлена инфа о часовом поясе

This commit is contained in:
Mikhail Trubnikov
2026-02-04 09:50:30 +10:00
parent 4a864bd18b
commit 6bce085fef
4 changed files with 41 additions and 7 deletions

View File

@@ -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; }
}
}

View File

@@ -17,7 +17,7 @@
public DateTimeOffset NextRun { get; set; } public DateTimeOffset NextRun { get; set; }
/// <summary> /// <summary>
/// NextRun с учетом ЗО /// NextRun с учетом ЗО (локальное время по ЗО, не UTC)
/// </summary> /// </summary>
public DateTimeOffset? NextRunResponseAreaInLocal { get; set; } public DateTimeOffset? NextRunResponseAreaInLocal { get; set; }
@@ -26,12 +26,12 @@
/// <summary> /// <summary>
/// Рабочая группа (формируется из шорткода) /// Рабочая группа (формируется из шорткода)
/// </summary> /// </summary>
public string? WorkGroup { get; set; } public string? WorkGroup { get; set; }
/// <summary> /// <summary>
/// ЗО, формируется из шорткода /// ЗО, формируется из шорткода
/// </summary> /// </summary>
public string? ResponseArea { get; set; } public string? ResponseArea { get; set; }
public UnitWithAttributesResponse? Unit { get; set; } public UnitWithAttributesResponse? Unit { get; set; }
@@ -44,6 +44,8 @@
public int OrderCount { get; set; } public int OrderCount { get; set; }
public bool IsAutoDistributionEnabled { get; set; } public bool IsAutoDistributionEnabled { get; set; }
public ScheduleResponseAreaTimeOffsetResponse? Timezone { get; set; }
} }

View File

@@ -19,6 +19,7 @@ using PARR.DAL.DomainServices.Shortcodes;
using PARR.DAL.Models; using PARR.DAL.Models;
using PARR.DAL.NextRunServices; using PARR.DAL.NextRunServices;
using PARR.DAL.Services.Interfaces; using PARR.DAL.Services.Interfaces;
using PARR.DAL.Services.Interfaces.Schedule;
namespace PARR.API.Controllers.V1 namespace PARR.API.Controllers.V1
{ {
@@ -36,6 +37,8 @@ namespace PARR.API.Controllers.V1
private readonly IShortcodesService shortcodesService; private readonly IShortcodesService shortcodesService;
private readonly IOrderService orderService; private readonly IOrderService orderService;
private readonly INextRunService nextRunService; private readonly INextRunService nextRunService;
private readonly SettingsFromDb settingsFromDb;
private readonly IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService;
public TemplateController( public TemplateController(
IMapper mapper, IMapper mapper,
@@ -45,7 +48,9 @@ namespace PARR.API.Controllers.V1
ILogger<TemplateController> logger, ILogger<TemplateController> logger,
IShortcodesService shortcodesService, IShortcodesService shortcodesService,
IOrderService orderService, IOrderService orderService,
INextRunService nextRunService INextRunService nextRunService,
SettingsFromDb settingsFromDb,
IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService
) )
{ {
this.mapper = mapper; this.mapper = mapper;
@@ -56,6 +61,8 @@ namespace PARR.API.Controllers.V1
this.shortcodesService = shortcodesService; this.shortcodesService = shortcodesService;
this.orderService = orderService; this.orderService = orderService;
this.nextRunService = nextRunService; this.nextRunService = nextRunService;
this.settingsFromDb = settingsFromDb;
this.scheduleResponseAreaTimeOffsetService = scheduleResponseAreaTimeOffsetService;
} }
@@ -337,9 +344,18 @@ namespace PARR.API.Controllers.V1
/// <param name="response"></param> /// <param name="response"></param>
private void FillNextRunWithResponseAreaInLocal(TemplateBaseResponse response) private void FillNextRunWithResponseAreaInLocal(TemplateBaseResponse response)
{ {
response.NextRunResponseAreaInLocal = response.IsResponseAreaTimezone && !string.IsNullOrEmpty(response.ResponseArea) var responseArea = response.IsResponseAreaTimezone && !string.IsNullOrEmpty(response.ResponseArea)
? nextRunService.GetNextRunWithResponseAreaOffset(response.NextRun, response.ResponseArea) ? response.ResponseArea
: response.NextRun; : 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<ScheduleResponseAreaTimeOffsetResponse>(scheduleResponseAreaTimeOffsetService.GetByResponseAreaOrDefault(responseArea));
} }
} }

View File

@@ -71,6 +71,11 @@ namespace PARR.API.MappingProfiles
CreateMap<DAL.Models.TaskStatus, TaskStatusResponse>(); CreateMap<DAL.Models.TaskStatus, TaskStatusResponse>();
#region ScheduleResponseAreaTimeOffsetResponse
CreateMap<ScheduleResponseAreaTimeOffset, ScheduleResponseAreaTimeOffsetResponse>();
#endregion
#region StatusTypeResponse #region StatusTypeResponse