namespace EnablementDAL.DTO; // One ranked candidate returned by ResolveShowMatches ("System A" — pull/context // resolver). Deliberately a different shape from ResolverActionDTO (System B): // this carries relevance-ranking diagnostics (MatchedRules/TotalRules/Score) and // DeploymentMode (which UI surface a show is allowed to appear on), not // display-rendering fields (Priority/Blocking/Theme/DisplayHint) — the two serve // different consumers (reference/lookup list vs. auto-popping banners/tours). public class ResolverMatchResultDTO { public int ShowId { get; set; } public string ShowName { get; set; } = string.Empty; public byte ShowNature { get; set; } public int MatchedRules { get; set; } public int TotalRules { get; set; } public double Score { get; set; } public byte DeploymentMode { get; set; } // 0=Embedded, 1=Standalone, 2=Both, 3=ActionPanel public string? ExternalRef { get; set; } } public class ResolverMatchResponseDTO { public string RequestId { get; set; } = string.Empty; public DateTime ServerTimestamp { get; set; } public long ResolvedMs { get; set; } public List Matches { get; set; } = new(); } // Candidate row for the match resolver — same shape as ShowSummaryDTO plus the // two match-only fields (DeploymentMode, ExternalRef); kept separate so the // existing ShowSummaryDTO/GET_CANDIDATE_SHOWS (System B's hot path) is untouched. public class ShowMatchCandidateDTO { public int ShowId { get; set; } public string ShowName { get; set; } = string.Empty; public string DisplayName { get; set; } = string.Empty; public byte ShowNature { get; set; } public byte ShowType { get; set; } public byte StartType { get; set; } public int Priority { get; set; } public byte Theme { get; set; } public byte DisplayPosition { get; set; } public short DisplayDuration { get; set; } public DateTime? StartDate { get; set; } public DateTime? ExpiryDate { get; set; } public int TenantId { get; set; } public byte Status { get; set; } public byte ApprovalStatus { get; set; } public byte ConditionType { get; set; } public string ShowConditions { get; set; } = string.Empty; public byte DeploymentMode { get; set; } public string? ExternalRef { get; set; } }