diff --git a/PARR.DAL/NextRunServices/Subservices/ITemplateDistributor.cs b/PARR.DAL/NextRunServices/Subservices/ITemplateDistributor.cs
index 7c04ff58..0936d6a9 100644
--- a/PARR.DAL/NextRunServices/Subservices/ITemplateDistributor.cs
+++ b/PARR.DAL/NextRunServices/Subservices/ITemplateDistributor.cs
@@ -13,13 +13,14 @@ namespace PARR.DAL.NextRunServices.Subservices
/// Длительность распределения, дней
/// ReferenceDate
/// Спиоск шаблонов для распределения
+ /// Исключать выходные из распределения
///
- Task> DistributeTemplatesAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, List allTemplates);
+ Task> DistributeTemplatesAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, List allTemplates, bool excludeWeekends);
///
/// Возвращает актуальную дату выполнения для одного шаблона, учитывая план нагрузки.
/// Возвращает обновлённый шаблон с новой датой выполнения.
///
- Task GetValidNextRunForTemplateAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, TemplateNextRunDto targetTemplate, List allTemplates);
+ Task GetValidNextRunForTemplateAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, TemplateNextRunDto targetTemplate, List allTemplates, bool excludeWeekends);
}
}
diff --git a/PARR.DAL/NextRunServices/Subservices/TemplateDistributor.cs b/PARR.DAL/NextRunServices/Subservices/TemplateDistributor.cs
index 21c431d3..bbcf2c4b 100644
--- a/PARR.DAL/NextRunServices/Subservices/TemplateDistributor.cs
+++ b/PARR.DAL/NextRunServices/Subservices/TemplateDistributor.cs
@@ -25,7 +25,7 @@ namespace PARR.DAL.NextRunServices.Subservices
}
- public Task GetValidNextRunForTemplateAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, TemplateNextRunDto targetTemplate, List allTemplates)
+ public Task GetValidNextRunForTemplateAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, TemplateNextRunDto targetTemplate, List allTemplates, bool excludeWeekends)
{
//TODO:
throw new NotImplementedException();
@@ -35,7 +35,7 @@ namespace PARR.DAL.NextRunServices.Subservices
- public async Task> DistributeTemplatesAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, List allTemplates)
+ public async Task> DistributeTemplatesAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, List allTemplates, bool excludeWeekends)
{
var _startDate = GetStartPeriodDate(startDate, referenceDate);
var _endDate = GetEndPeriodDate(_startDate, duration);
@@ -43,11 +43,15 @@ namespace PARR.DAL.NextRunServices.Subservices
logger.LogInformation("Начинаем распределение {Count} шаблонов на {duration} дней, с {_startDate} по {_endDate}. ReferenceDate: {referenceDate}", allTemplates.Count, duration, _startDate, _endDate, referenceDate);
// Получаем список выходных/праздничных дней
- var weekends = await GetWeekendsAsync(_startDate, _endDate);
- logger.LogDebug("Найдено не рабочих дней: {Count}", weekends.Count);
+ var weekends = new HashSet();
+ if (excludeWeekends)
+ {
+ weekends = await GetWeekendsAsync(_startDate, _endDate);
+ logger.LogDebug("Найдено не рабочих дней: {Count}", weekends.Count);
- foreach (var weekend in weekends)
- logger.LogDebug("Не рабочий день: {weekend}", weekend);
+ foreach (var weekend in weekends)
+ logger.LogDebug("Не рабочий день: {weekend}", weekend);
+ }
// Получаем список рабочих дней (исключая выходные и праздники)
var workDays = GetWorkDays(_startDate, _endDate, weekends);
diff --git a/PARR.Test/NextRun/NextRunTest.cs b/PARR.Test/NextRun/NextRunTest.cs
index 4e431db9..5791f4a2 100644
--- a/PARR.Test/NextRun/NextRunTest.cs
+++ b/PARR.Test/NextRun/NextRunTest.cs
@@ -12,7 +12,7 @@ namespace PARR.Test.NextRun
this.templateDistributor = templateDistributor;
}
- int periodDays = 5;
+ int periodDays = 10;
DateTimeOffset referenceDate = new DateTimeOffset(2025, 12, 1, 7, 0, 0, TimeSpan.Zero);
public async Task Test()
@@ -25,7 +25,10 @@ namespace PARR.Test.NextRun
///
private async Task DistributeTemplatesAsync()
{
- var templates = await templateDistributor.DistributeTemplatesAsync(GetDateStart(), periodDays, referenceDate, GetTemplates());
+ // исключать выходные и праздники
+ var excludeWeekends = true;
+
+ var templates = await templateDistributor.DistributeTemplatesAsync(GetDateStart(), periodDays, referenceDate, GetTemplates(), excludeWeekends);
//await GetValidNextRunForTemplateAsync(templates);
}