namespace UtopiaCanteenSystem.Services; /// /// Maps HRMS employee_rfid_tag.grade_type to menu_item.item_for. /// Menu rows only use MANAGEMENT / NON_MANAGEMENT; other grades must map to one of those. /// Contractual and MTO/TE/Intern use the management menu; Unassigned uses non-management. /// public static class HrmsMenuItemForMapping { /// /// Returns MANAGEMENT or NON_MANAGEMENT for menu queries. Never returns empty. /// public static string FromGradeType(string? gradeType) { var compact = ToCompactAlphaNum(gradeType); if (string.IsNullOrEmpty(compact)) return "NON_MANAGEMENT"; if (compact == "management") return "MANAGEMENT"; if (compact == "nonmanagement") return "NON_MANAGEMENT"; if (compact == "contractual" || compact == "mtoteintern") return "MANAGEMENT"; if (compact == "unassigned") return "NON_MANAGEMENT"; if (compact.StartsWith("non", StringComparison.Ordinal) && compact.Contains("management", StringComparison.Ordinal)) return "NON_MANAGEMENT"; // Any other label (e.g. future grade codes) — use non-management menu so items still resolve. return "NON_MANAGEMENT"; } /// Human-readable grade label for Excel export (Management / Non Management). public static string ToExportGradeLabel(string? gradeType) { return FromGradeType(gradeType) == "MANAGEMENT" ? "Management" : "Non Management"; } private static string ToCompactAlphaNum(string? s) { if (string.IsNullOrWhiteSpace(s)) return string.Empty; var chars = s.Trim().ToLowerInvariant().Where(char.IsLetterOrDigit).ToArray(); return new string(chars); } }