Policy¶
Policy wraps a Data.Model.Policies.Policy entity and assembles the policy-level contact and location information — county, policy contact, claim contact, office, and rate-account linkage — that claim setup and correspondence workflows read when they need to know where a policy's paperwork and calls should go.
Purpose¶
- Resolves the policy's primary location's county via the location query provider, returning
nullwhen the policy has no primary location or the location has no county. - Builds a formatted
ContactItemfor the policy's claim-handling location (address, phone, fax) and, separately, for that location's designated claim contact person (name, phone, cell), returningnullat each stage where the underlying location or contact data is absent. - Resolves the policy's office code to an
OfficeCodecontract and exposes the policy's rate account as anotherPolicyinstance, letting callers navigate the rating hierarchy without a separate lookup. - Determines the policy's current (or, optionally, only past-effective) group association by finding its latest applicable policy period and querying the query provider for the corresponding group association.
Context¶
- Namespace:
SAIF.Domain.Model.Policies - Assembly/package:
SAIF.Domain(packaged inSAIF.SAIFCode.Core) - The same source file also declares a public
PolicyMappingHelperstatic class (address/office-code/county mapping helpers used internally byPolicy); it is out of scope for this page and is not documented here.
Public members¶
| Member | Signature | Purpose |
|---|---|---|
| Policy (constructor by policy number) | public Policy(IRepositoryFactory factory, IPolicyQueryProvider policyQueryProvider, long policyNumber) |
Loads the policy entity identified by policyNumber. |
| Policy (constructor from entity) | public Policy(IRepositoryFactory factory, IPolicyQueryProvider policyQueryProvider, Data.Model.Policies.Policy policy) |
Wraps an already-loaded policy entity. |
| Data | public Data.Model.Policies.Policy Data { get; } |
Exposes the underlying policy entity. |
| PolicyCounty | public County PolicyCounty { get; } |
The county of the policy's primary location, mapped to the County contract; null when there is no primary location or it has no county. |
| PolicyContact | public ContactItem PolicyContact { get; } |
A ContactItem for the policy's claim-handling location — formatted name, address, and phone/fax (tagged "Phone"/"Fax") — or null when there is no data or no claim location. |
| ClaimContact | public ContactItem ClaimContact { get; } |
A ContactItem (type "Claim Contact") for the claim location's designated contact person — name, phone, cell (tagged "Phone"/"Cell") — or null when there is no data, no claim location, or no valid contact record. |
| GetGroupAssociation | public PolicyPeriodGroupAssoc GetGroupAssociation(bool excludeFuturePolicyPeriods) |
Finds the latest policy period (optionally excluding periods effective in the future) and returns its group association from the query provider; null when the policy has no matching period. |
| Office | public Core.Contracts.OfficeCode Office { get; } |
The policy's office, mapped to the OfficeCode contract; null when there is no data, no office code on the policy, or the office code does not resolve. |
| RateAccount | public Policy RateAccount { get; } |
A new Policy wrapping the policy's rate-account entity, allowing navigation up the rating hierarchy. |
Inherited public members¶
Members in this section are inherited from DomainBase<TItem> in SAIF.Domain. They are available on this type through inheritance (via the intermediate DomainRepositoryBase<TItem> base).
| Member | Signature | Purpose | Origin |
|---|---|---|---|
| HasData | public virtual bool HasData { get; } |
Reports whether the wrapped policy entity is present, evaluated as !DataItem.IsNull(). |
SAIF.Domain — DomainBase<TItem> |
Behavioral notes¶
PolicyCountydoes not checkHasDatabefore dereferencingDataItem.PolicyNumber, unlikePolicyContact/ClaimContact/Office, so calling it on aPolicywith no data risks a null-reference failure rather than returningnullgracefully*.RateAccountrecurses through the constructor-from-entity overload each time it is accessed, so repeated access re-wraps (rather than caches) the rate-account policy*.
Constraints and usage notes¶
PolicyCountyis unguarded against a missingDataItem; callers should checkHasDatathemselves before reading it.
Note: Statements marked with
*were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts.
Sources¶
Domain/SAIF.Domain/Model/Policies/Policy.csDomain/SAIF.Domain/DomainBase.csDomain/SAIF.Domain/DomainRepositoryBase.cs