using PARR.DAL.NextRunServices.Models;
namespace PARR.DAL.NextRunServices.Subservices
{
internal interface ITemplateDistributor
{
///
/// Распределяет все шаблоны на указанный период, учитывая план нагрузки.
/// Возвращает список всех шаблонов с обновлёнными датами выполнения.
///
/// Дата начала распределения
/// Длительность распределения, дней
/// ReferenceDate
/// Спиоск шаблонов для распределения
/// Исключать выходные из распределения
///
Task> DistributeTemplatesAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, List allTemplates, bool excludeWeekends);
///
/// Возвращает актуальную дату выполнения для одного шаблона, учитывая план нагрузки.
/// Возвращает обновлённый шаблон с новой датой выполнения.
///
///
///
///
///
///
///
/// Новый шаблон
///
Task GetValidNextRunForTemplateAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, TemplateNextRunDto targetTemplate, List allTemplates, bool excludeWeekends, bool isNew);
///
/// Получить список рабочих дней
///
///
///
///
///
Task> GetWorkDaysAsync(DateOnly start, DateOnly end, bool excludeWeekends);
}
}