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> GetWeekendsV2Async(DateOnly startDate, DateOnly endDate, DateTimeOffset referenceDate);
/////
///// Получить список рабочих дней
/////
/////
/////
/////
/////
//Task> GetWorkDaysAsync(DateOnly start, DateOnly end, bool excludeWeekends);
///
/// Получить список рабочих дней
///
///
///
///
///
///
Task> GetWorkDaysV2Async(DateOnly start, DateOnly end, bool excludeWeekends, DateTimeOffset referenceDate);
}
}