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);
}
}