2026-01-26 14:29:47 +10:00
|
|
|
|
using PARR.DAL.Models.Job;
|
|
|
|
|
|
using PARR.DAL.NextRunServices.Models;
|
2026-01-21 12:19:27 +10:00
|
|
|
|
|
|
|
|
|
|
namespace PARR.DAL.NextRunServices
|
2025-12-22 17:03:41 +10:00
|
|
|
|
{
|
|
|
|
|
|
public interface INextRunService
|
|
|
|
|
|
{
|
2026-01-26 14:29:47 +10:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Получить продолжительность распределения в днях
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="config"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
int GetDurationDays(JobGroupDistributionConfig config);
|
|
|
|
|
|
|
2025-12-22 17:03:41 +10:00
|
|
|
|
/// <summary>
|
2026-01-23 09:28:14 +10:00
|
|
|
|
/// Получить список TemplateId, NextRun по jobGroupId с автораспределением (распределить шаблоны в группе работ)
|
2025-12-22 17:03:41 +10:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="jobGroupId"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2026-01-21 12:19:27 +10:00
|
|
|
|
Task<List<TemplateNextRunResultDto>?> GetNextRunForJobGroupWithAutoDistributionAsync(Guid jobGroupId);
|
2025-12-22 17:03:41 +10:00
|
|
|
|
|
|
|
|
|
|
|
2026-01-23 09:28:14 +10:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Получить NextRun по jobGroupId с расписанием ЕСПП
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="jobGroupId"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
Task<DateTimeOffset> GetNextRunForJobGroupWithEsppSchedulleAsync(Guid jobGroupId);
|
2026-01-21 15:36:54 +10:00
|
|
|
|
|
|
|
|
|
|
|
2025-12-22 17:03:41 +10:00
|
|
|
|
/// <summary>
|
2026-01-21 15:36:54 +10:00
|
|
|
|
/// Получить nextRun для создаваемого шаблона, которого еще нет в БД
|
2025-12-22 17:03:41 +10:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="jobGroupId"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2026-01-21 15:36:54 +10:00
|
|
|
|
Task<DateTimeOffset> GetNextRunForNewTemplateAsync(Guid jobGroupId);
|
2025-12-22 17:03:41 +10:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2026-01-21 15:36:54 +10:00
|
|
|
|
/// Получить NextRun по id существующего шаблона
|
2025-12-22 17:03:41 +10:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="templateId"></param>
|
2026-01-21 15:36:54 +10:00
|
|
|
|
/// <param name="isNew">Шаблон переведенный из unused</param>
|
2025-12-22 17:03:41 +10:00
|
|
|
|
/// <returns></returns>
|
2026-01-21 15:36:54 +10:00
|
|
|
|
Task<DateTimeOffset> GetNextRunForTemplateAsync(Guid templateId, bool isNew);
|
2025-12-22 17:03:41 +10:00
|
|
|
|
|
2026-01-26 14:29:47 +10:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Получить список рабочих дней
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="start"></param>
|
|
|
|
|
|
/// <param name="end"></param>
|
|
|
|
|
|
/// <param name="excludeWeekends"></param>
|
|
|
|
|
|
/// <returns></returns>
|
2026-01-28 14:40:40 +10:00
|
|
|
|
Task<List<DateOnly>> GetWorkDaysAsync(DateOnly start, DateOnly end, bool excludeWeekends, DateTimeOffset referenceDate);
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Получить список выходных дней
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="startDate"></param>
|
|
|
|
|
|
/// <param name="endDate"></param>
|
|
|
|
|
|
/// <param name="referenceDate"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
Task<HashSet<DateOnly>> GetWeekendsAsync(DateOnly startDate, DateOnly endDate, DateTimeOffset referenceDate);
|
2026-01-26 14:29:47 +10:00
|
|
|
|
|
2025-12-22 17:03:41 +10:00
|
|
|
|
}
|
|
|
|
|
|
}
|