using PARR.Core.Services.NextRunServices.Models; using PARR.Domain.Entities.Job; using PARR.Domain.Enums; namespace PARR.Core.Services.NextRunServices { public interface INextRunService { /// /// Распределить шаблоны в группе работ (получить список распределенных шаблонов с актуальными nextRun) /// /// ИД группы работ /// Статус шаблона, если не передать, берутся все шаблоны группы /// Список TemplateId с NextRun и NextRunOld Task?> GetNextRunForJobGroupWithAutoDistributionAsync(Guid jobGroupId, TemplateStatusTypeEnum? templateStatusType); /// /// Получить nextRun для вновь создаваемого шаблона, которого еще нет в БД /// /// ИД группы работ /// Рабочая группа, не маска /// Зона ответственности, не маска /// NextRun или null, если null - то ошибка Task GetNextRunForNewTemplateAsync(Guid jobGroupId, string workGroupName, string responseAreaName); /// /// Получить nextRun по id существующего в БД шаблона /// /// ИД шаблона /// При перемещении шаблона в новую для него работу, ставить isNew=true /// NextRun или null, если null - то ошибка Task GetNextRunForTemplateAsync(Guid templateId, bool isNew); /// /// Получить часовой пояс УЗ ЕСПП /// /// TimeSpan GetEsppAccountOffset(); /// /// Получить продолжительность в днях /// /// /// int GetDurationDays(JobGroupDistributionConfig config); /// /// Получить список рабочих дней в диапазоне, исключая выходные и праздники. /// /// /// /// Исключить выходные и праздники /// Task> GetWorkDaysAsync(DateOnly start, DateOnly end, bool excludeWeekends); /// /// Получить список выходных дней /// /// /// /// Task> GetWeekendsAsync(DateOnly startDate, DateOnly endDate); } }