using PARR.DAL.Models.Job; using PARR.DAL.NextRunServices.Models; namespace PARR.DAL.NextRunServices { public interface INextRunService { /// /// Получить продолжительность распределения в днях /// /// /// int GetDurationDays(JobGroupDistributionConfig config); /// /// Получить список TemplateId, NextRun по jobGroupId с автораспределением (распределить шаблоны в группе работ) /// /// /// Task?> GetNextRunForJobGroupWithAutoDistributionAsync(Guid jobGroupId); ///// ///// Получить NextRun по jobGroupId с расписанием ЕСПП ///// ///// ///// //Task GetNextRunForJobGroupWithEsppSchedulleAsync(Guid jobGroupId); /// /// Получить nextRun для создаваемого шаблона, которого еще нет в БД /// /// /// НЕ МАСКА, а прям ЗО /// Task GetNextRunForNewTemplateAsync(Guid jobGroupId, string responseArea); /// /// Получить NextRun по id существующего шаблона /// /// /// Шаблон переведенный из unused /// Task GetNextRunForTemplateAsync(Guid templateId, bool isNew); /// /// Получить список рабочих дней /// /// /// /// /// Task> GetWorkDaysAsync(DateOnly start, DateOnly end, bool excludeWeekends, DateTimeOffset referenceDate); /// /// Получить список выходных дней /// /// /// /// /// Task> GetWeekendsAsync(DateOnly startDate, DateOnly endDate, DateTimeOffset referenceDate); /// /// Получить NextRun со смещением УЗ ЕСПП и если надо, выполнить смещение для ЗО /// /// /// Применить таймзону ЗО /// ЗО /// DateTimeOffset GetNextRunWithTimezoneEsppAndResponseArea(DateTimeOffset nextRun, bool? isResponseAreaTimezone = null, string? responseArea = null); /// /// Получить NextRun согласно таймзоны ЗО /// /// /// /// DateTimeOffset GetNextRunWithResponseAreaOffset(DateTimeOffset nextRun, string responseArea); } }