// ============================================================ // GoodBooks ERP — Skill Management Module // DTO : SkillLevelDTO // Table : MSKILLLEVEL (S4) // Parent : MSKILL (S3) // // Purpose : // Represents individual proficiency levels // associated with a Skill Master. // // Relationship : // One Skill -> Multiple Skill Levels // // Notes : // • MSKILLLEVEL is a PURE CHILD TABLE. // // • This table intentionally contains ONLY // business columns. // // • NO standard audit columns exist: // - TENANTID // - STATUS // - VERSION // - SORTORDER // - CREATEDBYID // - CREATEDON // - MODIFIEDBYID // - MODIFIEDON // - SOURCETYPE // // • Parent table MSKILL manages lifecycle, // auditing, tenant scoping, and status. // // • Tenant filtering must happen through // parent table joins. // // Example: // JOIN MSKILL S // ON S.SKILLID = MSKILLLEVEL.SKILLID // WHERE S.TENANTID = @TenantId // // Updated : Schema v1.0 // ============================================================ namespace SkillManagementDAL.DTO.SkillLevel { public class SkillLevelDTO { // ======================================================== // PRIMARY KEY // ======================================================== // MSKILLLEVEL.SLEVELID // Primary key of Skill Level table public int SLevelId { get; set; } // ======================================================== // BUSINESS COLUMNS — MSKILLLEVEL // ======================================================== // MSKILLLEVEL.SKILLID // FK -> MSKILL.SKILLID // // Parent Skill Master reference public int SkillId { get; set; } // MSKILLLEVEL.SLNO // // Sequential proficiency level number // // Example: // 1 = Beginner // 2 = Intermediate // 3 = Advanced // 4 = Expert // // UNIQUE: // UK_MSKILLLEVEL_SKILLID_SLNO // // Unique per Skill public short SlNo { get; set; } // MSKILLLEVEL.LEVELLABEL // // Short label displayed in UI/matrix // // Examples: // "Awareness" // "Foundation" // "Practitioner" // "Expert" public string LevelLabel { get; set; } = string.Empty; // MSKILLLEVEL.LEVELCOUNT // // Numeric value/count associated // with the individual level // // Example: // Level 1 -> 2 // Level 2 -> 3 // // NOTE: // This is DIFFERENT from: // MSKILL.LEVELCOUNT // // Parent LEVELCOUNT: // Total number of levels // // Child LEVELCOUNT: // Numeric value assigned to // a specific level public byte LevelCount { get; set; } // MSKILLLEVEL.LEVELDESCRIPTOR // // Detailed proficiency description // explaining expected competency // at this level public string LevelDescriptor { get; set; } = string.Empty; // MSKILLLEVEL.ISMINREQUIRED // // Indicates whether this level is // minimum mandatory proficiency // // 0 = No // 1 = Yes public byte IsMinRequired { get; set; } // MSKILLLEVEL.CANTRAINOTHERS // // Indicates whether person at this // level can train other employees // // 0 = No // 1 = Yes public byte CanTrainOthers { get; set; } // MSKILLLEVEL.REMARKS // // Additional comments/notes // related to this level public string? Remarks { get; set; } } }