namespace EnablementDAL.DTO; public class ResolverRequestDTO { public string RequestId { get; set; } = string.Empty; public DateTime ClientTimestamp { get; set; } public ResolverContextDTO Context { get; set; } = new(); } public class ResolverContextDTO { public ResolverDatabaseContextDTO Database { get; set; } = new(); public ResolverUserContextDTO User { get; set; } = new(); public ResolverUiContextDTO Ui { get; set; } = new(); public ResolverEntityContextDTO Entity { get; set; } = new(); public ResolverTemporalContextDTO Temporal { get; set; } = new(); public ResolverTriggerContextDTO Trigger { get; set; } = new(); public ResolverCustomContextDTO Custom { get; set; } = new(); public ResolverStateHintsDTO StateHints { get; set; } = new(); } public class ResolverDatabaseContextDTO { public string DbName { get; set; } = string.Empty; } public class ResolverUserContextDTO { public int UserId { get; set; } = -1; public string UserCode { get; set; } = string.Empty; public string UserName { get; set; } = string.Empty; // Support both Role (string) and RoleId (int) public string Role { get; set; } = string.Empty; public int RoleId { get; set; } = -1; // ← NEW public int OuId { get; set; } = -1; public string OuName { get; set; } = string.Empty; public int WorkRegionId { get; set; } = -1; public string WorkRegion { get; set; } = string.Empty; } public class ResolverUiContextDTO { public string Product { get; set; } = string.Empty; public string Module { get; set; } = string.Empty; public int ModuleId { get; set; } = -1; public string Menu { get; set; } = string.Empty; public int MenuId { get; set; } = -1; public string Page { get; set; } = string.Empty; public int PageId { get; set; } = -1; public string Screen { get; set; } = string.Empty; public string Action { get; set; } = string.Empty; // "ModuleNavigation", "Login", "Manual" public int MenuType { get; set; } = 0; } public class ResolverEntityContextDTO { public string EntityType { get; set; } = string.Empty; public int EntityId { get; set; } = -1; public int BizTransactionClassId { get; set; } = -1; public int SelectedId { get; set; } = -1; } public class ResolverTemporalContextDTO { public string BusinessDate { get; set; } = string.Empty; public int WorkPeriodId { get; set; } = -1; public DateTime WorkPeriodFromDate { get; set; } public DateTime WorkPeriodToDate { get; set; } } public class ResolverTriggerContextDTO { public string Type { get; set; } = string.Empty; // ← CRITICAL: "ModuleNavigation", "Login", "Manual" public int TriggerType { get; set; } = -1; public string Source { get; set; } = string.Empty; public string TriggerSource { get; set; } = string.Empty; public string Key { get; set; } = string.Empty; public string TriggerKey { get; set; } = string.Empty; public string ObjectId { get; set; } = string.Empty; } public class ResolverCustomContextDTO { public string Criteria { get; set; } = string.Empty; public bool Expandable { get; set; } public bool Expanded { get; set; } public bool Clicked { get; set; } public string ImageURL { get; set; } = string.Empty; public string Logo1 { get; set; } = string.Empty; public string Logo2 { get; set; } = string.Empty; } public class ResolverStateHintsDTO { public List AlreadySeen { get; set; } = new(); public List Completed { get; set; } = new(); }