using System; namespace FrameworkDAL.DTO.Scheduler { /// /// Job Definition DTO /// ------------------ /// ✔ Maps directly to MJOBDEFINE + TSCHEDULER /// ✔ Supports SQL alias compatibility /// ✔ Does NOT persist NextRunTime /// ✔ NextRunTime is computed dynamically in BLL /// public class JobDefineDTO { // ------------------------------------------------- // Primary identifiers (DB-backed) // ------------------------------------------------- public int JobDefineId { get; set; } public string JobDefineJobName { get; set; } = string.Empty; public int JobDefineSchedulerId { get; set; } public int JobDefineWebServiceId { get; set; } public int JobDefineCriteriaConfigId { get; set; } // ------------------------------------------------- // Runtime tracking (DB-backed) // ------------------------------------------------- public DateTime? JobDefineLastRunTime { get; set; } // ------------------------------------------------- // Tenant / priority / status (DB-backed) // ------------------------------------------------- public int BaseTenantId { get; set; } public int Priority { get; set; } public int Status { get; set; } // ------------------------------------------------- // Scheduler configuration (DB-backed) // ------------------------------------------------- public string CronExpression { get; set; } = string.Empty; public short EveryNoOfHours { get; set; } public short EveryNoOfMinutes { get; set; } /// /// Single daily execution time (HH:mm or HH:mm:ss) /// public string OccursAtTime { get; set; } = string.Empty; /// /// Multiple execution times (comma-separated) /// public string OccursAtMultipleTime { get; set; } = string.Empty; // ------------------------------------------------- // ⚠️ COMPUTED – NOT DB-BACKED // ------------------------------------------------- /// /// Computed dynamically in BLL (Cron / Interval / Time-based) /// MUST NOT be persisted or relied on from DB /// public DateTime? NextRunTime { get; set; } /// /// Optional derived value for interval schedulers /// public int IntervalInSeconds => (EveryNoOfHours * 3600) + (EveryNoOfMinutes * 60); // ------------------------------------------------- // SQL alias compatibility for BLL (GB5 STANDARD) // ------------------------------------------------- public int JobId { get => JobDefineId; set => JobDefineId = value; } public int TenantId { get => BaseTenantId; set => BaseTenantId = value; } public string JobName { get => JobDefineJobName; set => JobDefineJobName = value; } public int WebServiceId { get => JobDefineWebServiceId; set => JobDefineWebServiceId = value; } public int SchedulerId { get => JobDefineSchedulerId; set => JobDefineSchedulerId = value; } public int CriteriaConfigId { get => JobDefineCriteriaConfigId; set => JobDefineCriteriaConfigId = value; } public DateTime? LastRunOn { get => JobDefineLastRunTime; set => JobDefineLastRunTime = value; } } }