namespace JobEngineDAL.DTOs { public class JobExecutionDTO { public long ExecutionId { get; set; } public int? JobId { get; set; } public int TenantId { get; set; } public string JobName { get; set; } = ""; public string TriggerType { get; set; } = ""; // SCHEDULED|MANUAL|QUEUE|API public DateTime? ScheduledFor { get; set; } public DateTime? StartedAt { get; set; } public DateTime? CompletedAt { get; set; } public long? DurationMs { get; set; } public string Status { get; set; } = ""; // QUEUED|RUNNING|SUCCESS|FAILED|TIMEOUT|CANCELLED public int RetryAttempt { get; set; } public string? CorrelationId { get; set; } public string? HostInstance { get; set; } public string? ErrorDetails { get; set; } public string? ResultJson { get; set; } public DateTime CreatedDate { get; set; } } public class JobDashboardDTO { public int RunningCount { get; set; } public int ScheduledNext24h { get; set; } public int PendingQueueCount { get; set; } public int DlqCount { get; set; } public int FailedCount7Days { get; set; } public int SuccessCount7Days { get; set; } public double SuccessRate7Days { get; set; } public List RunningJobs { get; set; } = []; public List UpcomingJobs { get; set; } = []; public List QueueStats { get; set; } = []; public List AvgDurations { get; set; } = []; } public class QueueStatDTO { public string MessageType { get; set; } = ""; public int Pending { get; set; } public int Processing { get; set; } public int Dlq { get; set; } public int Failed { get; set; } } public class JobAvgDurationDTO { public string JobName { get; set; } = ""; public double AvgDurationMs { get; set; } public int RunCount { get; set; } } }