2025-12-25 12:07:53 +10:00
|
|
|
|
using PARR.DAL.NextRunServices.Models;
|
2025-12-22 17:03:41 +10:00
|
|
|
|
|
|
|
|
|
|
namespace PARR.DAL.NextRunServices.Subservices
|
|
|
|
|
|
{
|
2026-01-28 16:19:19 +10:00
|
|
|
|
internal interface ITemplateDistributor
|
2025-12-22 17:03:41 +10:00
|
|
|
|
{
|
2025-12-25 12:07:53 +10:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Распределяет все шаблоны на указанный период, учитывая план нагрузки.
|
|
|
|
|
|
/// Возвращает список всех шаблонов с обновлёнными датами выполнения.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="startDate">Дата начала распределения</param>
|
|
|
|
|
|
/// <param name="duration">Длительность распределения, дней</param>
|
|
|
|
|
|
/// <param name="referenceDate">ReferenceDate</param>
|
|
|
|
|
|
/// <param name="allTemplates">Спиоск шаблонов для распределения</param>
|
2026-01-19 16:33:11 +10:00
|
|
|
|
/// <param name="excludeWeekends">Исключать выходные из распределения</param>
|
2025-12-25 12:07:53 +10:00
|
|
|
|
/// <returns></returns>
|
2026-01-19 16:33:11 +10:00
|
|
|
|
Task<List<TemplateNextRunResultDto>> DistributeTemplatesAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, List<TemplateNextRunDto> allTemplates, bool excludeWeekends);
|
2025-12-22 17:03:41 +10:00
|
|
|
|
|
2026-01-20 15:04:36 +10:00
|
|
|
|
|
|
|
|
|
|
|
2025-12-25 12:07:53 +10:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Возвращает актуальную дату выполнения для одного шаблона, учитывая план нагрузки.
|
|
|
|
|
|
/// Возвращает обновлённый шаблон с новой датой выполнения.
|
|
|
|
|
|
/// </summary>
|
2026-01-20 15:04:36 +10:00
|
|
|
|
/// <param name="startDate"></param>
|
|
|
|
|
|
/// <param name="duration"></param>
|
|
|
|
|
|
/// <param name="referenceDate"></param>
|
|
|
|
|
|
/// <param name="targetTemplate"></param>
|
|
|
|
|
|
/// <param name="allTemplates"></param>
|
|
|
|
|
|
/// <param name="excludeWeekends"></param>
|
|
|
|
|
|
/// <param name="isNew">Новый шаблон</param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
Task<TemplateNextRunResultDto> GetValidNextRunForTemplateAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, TemplateNextRunDto targetTemplate, List<TemplateNextRunDto> allTemplates, bool excludeWeekends, bool isNew);
|
2026-01-28 14:40:40 +10:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Получить список выходных дней
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="startDate"></param>
|
|
|
|
|
|
/// <param name="endDate"></param>
|
|
|
|
|
|
/// <param name="referenceDate"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2026-01-28 16:19:19 +10:00
|
|
|
|
Task<HashSet<DateOnly>> GetWeekendsV2Async(DateOnly startDate, DateOnly endDate, DateTimeOffset referenceDate);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
///// <summary>
|
|
|
|
|
|
///// Получить список рабочих дней
|
|
|
|
|
|
///// </summary>
|
|
|
|
|
|
///// <param name="start"></param>
|
|
|
|
|
|
///// <param name="end"></param>
|
|
|
|
|
|
///// <param name="excludeWeekends"></param>
|
|
|
|
|
|
///// <returns></returns>
|
|
|
|
|
|
//Task<List<DateOnly>> GetWorkDaysAsync(DateOnly start, DateOnly end, bool excludeWeekends);
|
2026-01-26 14:29:47 +10:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Получить список рабочих дней
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="start"></param>
|
|
|
|
|
|
/// <param name="end"></param>
|
|
|
|
|
|
/// <param name="excludeWeekends"></param>
|
2026-01-28 16:19:19 +10:00
|
|
|
|
/// <param name="referenceDate"></param>
|
2026-01-26 14:29:47 +10:00
|
|
|
|
/// <returns></returns>
|
2026-01-28 16:19:19 +10:00
|
|
|
|
Task<List<DateOnly>> GetWorkDaysV2Async(DateOnly start, DateOnly end, bool excludeWeekends, DateTimeOffset referenceDate);
|
2025-12-22 17:03:41 +10:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-01-20 15:04:36 +10:00
|
|
|
|
|