diff --git a/PARR.DAL/NextRunServices/NextRunService.cs b/PARR.DAL/NextRunServices/NextRunService.cs index 3411d468..3fef279b 100644 --- a/PARR.DAL/NextRunServices/NextRunService.cs +++ b/PARR.DAL/NextRunServices/NextRunService.cs @@ -309,13 +309,13 @@ namespace PARR.DAL.NextRunServices public async Task> GetWorkDaysAsync(DateOnly start, DateOnly end, bool excludeWeekends, DateTimeOffset referenceDate) { //return await templateDistributor.GetWorkDaysAsync(start, end, excludeWeekends); - return await templateDistributor.GetWorkDaysTESTAsync(start, end, excludeWeekends, referenceDate); + return await templateDistributor.GetWorkDaysV2Async(start, end, excludeWeekends, referenceDate); } public async Task> GetWeekendsAsync(DateOnly startDate, DateOnly endDate, DateTimeOffset referenceDate) { - return await templateDistributor.GetWeekendsTESTAsync(startDate, endDate, referenceDate); + return await templateDistributor.GetWeekendsV2Async(startDate, endDate, referenceDate); } } } diff --git a/PARR.DAL/NextRunServices/Subservices/ITemplateDistributor.cs b/PARR.DAL/NextRunServices/Subservices/ITemplateDistributor.cs index 345a1f3f..6126e040 100644 --- a/PARR.DAL/NextRunServices/Subservices/ITemplateDistributor.cs +++ b/PARR.DAL/NextRunServices/Subservices/ITemplateDistributor.cs @@ -2,8 +2,7 @@ namespace PARR.DAL.NextRunServices.Subservices { - //TODO: internal - public interface ITemplateDistributor + internal interface ITemplateDistributor { /// /// Распределяет все шаблоны на указанный период, учитывая план нагрузки. @@ -41,7 +40,17 @@ namespace PARR.DAL.NextRunServices.Subservices /// /// /// - Task> GetWeekendsTESTAsync(DateOnly startDate, DateOnly endDate, DateTimeOffset referenceDate); + Task> GetWeekendsV2Async(DateOnly startDate, DateOnly endDate, DateTimeOffset referenceDate); + + + ///// + ///// Получить список рабочих дней + ///// + ///// + ///// + ///// + ///// + //Task> GetWorkDaysAsync(DateOnly start, DateOnly end, bool excludeWeekends); /// @@ -50,12 +59,9 @@ namespace PARR.DAL.NextRunServices.Subservices /// /// /// + /// /// - Task> GetWorkDaysAsync(DateOnly start, DateOnly end, bool excludeWeekends); - - - - Task> GetWorkDaysTESTAsync(DateOnly start, DateOnly end, bool excludeWeekends, DateTimeOffset referenceDate); + Task> GetWorkDaysV2Async(DateOnly start, DateOnly end, bool excludeWeekends, DateTimeOffset referenceDate); } } diff --git a/PARR.DAL/NextRunServices/Subservices/TemplateDistributor.cs b/PARR.DAL/NextRunServices/Subservices/TemplateDistributor.cs index f7091667..e93c5dd9 100644 --- a/PARR.DAL/NextRunServices/Subservices/TemplateDistributor.cs +++ b/PARR.DAL/NextRunServices/Subservices/TemplateDistributor.cs @@ -39,7 +39,8 @@ namespace PARR.DAL.NextRunServices.Subservices logger.LogDebug("Получаю актуальный nextRun для шаблона {templateId}. Текущий nextRun: {nextRun}. Период {duration} дней, с {_startDate} по {_endDate}. Исключить выходные и праздники: {excludeWeekends}. Для нового шаблона: {isNew}", targetTemplate.Id, targetTemplate.NextRun, duration, _startDate, _endDate, excludeWeekends, isNew); // Получаем список рабочих дней (исключая выходные и праздники) - var workDays = await GetWorkDaysAsync(_startDate, _endDate, excludeWeekends); + //var workDays = await GetWorkDaysAsync(_startDate, _endDate, excludeWeekends); + var workDays = await GetWorkDaysV2Async(_startDate, _endDate, excludeWeekends, referenceDate); if (workDays.Count == 0) { @@ -109,7 +110,8 @@ namespace PARR.DAL.NextRunServices.Subservices logger.LogInformation("Начинаем распределение {Count} шаблонов на {duration} дней, с {_startDate} по {_endDate}. ReferenceDate: {referenceDate}. Исключить выходные и праздники: {excludeWeekends}.", allTemplates.Count, duration, _startDate, _endDate, referenceDate, excludeWeekends); // Получаем список рабочих дней (исключая выходные и праздники) - var workDays = await GetWorkDaysAsync(_startDate, _endDate, excludeWeekends); + //var workDays = await GetWorkDaysAsync(_startDate, _endDate, excludeWeekends); + var workDays = await GetWorkDaysV2Async(_startDate, _endDate, excludeWeekends, referenceDate); if (workDays.Count == 0) { @@ -539,22 +541,22 @@ namespace PARR.DAL.NextRunServices.Subservices } - /// - /// Получить список выходных дней - /// - /// - /// - /// - private async Task> GetWeekendsAsync(DateOnly startDate, DateOnly endDate) - { - var weekends = await weekendDayService.GetWeekends(startDate, endDate).ToListAsync(); + ///// + ///// Получить список выходных дней + ///// + ///// + ///// + ///// + //private async Task> GetWeekendsAsync(DateOnly startDate, DateOnly endDate) + //{ + // var weekends = await weekendDayService.GetWeekends(startDate, endDate).ToListAsync(); - logger.LogDebug("Найдено не рабочих дней: {Count}", weekends.Count); - foreach (var weekend in weekends) - logger.LogDebug("Не рабочий день: {weekend}", weekend); + // logger.LogDebug("Найдено не рабочих дней: {Count}", weekends.Count); + // foreach (var weekend in weekends) + // logger.LogDebug("Не рабочий день: {weekend}", weekend); - return weekends.ToHashSet(); - } + // return weekends.ToHashSet(); + //} /// @@ -563,7 +565,7 @@ namespace PARR.DAL.NextRunServices.Subservices /// /// /// - public async Task> GetWeekendsTESTAsync(DateOnly startDate, DateOnly endDate, DateTimeOffset referenceDate) + public async Task> GetWeekendsV2Async(DateOnly startDate, DateOnly endDate, DateTimeOffset referenceDate) { // проверяем это текущие или прошлые сутки относительно refDate, если надо, корректируем dateStart, dateEnd bool isPreviousDays = IsPreviousDays(referenceDate); @@ -607,42 +609,42 @@ namespace PARR.DAL.NextRunServices.Subservices } - /// - /// Возвращает список рабочих дней в диапазоне, исключая выходные и праздники. - /// - /// - /// - /// Исключить выходные и праздники - /// - public async Task> GetWorkDaysAsync(DateOnly start, DateOnly end, bool excludeWeekends) - { - // Получаем список выходных/праздничных дней - var weekends = new HashSet(); - if (excludeWeekends) - weekends = await GetWeekendsAsync(start, end); + ///// + ///// Возвращает список рабочих дней в диапазоне, исключая выходные и праздники. + ///// + ///// + ///// + ///// Исключить выходные и праздники + ///// + //public async Task> GetWorkDaysAsync(DateOnly start, DateOnly end, bool excludeWeekends) + //{ + // // Получаем список выходных/праздничных дней + // var weekends = new HashSet(); + // if (excludeWeekends) + // weekends = await GetWeekendsAsync(start, end); - var result = new List(); - var date = start; + // var result = new List(); + // var date = start; - while (date <= end) - { - var dayOfWeek = date.DayOfWeek; - if (!weekends.Contains(date)) - { - result.Add(date); - } - date = date.AddDays(1); - } + // while (date <= end) + // { + // var dayOfWeek = date.DayOfWeek; + // if (!weekends.Contains(date)) + // { + // result.Add(date); + // } + // date = date.AddDays(1); + // } - logger.LogDebug("Найдено рабочих дней: {Count}", result.Count); - foreach (var workDay in result) - logger.LogDebug("Рабочий день: {workDay}", workDay); + // logger.LogDebug("Найдено рабочих дней: {Count}", result.Count); + // foreach (var workDay in result) + // logger.LogDebug("Рабочий день: {workDay}", workDay); - return result; - } + // return result; + //} - public async Task> GetWorkDaysTESTAsync(DateOnly start, DateOnly end, bool excludeWeekends, DateTimeOffset referenceDate) + public async Task> GetWorkDaysV2Async(DateOnly start, DateOnly end, bool excludeWeekends, DateTimeOffset referenceDate) { logger.LogDebug("Формирование списка рабочих дней, start: {start}, end: {end}, excludeWeekends: {excludeWeekends}, referenceDate: {referenceDate}", start, end, excludeWeekends, referenceDate); @@ -659,7 +661,7 @@ namespace PARR.DAL.NextRunServices.Subservices // Получаем список выходных/праздничных дней var weekends = new HashSet(); if (excludeWeekends) - weekends = await GetWeekendsTESTAsync(start, end, referenceDate); + weekends = await GetWeekendsV2Async(start, end, referenceDate); var result = new List(); var date = start; diff --git a/PARR.Test/NextRun/NextRunTest.cs b/PARR.Test/NextRun/NextRunTest.cs index 971f5e4b..cbb596a2 100644 --- a/PARR.Test/NextRun/NextRunTest.cs +++ b/PARR.Test/NextRun/NextRunTest.cs @@ -6,12 +6,12 @@ namespace PARR.Test.NextRun { internal class NextRunTest { - private readonly ITemplateDistributor templateDistributor; + //private readonly ITemplateDistributor templateDistributor; private readonly INextRunService nextRunService; - public NextRunTest(ITemplateDistributor templateDistributor, INextRunService nextRunService) + public NextRunTest(/*ITemplateDistributor templateDistributor, */INextRunService nextRunService) { - this.templateDistributor = templateDistributor; + //this.templateDistributor = templateDistributor; this.nextRunService = nextRunService; } @@ -21,7 +21,7 @@ namespace PARR.Test.NextRun public async Task Test() { // GetWorkDaysTESTAsync - var aaa = await templateDistributor.GetWorkDaysTESTAsync(GetDateStart(), GetDateStart().AddDays(periodDays), true, referenceDate); + //var aaa = await templateDistributor.GetWorkDaysTESTAsync(GetDateStart(), GetDateStart().AddDays(periodDays), true, referenceDate); //await DistributeTemplatesAsync(); //await GetValidNextRunForTemplateAsync();