namespace IWS5.Core.DTO.IAdmin.Schedules;

public class ScheduleDetailsDTO(
    int scheduleId,
    string name,
    string serverHost,
    string? description,
    bool enabled,
    int priority,
    bool waitForCompletion,
    string scheduleType,
    int scheduleTypeId,
    string status,
    DateTime? lastRun,
    DateTime? nextRun,
    string? lastRunStatus,
    List<ScheduleTaskDTO> tasks,
    string? recurrenceExpression,
    DateTime? startTime,
    DateTime? expireTime,
    DateTime createdAt,
    DateTime updatedAt
)
{
    public int ScheduleId { get; private set; } = scheduleId;
    public string Name { get; private set; } = name;
    public string ServerHost { get; private set; } = serverHost;
    public string? Description { get; private set; } = description;
    public bool Enabled { get; private set; } = enabled;
    public int Priority { get; private set; } = priority;
    public bool WaitForCompletion { get; private set; } = waitForCompletion;
    public string ScheduleType { get; private set; } = scheduleType;
    public int ScheduleTypeId { get; private set; } = scheduleTypeId;
    public string Status { get; private set; } = status;
    public DateTime? LastRun { get; private set; } = lastRun;
    public DateTime? NextRun { get; private set; } = nextRun;
    public string? LastRunStatus { get; private set; } = lastRunStatus;
    public List<ScheduleTaskDTO> Tasks { get; private set; } = tasks;
    public string? RecurrenceExpression { get; set; } = recurrenceExpression;
    public DateTime? StartTime { get; set; } = startTime;
    public DateTime? ExpireTime { get; set; } = expireTime;
    public DateTime CreatedAt { get; set; } = createdAt;
    public DateTime UpdatedAt { get; set; } = updatedAt;
}
