feat(esppScheduleSync): nextRun пересчитывается с учетом таймзоны робота.

This commit is contained in:
Mikhail Trubnikov
2024-08-06 11:06:49 +10:00
parent c857accfb9
commit 5bddcc0aca

View File

@@ -5,10 +5,10 @@ using PARR.BLL.Services.Interfaces;
using PARR.DAL.Contracts;
using PARR.DAL.Models;
using PARR.DAL.Services.Interfaces;
using PARR.DAL.TransformServices;
using PARR.EsppScheduleSync.Domain;
using PARR.EsppScheduleSync.Settings;
using PARR.EsppSync;
using System.Linq;
namespace PARR.EsppScheduleSync
{
@@ -20,6 +20,7 @@ namespace PARR.EsppScheduleSync
private readonly ISyncService<EsppObjectSchedule> syncService;
private readonly SettingsFromDb settingsFromDb;
private readonly IServiceProvider serviceProvider;
private readonly INextRunModifierService nextRunModifierService;
public ScheduleSyncher(
ILogger<ScheduleSyncher> logger,
@@ -27,7 +28,8 @@ namespace PARR.EsppScheduleSync
IMqService mqService,
ISyncService<EsppObjectSchedule> syncService,
SettingsFromDb settingsFromDb,
IServiceProvider serviceProvider
IServiceProvider serviceProvider,
INextRunModifierService nextRunModifierService
)
{
this.logger = logger;
@@ -36,6 +38,7 @@ namespace PARR.EsppScheduleSync
this.syncService = syncService;
this.settingsFromDb = settingsFromDb;
this.serviceProvider = serviceProvider;
this.nextRunModifierService = nextRunModifierService;
if (globalSettings.MqSettings == null)
{
logger.LogError("Нет секции настроек хранилища. MqSettings, EsppTemplates");
@@ -88,8 +91,8 @@ namespace PARR.EsppScheduleSync
WorkGroup = template.Host!.WorkGroup!.Name,
//Мы решили, что для всех расписаний "Нет исключений", если что-то поменяется, тут нужно переделать
TypeV60calendar = settingsFromDb.ScheduleExclude == "Нет исключений" ? "NONE" : "",
//Scheduled = EsppScheduleHelpers.GetNextRun(template.ApplicationsInWork!.NextRun),
Scheduled = EsppScheduleHelpers.GetNextRun(template.NextRun),
//Scheduled = EsppScheduleHelpers.GetNextRun(template.NextRun),
Scheduled = EsppScheduleHelpers.GetNextRun(nextRunModifierService.GetNextRunByAccountRobotTimeZone(template.NextRun)),
Timezone = settingsFromDb.ScheduleTimezone,
//Мы решили, что для всех расписаний "Отсутствует дата завершения", если что-то поменяется, тут нужно переделать
TerminationType = settingsFromDb.ScheduleRepeatRange == "Отсутствует дата завершения" ? "forever" : "",
@@ -142,7 +145,9 @@ namespace PARR.EsppScheduleSync
//если включено автораспределение, подставляем дату месяца из NextRun
if (template.ApplicationsInWork?.IsAutoDistributionEnabled == true)
{
esppObject.Dayofmonth = template.NextRun.Day.ToString();
var nextRunByRobotTimeZone = nextRunModifierService.GetNextRunByAccountRobotTimeZone(template.NextRun);
esppObject.Dayofmonth = nextRunByRobotTimeZone.Day.ToString();
// esppObject.Dayofmonth = template.NextRun.Day.ToString();
}
else
{