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>
2026-03-05 10:19:54 +10:00
/// Распределить шаблоны
2025-12-25 12:07:53 +10:00
/// </summary>
2026-03-05 10:19:54 +10:00
/// <param name="startDate">Дата начала, в любом часовом поясе</param>
/// <param name="duration"></param>
/// <param name="referenceDate"></param>
/// <param name="offset"></param>
/// <param name="allTemplates"></param>
/// <param name="excludeWeekends"></param>
2025-12-25 12:07:53 +10:00
/// <returns></returns>
2026-03-05 10:19:54 +10:00
Task < List < TemplateNextRunResultDto > > DistributeTemplatesAsync ( DateOnly startDate , int duration , DateTimeOffset referenceDate , TimeSpan ? offset , List < TemplateNextRunDto > allTemplates , bool excludeWeekends ) ;
2026-01-20 15:04:36 +10:00
2025-12-25 12:07:53 +10:00
/// <summary>
2026-03-05 10:19:54 +10:00
/// Метод проверяет, актуален ли текущий NextRun шаблона, если не актуален, возвращает актуальное значение
/// При проверке загружаются шаблоны из БД! Если хотим рассчитывать nextRun для НЕСКОЛЬКИХ шаблонов, то следует рассчитать nextRun для одного шаблона, сохранить в БД, затем рассчитать для следующего
2025-12-25 12:07:53 +10:00
/// </summary>
2026-03-05 10:19:54 +10:00
/// <param name="startDate">Дата начала, в любом часовом поясе</param>
2026-01-20 15:04:36 +10:00
/// <param name="duration"></param>
/// <param name="referenceDate"></param>
2026-03-05 10:19:54 +10:00
/// <param name="offset"></param>
2026-01-20 15:04:36 +10:00
/// <param name="targetTemplate"></param>
/// <param name="allTemplates"></param>
/// <param name="excludeWeekends"></param>
2026-03-05 10:19:54 +10:00
/// <param name="isNew"></param>
2026-01-20 15:04:36 +10:00
/// <returns></returns>
2026-03-05 10:19:54 +10:00
Task < TemplateNextRunResultDto > GetNextRunForTemplateAsync ( DateOnly startDate , int duration , DateTimeOffset referenceDate , TimeSpan ? offset , 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>
/// <returns></returns>
2026-03-05 10:19:54 +10:00
Task < HashSet < DateOnly > > GetWeekendsAsync ( DateOnly startDate , DateOnly endDate ) ;
2026-01-26 14:29:47 +10:00
/// <summary>
2026-03-05 10:19:54 +10:00
/// Получить список рабочих дней в диапазоне, исключая выходные и праздники.
2026-01-26 14:29:47 +10:00
/// </summary>
/// <param name="start"></param>
/// <param name="end"></param>
2026-03-05 10:19:54 +10:00
/// <param name="excludeWeekends">Исключить выходные и праздники</param>
2026-01-26 14:29:47 +10:00
/// <returns></returns>
2026-03-05 10:19:54 +10:00
Task < List < DateOnly > > GetWorkDaysAsync ( DateOnly start , DateOnly end , bool excludeWeekends ) ;
2025-12-22 17:03:41 +10:00
}
}