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);
}
}