feat(api, dal, nextRun): переделал вызов рассчета NextRun на INextRunService
This commit is contained in:
@@ -29,40 +29,40 @@ namespace PARR.DAL.TransformServices
|
||||
}
|
||||
|
||||
|
||||
public async Task<DateTimeOffset> GetWorkDayAsync(DateTimeOffset nextRun)
|
||||
{
|
||||
// получаем день относительно часового пояса МСК
|
||||
var date = DateOnly.FromDateTime(DateResolver.IsCurrentDayRelativeMskTime(nextRun) ? nextRun.Date : nextRun.Date.AddDays(1));
|
||||
//public async Task<DateTimeOffset> GetWorkDayAsync(DateTimeOffset nextRun)
|
||||
//{
|
||||
// // получаем день относительно часового пояса МСК
|
||||
// var date = DateOnly.FromDateTime(DateResolver.IsCurrentDayRelativeMskTime(nextRun) ? nextRun.Date : nextRun.Date.AddDays(1));
|
||||
|
||||
if (await weekendDayService.IsWorkDayAsync(date, true))
|
||||
{
|
||||
//текущий nextRun рабочий день, возвращаем его
|
||||
return nextRun;
|
||||
}
|
||||
// if (await weekendDayService.IsWorkDayAsync(date, true))
|
||||
// {
|
||||
// //текущий nextRun рабочий день, возвращаем его
|
||||
// return nextRun;
|
||||
// }
|
||||
|
||||
// ищем следующий рабочий день, максимум 20 итераций, если за их кол-во не нашли рабочий, берём последний не рабочий
|
||||
int count = 20;
|
||||
while (count > 0)
|
||||
{
|
||||
date = date.AddDays(1);
|
||||
var isWorkDay = await weekendDayService.IsWorkDayAsync(date, true);
|
||||
if (isWorkDay)
|
||||
break; // это рабочий день, выбираем его
|
||||
// // ищем следующий рабочий день, максимум 20 итераций, если за их кол-во не нашли рабочий, берём последний не рабочий
|
||||
// int count = 20;
|
||||
// while (count > 0)
|
||||
// {
|
||||
// date = date.AddDays(1);
|
||||
// var isWorkDay = await weekendDayService.IsWorkDayAsync(date, true);
|
||||
// if (isWorkDay)
|
||||
// break; // это рабочий день, выбираем его
|
||||
|
||||
count--;
|
||||
// count--;
|
||||
|
||||
if (!isWorkDay && count == 0)
|
||||
logger.LogWarning($"Не нашли рабочий день за 20 итераций, взяли последний нерабочий {date}");
|
||||
}
|
||||
// if (!isWorkDay && count == 0)
|
||||
// logger.LogWarning($"Не нашли рабочий день за 20 итераций, взяли последний нерабочий {date}");
|
||||
// }
|
||||
|
||||
// смотрим, если смещали из-за пояса МСК на день вперед, вычитаем этот день назад
|
||||
if (!DateResolver.IsCurrentDayRelativeMskTime(nextRun))
|
||||
date = date.AddDays(-1);
|
||||
// // смотрим, если смещали из-за пояса МСК на день вперед, вычитаем этот день назад
|
||||
// if (!DateResolver.IsCurrentDayRelativeMskTime(nextRun))
|
||||
// date = date.AddDays(-1);
|
||||
|
||||
// считаем новый NextRun
|
||||
var dayCount = date.DayNumber - DateOnly.FromDateTime(nextRun.Date).DayNumber;
|
||||
// // считаем новый NextRun
|
||||
// var dayCount = date.DayNumber - DateOnly.FromDateTime(nextRun.Date).DayNumber;
|
||||
|
||||
return nextRun.AddDays(dayCount);
|
||||
}
|
||||
// return nextRun.AddDays(dayCount);
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user