feat(api,bll,dal,esppScheduleSync,TemplateGenerator): изменен рассчет nextRun для задания роботу и синхронизатору, подставляется в зависимости от настроек ЗО и таймзоны УЗ робота ЕСПП. Переименование полей в БД
This commit is contained in:
@@ -16,6 +16,12 @@
|
||||
|
||||
public DateTimeOffset NextRun { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// NextRun с учетом ЗО
|
||||
/// </summary>
|
||||
public DateTimeOffset? NextRunWithResponseAreaOffset { get; set; }
|
||||
|
||||
public bool IsResponseAreaTimezone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Рабочая группа (формируется из шорткода)
|
||||
|
||||
@@ -1,17 +1,12 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using PARR.API.Contracts.V1;
|
||||
using PARR.API.Contracts.V1.Requests.Queries;
|
||||
using PARR.API.Contracts.V1.Responses;
|
||||
using PARR.API.Contracts.V1.Responses.Base;
|
||||
using PARR.API.Controllers.V1.Base;
|
||||
using PARR.API.Services.Interfaces;
|
||||
using PARR.Constants;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
using PARR.DAL.Services.Interfaces.Unit;
|
||||
using PARR.DAL.TransformServices;
|
||||
|
||||
namespace PARR.API.Controllers.V1
|
||||
{
|
||||
|
||||
@@ -18,8 +18,10 @@ using PARR.DAL.DomainModels;
|
||||
using PARR.DAL.DomainServices.Interfaces;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Models.Job;
|
||||
using PARR.DAL.NextRunServices;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
using PARR.DAL.Services.Interfaces.Job;
|
||||
using PARR.DAL.Services.Interfaces.Schedule;
|
||||
|
||||
namespace PARR.API.Controllers.V1
|
||||
{
|
||||
@@ -39,6 +41,7 @@ namespace PARR.API.Controllers.V1
|
||||
private readonly IJobGroupTypeService jobGroupTypeService;
|
||||
private readonly SettingsFromDb settingsFromDb;
|
||||
private readonly IMatchingStatusService matchingStatusService;
|
||||
private readonly IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService;
|
||||
|
||||
public JobGroupController(
|
||||
ILogger<JobController> logger,
|
||||
@@ -50,7 +53,8 @@ namespace PARR.API.Controllers.V1
|
||||
IValidator<JobGroupRequest> validator,
|
||||
IJobGroupTypeService jobGroupTypeService,
|
||||
SettingsFromDb settingsFromDb,
|
||||
IMatchingStatusService matchingStatusService
|
||||
IMatchingStatusService matchingStatusService,
|
||||
IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService
|
||||
)
|
||||
{
|
||||
this.logger = logger;
|
||||
@@ -63,6 +67,7 @@ namespace PARR.API.Controllers.V1
|
||||
this.jobGroupTypeService = jobGroupTypeService;
|
||||
this.settingsFromDb = settingsFromDb;
|
||||
this.matchingStatusService = matchingStatusService;
|
||||
this.scheduleResponseAreaTimeOffsetService = scheduleResponseAreaTimeOffsetService;
|
||||
}
|
||||
|
||||
|
||||
@@ -166,7 +171,7 @@ namespace PARR.API.Controllers.V1
|
||||
ScheduleExcludeTypeId = request.ScheduleExcludeTypeId,
|
||||
ScheduleExcludeTypeCalendarId = request.ScheduleExcludeTypeCalendarId,
|
||||
IsAutoDistributionEnabled = request.IsAutoDistributionEnabled,
|
||||
IsWorkGroupTimezone = request.IsWorkGroupTimezone
|
||||
IsResponseAreaTimezone = request.IsWorkGroupTimezone
|
||||
//IsAgent = request.IsAgent,
|
||||
//AgentName = request.AgentName,
|
||||
//AgentTimeOutSec = request.AgentTimeOutSec,
|
||||
@@ -260,7 +265,7 @@ namespace PARR.API.Controllers.V1
|
||||
orig.ScheduleExcludeTypeId = request.ScheduleExcludeTypeId;
|
||||
orig.ScheduleExcludeTypeCalendarId = request.ScheduleExcludeTypeCalendarId;
|
||||
orig.IsAutoDistributionEnabled = request.IsAutoDistributionEnabled;
|
||||
orig.IsWorkGroupTimezone = request.IsWorkGroupTimezone;
|
||||
orig.IsResponseAreaTimezone = request.IsWorkGroupTimezone;
|
||||
//orig.IsAgent = request.IsAgent;
|
||||
//orig.AgentName = request.AgentName;
|
||||
//orig.AgentTimeOutSec = request.AgentTimeOutSec;
|
||||
@@ -445,7 +450,8 @@ namespace PARR.API.Controllers.V1
|
||||
|
||||
var scheduleResponse = new JobGroupScheduleResponse
|
||||
{
|
||||
Timezone = settingsFromDb.ScheduleTimezone,
|
||||
//Timezone = settingsFromDb.ScheduleTimezone,
|
||||
Timezone = scheduleResponseAreaTimeOffsetService.GetDefault.EsppValue,
|
||||
TypeSchedule = mapper.Map<EsppScheduleTypeScheduleResponse>(schedule.TypeSchedule),
|
||||
Values = mapper.Map<List<EsppScheduleValResponse>>(schedule.Values).OrderBy(t => t.Order).ToList()
|
||||
};
|
||||
|
||||
@@ -8,6 +8,7 @@ using PARR.API.Contracts.V1.Responses;
|
||||
using PARR.API.Contracts.V1.Responses.Base;
|
||||
using PARR.API.Controllers.V1.Base;
|
||||
using PARR.API.Services.Interfaces;
|
||||
using PARR.BLL.Helpers;
|
||||
using PARR.Common.Domain;
|
||||
using PARR.Constants;
|
||||
using PARR.DAL.Contracts;
|
||||
@@ -200,17 +201,11 @@ namespace PARR.API.Controllers.V1
|
||||
{ //RobotTaskTemplateResponse
|
||||
var robotTaskTemplateResponse = mapper.Map<RobotTaskTemplateResponse>(task);
|
||||
|
||||
//if (shortcodesService.IsAnyShortcodes(robotTaskTemplateResponse.FullDescription))
|
||||
robotTaskTemplateResponse.FullDescription = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.FullDescription, task.Template!);
|
||||
//if (shortcodesService.IsAnyShortcodes(robotTaskTemplateResponse.ShortDescription))
|
||||
robotTaskTemplateResponse.ShortDescription = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.ShortDescription, task.Template!);
|
||||
//if (shortcodesService.IsAnyShortcodes(robotTaskTemplateResponse.Solution))
|
||||
robotTaskTemplateResponse.Solution = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.Solution, task.Template!);
|
||||
//if (shortcodesService.IsAnyShortcodes(robotTaskTemplateResponse.TnkName))
|
||||
robotTaskTemplateResponse.TnkName = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.TnkName, task.Template!);
|
||||
//if (shortcodesService.IsAnyShortcodes(robotTaskTemplateResponse.WorkName))
|
||||
robotTaskTemplateResponse.WorkName = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.WorkName, task.Template!);
|
||||
//if (shortcodesService.IsAnyShortcodes(robotTaskTemplateResponse.WorkGroup))
|
||||
robotTaskTemplateResponse.WorkGroup = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.WorkGroup, task.Template!);
|
||||
robotTaskTemplateResponse.ResponseArea = await shortcodesService.ApplyShortcodesAsync(robotTaskTemplateResponse.ResponseArea, task.Template!);
|
||||
|
||||
@@ -223,12 +218,15 @@ namespace PARR.API.Controllers.V1
|
||||
//RobotTaskScheduleResponse
|
||||
var robotTaskScheduleResponse = mapper.Map<RobotTaskScheduleResponse>(task);
|
||||
|
||||
robotTaskScheduleResponse.Timezone = await GetTimezoneForTemplateAsync(task.Template!);
|
||||
robotTaskScheduleResponse.Timezone = GetTimezoneForTemplate(task.Template!);
|
||||
|
||||
robotTaskScheduleResponse.WorkGroup = await shortcodesService.ApplyShortcodesAsync(robotTaskScheduleResponse.WorkGroup, task.Template!);
|
||||
robotTaskScheduleResponse.ResponseArea = await shortcodesService.ApplyShortcodesAsync(robotTaskScheduleResponse.ResponseArea, task.Template!);
|
||||
|
||||
var nextRunWithTimezone = nextRunService.GetNextRunWithTimezoneEsppAndResponseArea(task.Template!.NextRun, task.Template!.Job?.Group?.IsResponseAreaTimezone, robotTaskScheduleResponse.ResponseArea);
|
||||
|
||||
robotTaskScheduleResponse.NextStart = EsppScheduleHelpers.GetNextRun(nextRunWithTimezone);
|
||||
robotTaskScheduleResponse.GenerationTime = EsppScheduleHelpers.GetGenerationTime(nextRunWithTimezone);
|
||||
|
||||
return Ok(new Response<RobotTaskScheduleResponse>(robotTaskScheduleResponse, true));
|
||||
}
|
||||
@@ -240,6 +238,11 @@ namespace PARR.API.Controllers.V1
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Обоновить NextRun если он устарел
|
||||
/// </summary>
|
||||
/// <param name="task"></param>
|
||||
/// <returns></returns>
|
||||
private async Task UpdateLastNextRunDate(RobotConfiguration task)
|
||||
{
|
||||
var template = task.Template!;
|
||||
@@ -251,9 +254,6 @@ namespace PARR.API.Controllers.V1
|
||||
//var nextRun = await esppScheduleTransformService.GetNextDateAsync(template.Job!.GroupId, template.NextRun);
|
||||
#endregion
|
||||
|
||||
//пока у нас выключено автораспределение, считает по refDate
|
||||
//TODO: когда заработает автораспределение, будем думать!!!!!
|
||||
|
||||
//var nextRun = await esppScheduleTransformService.GetNextDateAsync(template.Job!.GroupId, template!.Job!.Group!.ReferenceDate);
|
||||
var nextRun = await nextRunService.GetNextRunForTemplateAsync(template.Id, false);
|
||||
|
||||
@@ -261,11 +261,6 @@ namespace PARR.API.Controllers.V1
|
||||
{
|
||||
logger.LogDebug($"Для шаблона id {template.Id} обновляю nextRun, новое значение {nextRun}, старое значение {template.NextRun}");
|
||||
|
||||
//if (template.NextRun < DateTimeOffset.UtcNow)
|
||||
//{
|
||||
// logger.LogDebug($"Для шаблона id {template.Id} обновляю lastRun, новое значение {template.NextRun}, старое значение {template.LastRun}");
|
||||
// template.LastRun = template.NextRun;
|
||||
//}
|
||||
template.LastRun = template.NextRun;
|
||||
template.NextRun = nextRun;
|
||||
|
||||
@@ -331,10 +326,17 @@ namespace PARR.API.Controllers.V1
|
||||
return true;
|
||||
}
|
||||
|
||||
private async Task<string> GetTimezoneForTemplateAsync(Template template)
|
||||
|
||||
/// <summary>
|
||||
/// Получить таймзону для шаблона
|
||||
/// </summary>
|
||||
/// <param name="template"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="InvalidOperationException"></exception>
|
||||
private string GetTimezoneForTemplate(Template template)
|
||||
{
|
||||
if (template.Job?.Group?.IsWorkGroupTimezone != true)
|
||||
return settingsFromDb.ScheduleTimezone;
|
||||
if (template.Job?.Group?.IsResponseAreaTimezone != true)
|
||||
return scheduleResponseAreaTimeOffsetService.GetDefault.EsppValue;
|
||||
|
||||
var responseArea = template.Unit?.BaseFields?.ResponseArea;
|
||||
|
||||
@@ -345,18 +347,7 @@ namespace PARR.API.Controllers.V1
|
||||
"но включена настройка 'использовать часовой пояс рабочей группы'.");
|
||||
}
|
||||
|
||||
var offsets = await scheduleResponseAreaTimeOffsetService
|
||||
.Get()
|
||||
.ToDictionaryAsync(t => t.ResponseArea, t => t.TimeOffset);
|
||||
|
||||
if (!offsets.TryGetValue(responseArea, out var offset))
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
$"Не найдено временное смещение для ResponseArea '{responseArea}' у шаблона Id={template.Id}, Name='{template.Name}'. " +
|
||||
"Проверьте наличие записи в таблице ScheduleResponseAreaTimeOffset.");
|
||||
}
|
||||
|
||||
return offset;
|
||||
return scheduleResponseAreaTimeOffsetService.GetByResponseAreaOrDefault(responseArea).EsppValue;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -17,8 +17,8 @@ using PARR.DAL.Contracts;
|
||||
using PARR.DAL.DomainModels;
|
||||
using PARR.DAL.DomainServices.Shortcodes;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.NextRunServices;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace PARR.API.Controllers.V1
|
||||
{
|
||||
@@ -35,6 +35,7 @@ namespace PARR.API.Controllers.V1
|
||||
private readonly ILogger<TemplateController> logger;
|
||||
private readonly IShortcodesService shortcodesService;
|
||||
private readonly IOrderService orderService;
|
||||
private readonly INextRunService nextRunService;
|
||||
|
||||
public TemplateController(
|
||||
IMapper mapper,
|
||||
@@ -43,7 +44,8 @@ namespace PARR.API.Controllers.V1
|
||||
IClientService clientService,
|
||||
ILogger<TemplateController> logger,
|
||||
IShortcodesService shortcodesService,
|
||||
IOrderService orderService
|
||||
IOrderService orderService,
|
||||
INextRunService nextRunService
|
||||
)
|
||||
{
|
||||
this.mapper = mapper;
|
||||
@@ -53,6 +55,7 @@ namespace PARR.API.Controllers.V1
|
||||
this.logger = logger;
|
||||
this.shortcodesService = shortcodesService;
|
||||
this.orderService = orderService;
|
||||
this.nextRunService = nextRunService;
|
||||
}
|
||||
|
||||
|
||||
@@ -135,7 +138,7 @@ namespace PARR.API.Controllers.V1
|
||||
var templatesDict = templates.ToDictionary(t => t.Id);
|
||||
var templateResponseDict = templateResponse.ToDictionary(t => t.Id);
|
||||
|
||||
#region Заполняем шорткоды
|
||||
#region Заполняем шорткоды и NextRunWithResponseAreaOffset
|
||||
if (filter.ApplyShortcode == true)
|
||||
{
|
||||
//sw.Restart();
|
||||
@@ -143,6 +146,7 @@ namespace PARR.API.Controllers.V1
|
||||
{
|
||||
//await ApplyTemplateShortcodesAsync(responseItem, templates.First(t => t.Id == responseItem.Id));
|
||||
await ApplyTemplateShortcodesAsync(responseItem, templatesDict[responseItem.Id]);
|
||||
FillNextRunWithResponseAreaOffset(responseItem);
|
||||
}
|
||||
//logger.LogDebug("Получение шорткодов: {ElapsedMs} мс", sw.ElapsedMilliseconds);
|
||||
//sw.Stop();
|
||||
@@ -187,6 +191,7 @@ namespace PARR.API.Controllers.V1
|
||||
|
||||
var response = mapper.Map<TemplateResponse>(template);
|
||||
await ApplyTemplateShortcodesAsync(response, template);
|
||||
FillNextRunWithResponseAreaOffset(response);
|
||||
|
||||
var ordersCountResult = await GetOrdersCountAsync(new List<Guid> { response.Id });
|
||||
response.OrderCount = ordersCountResult.Count > 0 ? ordersCountResult.First().Value : 0;
|
||||
@@ -280,6 +285,7 @@ namespace PARR.API.Controllers.V1
|
||||
var response = mapper.Map<TemplateListResponse>(templateToResponse);
|
||||
|
||||
await ApplyTemplateShortcodesAsync(response, templateToResponse);
|
||||
FillNextRunWithResponseAreaOffset(response);
|
||||
|
||||
var ordersCountResult = await GetOrdersCountAsync(new List<Guid> { response.Id });
|
||||
response.OrderCount = ordersCountResult.Count > 0 ? ordersCountResult.First().Value : 0;
|
||||
@@ -324,5 +330,17 @@ namespace PARR.API.Controllers.V1
|
||||
return templateWithOrders.ToDictionary(t => t.TemplateId!.Value, t => t.OrderCount);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Заполнить NextRunWithResponseAreaOffset
|
||||
/// </summary>
|
||||
/// <param name="response"></param>
|
||||
private void FillNextRunWithResponseAreaOffset(TemplateBaseResponse response)
|
||||
{
|
||||
response.NextRunWithResponseAreaOffset = response.IsResponseAreaTimezone && !string.IsNullOrEmpty(response.ResponseArea)
|
||||
? nextRunService.GetNextRunWithResponseAreaOffset(response.NextRun, response.ResponseArea)
|
||||
: response.NextRun;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ using PARR.DAL.Models.Job;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
using PARR.DAL.Services.Interfaces.Job;
|
||||
using PARR.DAL.Services.Interfaces.Unit;
|
||||
using PARR.DAL.TransformServices;
|
||||
|
||||
|
||||
namespace PARR.API.Controllers.V1
|
||||
{
|
||||
|
||||
@@ -26,7 +26,8 @@ namespace PARR.API.MappingProfiles
|
||||
.ForMember(d => d.Agent, o => o.MapFrom(s => s.Job!.Group!))
|
||||
.ForMember(d => d.SyncStatus, o => o.MapFrom(s => s.RobotConfigurations.OrderBy(t => t.RobotCode)))
|
||||
.ForMember(d => d.OrderCount, o => o.MapFrom(s => s.Orders.Count()))
|
||||
.ForMember(d => d.IsAutoDistributionEnabled, o => o.MapFrom(s => s.Job!.Group!.IsAutoDistributionEnabled));
|
||||
.ForMember(d => d.IsAutoDistributionEnabled, o => o.MapFrom(s => s.Job!.Group!.IsAutoDistributionEnabled))
|
||||
.ForMember(d => d.IsResponseAreaTimezone, o => o.MapFrom(s => s.Job!.Group!.IsResponseAreaTimezone));
|
||||
|
||||
CreateMap<Template, TemplateListResponse>();
|
||||
|
||||
@@ -246,13 +247,13 @@ namespace PARR.API.MappingProfiles
|
||||
.ForMember(d => d.Exclude, o => o.MapFrom(s => s.Template!.Job!.Group!.ScheduleExcludeType!.EsppName))
|
||||
//.ForMember(d => d.ExcludeCalendar, o => o.MapFrom<RobotTaskScheduleExcludeCalendarResolver>())
|
||||
.ForMember(d => d.ExcludeCalendar, o => o.MapFrom(s => s.Template!.Job!.Group!.ScheduleExcludeTypeCalendar != null ? s.Template!.Job!.Group!.ScheduleExcludeTypeCalendar.EsppName : null))
|
||||
.ForMember(d => d.Timezone, o => o.MapFrom<RobotTaskScheduleTimezoneResolver>())
|
||||
//.ForMember(d => d.Timezone, o => o.MapFrom<RobotTaskScheduleTimezoneResolver>())
|
||||
.ForMember(d => d.RepeatRange, o => o.MapFrom<RobotTaskScheduleRepeatRangeResolver>())
|
||||
//todo: GenerationTime
|
||||
//.ForMember(d => d.GenerationTime, o => o.MapFrom(s => EsppScheduleHelpers.GetGenerationTime(s.Template!.NextRun)))
|
||||
.ForMember(d => d.GenerationTime, o => o.MapFrom<RobotTaskScheduleGenerationTimeResolver>())
|
||||
//.ForMember(d => d.GenerationTime, o => o.MapFrom<RobotTaskScheduleGenerationTimeResolver>())
|
||||
//.ForMember(d => d.NextStart, o => o.MapFrom(s => EsppScheduleHelpers.GetNextRun(s.Template!.NextRun)))
|
||||
.ForMember(d => d.NextStart, o => o.MapFrom<RobotTaskScheduleNextStartResolver>())
|
||||
//.ForMember(d => d.NextStart, o => o.MapFrom<RobotTaskScheduleNextStartResolver>())
|
||||
.ForMember(d => d.ScheduleType, o => o.MapFrom(s =>
|
||||
s.Template!.Job!.Group!.EsppSchValues!.First()!.EsppSchTypeConfig!.EsppSchTypeSchedule!.Description))
|
||||
.ForMember(d => d.ScheduleTypeCode, o => o.MapFrom(s =>
|
||||
@@ -372,7 +373,8 @@ namespace PARR.API.MappingProfiles
|
||||
.Include<JobGroup, JobGroupResponse>()
|
||||
.Include<JobGroup, JobGroupWithDistributionConfigResponse>()
|
||||
.ForMember(d => d.GroupType, o => o.MapFrom(s => s.GroupType))
|
||||
.ForMember(d => d.GroupingUnitField, o => o.MapFrom(s => s.GroupingUnitField));
|
||||
.ForMember(d => d.GroupingUnitField, o => o.MapFrom(s => s.GroupingUnitField))
|
||||
.ForMember(d => d.IsWorkGroupTimezone, o => o.MapFrom(s => s.IsResponseAreaTimezone));
|
||||
|
||||
CreateMap<JobGroup, JobGroupBaseResponse>()
|
||||
.ForMember(d => d.Name, o => o.MapFrom(s => s.GroupName));
|
||||
|
||||
@@ -3,6 +3,7 @@ using PARR.API.Contracts.V1.Responses;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
using PARR.DAL.Services.Interfaces.Schedule;
|
||||
|
||||
namespace PARR.API.MappingProfiles.Resolvers
|
||||
{
|
||||
@@ -12,18 +13,21 @@ namespace PARR.API.MappingProfiles.Resolvers
|
||||
private readonly ILogger<ApplicationInWorkScheduleResolver> logger;
|
||||
private readonly IMapper mapper;
|
||||
private readonly SettingsFromDb settingsFromDb;
|
||||
private readonly IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService;
|
||||
|
||||
public ApplicationInWorkScheduleResolver(
|
||||
IEsppSchTypeConfigService esppConfigService,
|
||||
ILogger<ApplicationInWorkScheduleResolver> logger,
|
||||
IMapper mapper,
|
||||
SettingsFromDb settingsFromDb
|
||||
SettingsFromDb settingsFromDb,
|
||||
IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService
|
||||
)
|
||||
{
|
||||
this.esppConfigService = esppConfigService;
|
||||
this.logger = logger;
|
||||
this.mapper = mapper;
|
||||
this.settingsFromDb = settingsFromDb;
|
||||
this.scheduleResponseAreaTimeOffsetService = scheduleResponseAreaTimeOffsetService;
|
||||
}
|
||||
|
||||
public ApplicationInWorkScheduleResponse? Resolve(ApplicationsInWork source, ApplicationInWorkResponse destination, ApplicationInWorkScheduleResponse? destMember, ResolutionContext context)
|
||||
@@ -38,7 +42,8 @@ namespace PARR.API.MappingProfiles.Resolvers
|
||||
|
||||
var response = new ApplicationInWorkScheduleResponse
|
||||
{
|
||||
Timezone = settingsFromDb.ScheduleTimezone,
|
||||
//Timezone = settingsFromDb.ScheduleTimezone,
|
||||
Timezone = scheduleResponseAreaTimeOffsetService.GetDefault.EsppValue,
|
||||
TypeSchedule = mapper.Map<EsppScheduleTypeScheduleResponse>(schedule.TypeSchedule),
|
||||
Values = mapper.Map<List<EsppScheduleValResponse>>(schedule.Values).OrderBy(t => t.Order).ToList()
|
||||
};
|
||||
|
||||
@@ -3,6 +3,7 @@ using PARR.API.Contracts.V1.Responses;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Models.Job;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
using PARR.DAL.Services.Interfaces.Schedule;
|
||||
|
||||
namespace PARR.API.MappingProfiles.Resolvers
|
||||
{
|
||||
@@ -12,18 +13,21 @@ namespace PARR.API.MappingProfiles.Resolvers
|
||||
private readonly ILogger<JobGroupScheduleResolver> logger;
|
||||
private readonly IMapper mapper;
|
||||
private readonly SettingsFromDb settingsFromDb;
|
||||
private readonly IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService;
|
||||
|
||||
public JobGroupScheduleResolver(
|
||||
IEsppSchTypeConfigService esppConfigService,
|
||||
ILogger<JobGroupScheduleResolver> logger,
|
||||
IMapper mapper,
|
||||
SettingsFromDb settingsFromDb
|
||||
SettingsFromDb settingsFromDb,
|
||||
IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService
|
||||
)
|
||||
{
|
||||
this.esppConfigService = esppConfigService;
|
||||
this.logger = logger;
|
||||
this.mapper = mapper;
|
||||
this.settingsFromDb = settingsFromDb;
|
||||
this.scheduleResponseAreaTimeOffsetService = scheduleResponseAreaTimeOffsetService;
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +43,8 @@ namespace PARR.API.MappingProfiles.Resolvers
|
||||
|
||||
var response = new JobGroupScheduleResponse
|
||||
{
|
||||
Timezone = settingsFromDb.ScheduleTimezone,
|
||||
//Timezone = settingsFromDb.ScheduleTimezone,
|
||||
Timezone = scheduleResponseAreaTimeOffsetService.GetDefault.EsppValue,
|
||||
TypeSchedule = mapper.Map<EsppScheduleTypeScheduleResponse>(schedule.TypeSchedule),
|
||||
Values = mapper.Map<List<EsppScheduleValResponse>>(schedule.Values).OrderBy(t => t.Order).ToList()
|
||||
};
|
||||
|
||||
@@ -3,26 +3,26 @@ using PARR.API.Contracts.V1.Responses;
|
||||
using PARR.BLL.Helpers;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.TransformServices;
|
||||
|
||||
|
||||
namespace PARR.API.MappingProfiles.Resolvers
|
||||
{
|
||||
public class RobotTaskScheduleGenerationTimeResolver : IValueResolver<RobotConfiguration, RobotTaskScheduleResponse, string>
|
||||
{
|
||||
private readonly SettingsFromDb settingsFromDb;
|
||||
private readonly INextRunModifierService nextRunModifierService;
|
||||
//public class RobotTaskScheduleGenerationTimeResolver : IValueResolver<RobotConfiguration, RobotTaskScheduleResponse, string>
|
||||
//{
|
||||
// private readonly SettingsFromDb settingsFromDb;
|
||||
// private readonly INextRunModifierService nextRunModifierService;
|
||||
|
||||
public RobotTaskScheduleGenerationTimeResolver(SettingsFromDb settingsFromDb, INextRunModifierService nextRunModifierService)
|
||||
{
|
||||
this.settingsFromDb = settingsFromDb;
|
||||
this.nextRunModifierService = nextRunModifierService;
|
||||
}
|
||||
// public RobotTaskScheduleGenerationTimeResolver(SettingsFromDb settingsFromDb, INextRunModifierService nextRunModifierService)
|
||||
// {
|
||||
// this.settingsFromDb = settingsFromDb;
|
||||
// this.nextRunModifierService = nextRunModifierService;
|
||||
// }
|
||||
|
||||
public string Resolve(RobotConfiguration source, RobotTaskScheduleResponse destination, string destMember, ResolutionContext context)
|
||||
{
|
||||
var nextRunForRobot = nextRunModifierService.GetNextRunByAccountRobotTimeZone(source.Template!.NextRun);
|
||||
// public string Resolve(RobotConfiguration source, RobotTaskScheduleResponse destination, string destMember, ResolutionContext context)
|
||||
// {
|
||||
// var nextRunForRobot = nextRunModifierService.GetNextRunByAccountRobotTimeZone(source.Template!.NextRun);
|
||||
|
||||
return EsppScheduleHelpers.GetGenerationTime(nextRunForRobot);
|
||||
}
|
||||
}
|
||||
// return EsppScheduleHelpers.GetGenerationTime(nextRunForRobot);
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
@@ -3,26 +3,47 @@ using PARR.API.Contracts.V1.Responses;
|
||||
using PARR.BLL.Helpers;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.TransformServices;
|
||||
using PARR.DAL.Services.Interfaces.Schedule;
|
||||
|
||||
namespace PARR.API.MappingProfiles.Resolvers
|
||||
{
|
||||
public class RobotTaskScheduleNextStartResolver : IValueResolver<RobotConfiguration, RobotTaskScheduleResponse, string>
|
||||
{
|
||||
private readonly SettingsFromDb settingsFromDb;
|
||||
private readonly INextRunModifierService nextRunModifierService;
|
||||
//public class RobotTaskScheduleNextStartResolver : IValueResolver<RobotConfiguration, RobotTaskScheduleResponse, string>
|
||||
//{
|
||||
// private readonly SettingsFromDb settingsFromDb;
|
||||
// private readonly INextRunModifierService nextRunModifierService;
|
||||
// private readonly IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService;
|
||||
|
||||
public RobotTaskScheduleNextStartResolver(SettingsFromDb settingsFromDb, INextRunModifierService nextRunModifierService)
|
||||
{
|
||||
this.settingsFromDb = settingsFromDb;
|
||||
this.nextRunModifierService = nextRunModifierService;
|
||||
}
|
||||
// public RobotTaskScheduleNextStartResolver(
|
||||
// SettingsFromDb settingsFromDb,
|
||||
// INextRunModifierService nextRunModifierService,
|
||||
// IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService
|
||||
// )
|
||||
// {
|
||||
// this.settingsFromDb = settingsFromDb;
|
||||
// this.nextRunModifierService = nextRunModifierService;
|
||||
// this.scheduleResponseAreaTimeOffsetService = scheduleResponseAreaTimeOffsetService;
|
||||
// }
|
||||
|
||||
public string Resolve(RobotConfiguration source, RobotTaskScheduleResponse destination, string destMember, ResolutionContext context)
|
||||
{
|
||||
var nextRunForRobot = nextRunModifierService.GetNextRunByAccountRobotTimeZone(source.Template!.NextRun);
|
||||
// public string Resolve(RobotConfiguration source, RobotTaskScheduleResponse destination, string destMember, ResolutionContext context)
|
||||
// {
|
||||
// var nextRunForRobot = nextRunModifierService.GetNextRunByAccountRobotTimeZone(source.Template!.NextRun);
|
||||
|
||||
return EsppScheduleHelpers.GetNextRun(nextRunForRobot);
|
||||
}
|
||||
}
|
||||
// // Сначала прибавляем офсет УЗ ЕСПП
|
||||
// // потом прибаляем = офсет УЗ ЕСПП - offset ЗО
|
||||
|
||||
// // если включен - IsWorkGroupTimezone - группировка по таймозне группы, применяем тайм зону группы
|
||||
// if (source.Template?.Job?.Group?.IsWorkGroupTimezone == true)
|
||||
// {
|
||||
// var responseArea = "TODO";
|
||||
// var esppOffset = new TimeSpan(settingsFromDb.EsppRobotAccountTimeZoneHour, 0, 0);
|
||||
// var workGroupOffset = scheduleResponseAreaTimeOffsetService.GetByResponseAreaOrDefault(responseArea).UtcTimeOffset;
|
||||
|
||||
// var resultOffset = esppOffset - workGroupOffset;
|
||||
|
||||
// nextRunForRobot = nextRunForRobot.Add(resultOffset);
|
||||
// }
|
||||
|
||||
// return EsppScheduleHelpers.GetNextRun(nextRunForRobot);
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
using AutoMapper;
|
||||
using PARR.API.Contracts.V1.Responses;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
using PARR.DAL.TransformServices;
|
||||
|
||||
|
||||
namespace PARR.API.MappingProfiles.Resolvers
|
||||
{
|
||||
@@ -11,17 +10,14 @@ namespace PARR.API.MappingProfiles.Resolvers
|
||||
{
|
||||
private readonly IEsppSchTypeConfigService esppConfigService;
|
||||
private readonly ILogger<RobotTaskScheduleSchResolver> logger;
|
||||
private readonly INextRunModifierService nextRunModifierService;
|
||||
|
||||
public RobotTaskScheduleSchResolver(
|
||||
IEsppSchTypeConfigService esppConfigService,
|
||||
ILogger<RobotTaskScheduleSchResolver> logger,
|
||||
INextRunModifierService nextRunModifierService
|
||||
ILogger<RobotTaskScheduleSchResolver> logger
|
||||
)
|
||||
{
|
||||
this.esppConfigService = esppConfigService;
|
||||
this.logger = logger;
|
||||
this.nextRunModifierService = nextRunModifierService;
|
||||
}
|
||||
|
||||
public List<RobotTaskScheduleSchResponse>? Resolve(RobotConfiguration source, RobotTaskScheduleResponse destination, List<RobotTaskScheduleSchResponse>? destMember, ResolutionContext context)
|
||||
@@ -44,14 +40,15 @@ namespace PARR.API.MappingProfiles.Resolvers
|
||||
Value = t.Value.Value
|
||||
}).OrderBy(t => t.Order).ToList();
|
||||
|
||||
//Если задача относится к распределенной модели исполнения за период месяц устанавливаем день равный NextRun
|
||||
if (source.Template!.Job!.Group!.IsAutoDistributionEnabled && schedule.TypeSchedule.Id == (int)EsppSchTypeScheduleEnum.Monthly)
|
||||
{
|
||||
var nextRunForRobot = nextRunModifierService.GetNextRunByAccountRobotTimeZone(source.Template.NextRun);
|
||||
////Если задача относится к распределенной модели исполнения за период месяц устанавливаем день равный NextRun
|
||||
////УСТАРЕВШЕЕ
|
||||
//if (source.Template!.Job!.Group!.IsAutoDistributionEnabled && schedule.TypeSchedule.Id == (int)EsppSchTypeScheduleEnum.Monthly)
|
||||
//{
|
||||
// var nextRunForRobot = nextRunModifierService.GetNextRunByAccountRobotTimeZone(source.Template.NextRun);
|
||||
|
||||
//response.First().Value = source.Template.NextRun.Day.ToString();
|
||||
response.First().Value = nextRunForRobot.Day.ToString();
|
||||
}
|
||||
// //response.First().Value = source.Template.NextRun.Day.ToString();
|
||||
// response.First().Value = nextRunForRobot.Day.ToString();
|
||||
//}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
@@ -5,18 +5,18 @@ using PARR.DAL.Models;
|
||||
|
||||
namespace PARR.API.MappingProfiles.Resolvers
|
||||
{
|
||||
public class RobotTaskScheduleTimezoneResolver : IValueResolver<RobotConfiguration, RobotTaskScheduleResponse, string>
|
||||
{
|
||||
private readonly SettingsFromDb settingsFromDb;
|
||||
//public class RobotTaskScheduleTimezoneResolver : IValueResolver<RobotConfiguration, RobotTaskScheduleResponse, string>
|
||||
//{
|
||||
// private readonly SettingsFromDb settingsFromDb;
|
||||
|
||||
public RobotTaskScheduleTimezoneResolver(SettingsFromDb settingsFromDb)
|
||||
{
|
||||
this.settingsFromDb = settingsFromDb;
|
||||
}
|
||||
// public RobotTaskScheduleTimezoneResolver(SettingsFromDb settingsFromDb)
|
||||
// {
|
||||
// this.settingsFromDb = settingsFromDb;
|
||||
// }
|
||||
|
||||
public string Resolve(RobotConfiguration source, RobotTaskScheduleResponse destination, string destMember, ResolutionContext context)
|
||||
{
|
||||
return settingsFromDb.ScheduleTimezone;
|
||||
}
|
||||
}
|
||||
// public string Resolve(RobotConfiguration source, RobotTaskScheduleResponse destination, string destMember, ResolutionContext context)
|
||||
// {
|
||||
// return settingsFromDb.ScheduleTimezone;
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ using PARR.API.Contracts.V1.Responses;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Models;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
using PARR.DAL.Services.Interfaces.Schedule;
|
||||
|
||||
namespace PARR.API.MappingProfiles.Resolvers
|
||||
{
|
||||
@@ -12,18 +13,21 @@ namespace PARR.API.MappingProfiles.Resolvers
|
||||
private readonly ILogger<TemplateScheduleResolver> logger;
|
||||
private readonly IMapper mapper;
|
||||
private readonly SettingsFromDb settingsFromDb;
|
||||
private readonly IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService;
|
||||
|
||||
public TemplateScheduleResolver(
|
||||
IEsppSchTypeConfigService esppConfigService,
|
||||
ILogger<TemplateScheduleResolver> logger,
|
||||
IMapper mapper,
|
||||
SettingsFromDb settingsFromDb
|
||||
SettingsFromDb settingsFromDb,
|
||||
IScheduleResponseAreaTimeOffsetService scheduleResponseAreaTimeOffsetService
|
||||
)
|
||||
{
|
||||
this.esppConfigService = esppConfigService;
|
||||
this.logger = logger;
|
||||
this.mapper = mapper;
|
||||
this.settingsFromDb = settingsFromDb;
|
||||
this.scheduleResponseAreaTimeOffsetService = scheduleResponseAreaTimeOffsetService;
|
||||
}
|
||||
|
||||
public EsppScheduleResponse? Resolve(Template source, TemplateResponse destination, EsppScheduleResponse? destMember, ResolutionContext context)
|
||||
@@ -42,7 +46,8 @@ namespace PARR.API.MappingProfiles.Resolvers
|
||||
//LastRun = source.ApplicationsInWork.LastRun,
|
||||
NextRun = source.NextRun,
|
||||
LastRun = source.LastRun,
|
||||
Timezone = settingsFromDb.ScheduleTimezone,
|
||||
// Timezone = settingsFromDb.ScheduleTimezone,
|
||||
Timezone = scheduleResponseAreaTimeOffsetService.GetDefault.EsppValue,
|
||||
TypeSchedule = mapper.Map<EsppScheduleTypeScheduleResponse>(schedule.TypeSchedule),
|
||||
Values = mapper.Map<List<EsppScheduleValResponse>>(schedule.Values).OrderBy(t => t.Order).ToList()
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user