using PARR.Constants;
using PARR.DAL.Models.Job;
using PARR.DAL.NextRunServices.Models;
namespace PARR.DAL.NextRunServices
{
public interface INextRunServiceV2
{
///
/// Распределить шаблоны в группе работ (получить список распределенных шаблонов с актуальными 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);
}
}