68 lines
3.3 KiB
C#
68 lines
3.3 KiB
C#
using PARR.DAL.NextRunServices.Models;
|
||
|
||
namespace PARR.DAL.NextRunServices.Subservices
|
||
{
|
||
internal interface ITemplateDistributor
|
||
{
|
||
/// <summary>
|
||
/// Распределяет все шаблоны на указанный период, учитывая план нагрузки.
|
||
/// Возвращает список всех шаблонов с обновлёнными датами выполнения.
|
||
/// </summary>
|
||
/// <param name="startDate">Дата начала распределения</param>
|
||
/// <param name="duration">Длительность распределения, дней</param>
|
||
/// <param name="referenceDate">ReferenceDate</param>
|
||
/// <param name="allTemplates">Спиоск шаблонов для распределения</param>
|
||
/// <param name="excludeWeekends">Исключать выходные из распределения</param>
|
||
/// <returns></returns>
|
||
Task<List<TemplateNextRunResultDto>> DistributeTemplatesAsync(DateOnly startDate, int duration, DateTimeOffset referenceDate, List<TemplateNextRunDto> allTemplates, bool excludeWeekends);
|
||
|
||
|
||
|
||
/// <summary>
|
||
/// Возвращает актуальную дату выполнения для одного шаблона, учитывая план нагрузки.
|
||
/// Возвращает обновлённый шаблон с новой датой выполнения.
|
||
/// </summary>
|
||
/// <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);
|
||
|
||
|
||
/// <summary>
|
||
/// Получить список выходных дней
|
||
/// </summary>
|
||
/// <param name="startDate"></param>
|
||
/// <param name="endDate"></param>
|
||
/// <param name="referenceDate"></param>
|
||
/// <returns></returns>
|
||
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);
|
||
|
||
|
||
/// <summary>
|
||
/// Получить список рабочих дней
|
||
/// </summary>
|
||
/// <param name="start"></param>
|
||
/// <param name="end"></param>
|
||
/// <param name="excludeWeekends"></param>
|
||
/// <param name="referenceDate"></param>
|
||
/// <returns></returns>
|
||
Task<List<DateOnly>> GetWorkDaysV2Async(DateOnly start, DateOnly end, bool excludeWeekends, DateTimeOffset referenceDate);
|
||
}
|
||
}
|
||
|