LegalNodeBuilder¶
Builds a LegalNode describing a claim's open legal cases by combining case data from ILegalService.GetCaseList, schedule/attorney/firm details from ILegalQueryProvider, and directory lookups via IUserProfileService. For each non-closed legal case it attaches mediation schedule info, an "Unassigned"/"None" placeholder case number when appropriate, assigned SAIF attorney and legal-assistant/secretary contacts, outside-counsel firm/attorney details, and hearing schedule info depending on the case's most recent schedule type.
Purpose¶
- Retrieves the claim's non-closed legal cases and represents each as a
LegalCaseNodewith case number and status. - Attaches the most recent mediation schedule (type code "MED" or "FMED") to a case when present.
- Normalizes case numbering: uses "None" for pre-litigation cases without a case number, and "Unassigned" when no schedule exists or the case is appellate.
- Resolves and attaches assigned SAIF attorney, their legal-assistant secretary, outside counsel firm/attorney, and secretary-for-outside-counsel details based on the case's most recent schedule.
- Attaches hearing date/time/status when the most recent schedule type is "HEAR".
- Produces a standalone "Legal" alert item (
AlertNode) when the legal query provider reports an image alert is needed for the claim.
Context¶
- Namespace:
SAIF.Services.Claims.Information.Api - Assembly/package:
SAIF.Services(packaged inside theSAIF.SAIFCode.CoreNuGet package)
Public members¶
| Member | Signature | Purpose |
|---|---|---|
| Node | public LegalNode Node { get; } |
Exposes the node instance, whose Cases collection is initialized as an empty list in the constructor. |
| LegalNodeBuilder(claim, profile, query, legalService) | public LegalNodeBuilder(Claim claim, IUserProfileService profile, ILegalQueryProvider query, ILegalService legalService) |
Stores dependencies and initializes Node with an empty Cases list. |
| AddLegalNode() | public LegalNodeBuilder AddLegalNode() |
Iterates the claim's non-closed legal cases, attaching mediation, case-number placeholders, attorney/secretary, outside-counsel, and hearing details to each resulting LegalCaseNode, and appends each to Node.Cases. |
| AddLegalAlertItem() | public AlertNode AddLegalAlertItem() |
Returns an AlertNode with ContactType = "Legal" and UserId = "{LEGAL}" when ILegalQueryProvider.IsImageAlertNeeded is true for the claim; otherwise returns null. |
Behavioral notes¶
AddLegalNode()skips cases whoseCaseStatusequals"Closed"entirely.- Attorney assignment is only attempted when
AssignedAttorneyEmployeeIdis non-empty, and the corresponding secretary is only attached when the profile'sSecretaryEmployeeIdresolves to a directory user with a last name. - Outside-firm assignment is only attempted when
AssignedOtherFirmId > 0.
Constraints and usage notes¶
AddLegalAlertItem()can returnnull; callers (e.g.ClaimInformationApiService.BuildClaimAlertsNode) must null-check before adding it to a result collection.- Legal case ordering for "most recent" schedules relies on
Schedules.OrderBy(x => x.Id).LastOrDefault(...)/MostRecentSchedule, so schedule identity ordering must correlate with chronological recency for correct behavior.*
Note: Statements marked with * were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts. Statements marked with ** could not be confirmed; treat as unknown until verified.
Sources¶
- Services/SAIF.Services/Claims/Information/Api/LegalNodeBuilder.cs