namespace EnablementDAL.DTO { // Canonical Show Nature enumeration. TSHOW.SHOWNATURE was previously an undocumented byte with // no full enumeration anywhere in the backend. Values here MUST mirror // projects/enablement/models/enablement.enums.ts's ShowNature exactly — that FE enum is already // live (referenced by gbshowlist.component.ts's showNatureMap and persisted via TShowDTO.ShowNature) // and uses different numbering than the attached marketing/spec PDFs (e.g. Tips=6/Announcement=2 // here, not 2/6 as the spec text describes) — the FE enum is the ground truth, not the PDFs. public static class ShowNatureConstant { public const int UI_TOUR = 0; public const int FEATURE_TOUR = 1; public const int ANNOUNCEMENT = 2; public const int CHECKLIST = 3; public const int BANNER = 4; public const int MICRO_LESSON = 5; public const int TIPS = 6; public const int NEWS_ITEM = 7; public const int ALERT = 8; public const int MAINTENANCE_NOTICE = 9; public const int KNOWLEDGE_ARTICLE = 10; public const int PORTAL_NOTICE = 11; public const int ASSESSMENT = 12; public const int WORK_INSTRUCTION = 13; // Natures composed of multiple ordered Steps (tour waypoints, checklist items, lesson // slides, assessment questions) — these show a Steps editor and require at least one step on // save. Natures not in this set are single-display (one content area, no Steps section). // WorkInstruction is single-display here: it delegates rendering to the WorkInstruction // viewer via ContentId (see LinkType.WorkInstruction in enablement.enums.ts), not a // Show-owned Steps array. public static readonly HashSet MultiStepNatures = new() { UI_TOUR, FEATURE_TOUR, ANNOUNCEMENT, CHECKLIST, MICRO_LESSON, KNOWLEDGE_ARTICLE, ASSESSMENT }; public static bool IsMultiStep(int showNature) => MultiStepNatures.Contains(showNature); } }