namespace TMSDAL.DTO.TrainingProgramme { public class TrainingProgrammeDTO { public int ProgrammeId { get; set; } public string ProgrammeCode { get; set; } = string.Empty; public string ProgrammeTitle { get; set; } = string.Empty; public string? ShortDescription { get; set; } public string? FullDescription { get; set; } public int TrainingDomainId { get; set; } public string? DomainCode { get; set; } public string? DomainName { get; set; } public decimal PassMark { get; set; } public byte ProgrammeType { get; set; } public byte DeliveryMode { get; set; } public byte ComplexityLevel { get; set; } public byte DifficultyLevel { get; set; } public byte ProviderType { get; set; } public byte ProgrammeLevel { get; set; } public decimal DurationHours { get; set; } public byte IsRefresher { get; set; } public byte HasAssessment { get; set; } public byte HasPreAssessment { get; set; } public byte CertOnComplete { get; set; } public int CertValidityDays { get; set; } public int RenewalWindowDays { get; set; } public int MinCapacity { get; set; } public int MaxCapacity { get; set; } public decimal CostPerParticipant { get; set; } public string? LearningObjectives { get; set; } public string? TargetAudience { get; set; } public string? Prerequisites { get; set; } public string ProgrammeVersionNo { get; set; } = "1.0"; // Optional caller-supplied "what changed" note for this save — consumed only by the // revision-snapshot audit trail (TTRAININGPROGRAMMEREVISION), never persisted on this row. public string? RevisionRemarks { get; set; } public byte IsActive { get; set; } public short Version { get; set; } public byte Status { get; set; } public short SortOrder { get; set; } public byte SourceType { get; set; } public int TenantId { get; set; } public int CreatedById { get; set; } public DateTime CreatedOn { get; set; } public int ModifiedById { get; set; } public DateTime ModifiedOn { get; set; } public List? Sessions { get; set; } public List? ProgrammePrerequisites { get; set; } public List? SkillMaps { get; set; } public List? CompetencyMaps { get; set; } } public class ProgrammeSessionDTO { public int ProgrammeSessionId { get; set; } public int ProgrammeId { get; set; } public string ProgrammeCode { get; set; } = string.Empty; public string ProgrammeTitle { get; set; } = string.Empty; public int SlNo { get; set; } public string SessionCode { get; set; } = string.Empty; public string SessionTitle { get; set; } = string.Empty; public byte SessionType { get; set; } public short SessionDelivMode { get; set; } public decimal DurationHours { get; set; } public byte IsOptional { get; set; } public byte IsMandatoryForCert { get; set; } public byte IsAssessmentRequired { get; set; } // ✅ ADDED public short MinAttendancePct { get; set; } public string? DeliveryNote { get; set; } public string? DojoStationRef { get; set; } public byte IsActive { get; set; } public int TenantId { get; set; } // ✅ ADDED public List? Topics { get; set; } } public class SessionTopicDTO { public int SessionTopicId { get; set; } public int ProgrammeSessionId { get; set; } public string SessionCode { get; set; } = string.Empty; public string SessionTitle { get; set; } = string.Empty; public int ProgrammeId { get; set; } public string ProgrammeCode { get; set; } = string.Empty; public string ProgrammeTitle { get; set; } = string.Empty; public int SlNo { get; set; } public string TopicCode { get; set; } = string.Empty; public string TopicTitle { get; set; } = string.Empty; public byte TopicType { get; set; } public decimal DurationHours { get; set; } // ✅ FIXED TYPE public byte IsOptional { get; set; } public string? ContentSummary { get; set; } public int LmsContentId { get; set; } public int LmsCourseId { get; set; } public byte IsActive { get; set; } public int TenantId { get; set; } public int CreatedById { get; set; } public int ModifiedById { get; set; } } public class ProgrammePrerequisiteDTO { public int ProgrammePrereqId { get; set; } public int ProgrammeId { get; set; } public string ProgrammeCode { get; set; } = string.Empty; public string ProgrammeTitle { get; set; } = string.Empty; public string? ProgrammePrereqCode { get; set; } public string? ProgrammePrereqName { get; set; } public int PrereqProgrammeId { get; set; } = -1; public string? PrereqProgrammeCode { get; set; } public string? PrereqProgrammeName { get; set; } public int PrereqSkillId { get; set; } = -1; public string? PrereqSkillCode { get; set; } public string? PrereqSkillName { get; set; } public short PrereqMinLevelNo { get; set; } = 1; public byte IsHard { get; set; } = 1; public string? Remarks { get; set; } } public class ProgrammeSkillMapDTO { public int ProgrammeSkillMapId { get; set; } public int ProgrammeId { get; set; } public string ProgrammeCode { get; set; } = string.Empty; public string ProgrammeTitle { get; set; } = string.Empty; public string? ProgrammeSkillMapCode { get; set; } public string? ProgrammeSkillMapName { get; set; } public int ProgrammeSessionId { get; set; } = -1; public string SessionCode { get; set; } = string.Empty; public string SessionTitle { get; set; } = string.Empty; public int SkillId { get; set; } public string SkillCode { get; set; } = string.Empty; public string SkillName { get; set; } = string.Empty; public int ProductFamilyId { get; set; } = -1; public string ProductFamilyCode { get; set; } = string.Empty; public string ProductFamilyName { get; set; } = string.Empty; public int ModelId { get; set; } = -1; public string ModelCode { get; set; } = string.Empty; public string ModelName { get; set; } = string.Empty; public short QualifiesForLevelNo { get; set; } = 1; public byte IsAutoPropose { get; set; } = 1; public byte RequiresPassedAssess { get; set; } = 1; // -1 = not scoped to a specific assessment (whole-programme mapping); otherwise scopes // this grant to a specific MSESSIONASSESSMENT — resolved by TxSkillUpgradeBLL, preferring // an assessment-specific row over a whole-programme row for the same SkillId. public int AssessmentId { get; set; } = -1; public string? Remarks { get; set; } } public class ProgrammeCompetencyMapDTO { public int ProgCompetencyMapId { get; set; } public int ProgrammeId { get; set; } public string ProgrammeCode { get; set; } = string.Empty; public string ProgrammeTitle { get; set; } = string.Empty; public int ProgrammeSessionId { get; set; } = -1; public string SessionCode { get; set; } = string.Empty; public string SessionTitle { get; set; } = string.Empty; public int CompetencyId { get; set; } public string CompetencyCode { get; set; } = string.Empty; public string CompetencyName { get; set; } = string.Empty; public short ContributesToLevelNo { get; set; } = 1; public decimal CreditWeight { get; set; } = 0; public byte IsDirectEvidence { get; set; } = 1; public string? Remarks { get; set; } } public class TrainingProgrammePicklistDTO { public int ProgrammeId { get; set; } public string ProgrammeCode { get; set; } = string.Empty; public string ProgrammeTitle { get; set; } = string.Empty; public byte ProgrammeType { get; set; } public byte DeliveryMode { get; set; } public byte ComplexityLevel { get; set; } public string ProgrammeVersionNo { get; set; } = "1.0"; public string? DomainCode { get; set; } public string? DomainName { get; set; } public decimal DurationHours { get; set; } public byte IsActive { get; set; } public DateTime CreatedOn { get; set; } } }