PolicyOutputDocumentExtensions¶
PolicyOutputDocumentExtensions is a static class of IQueryable<PolicyOutputDocument> filter extension methods, composed by PolicyOutputDocumentRepository to build its agency-viewability, status, and scoping queries. Each method appends exactly one Where clause and returns the query unchanged for further chaining, so callers build compound filters by chaining calls (e.g. Query().AgencyViewable().Released().ForPolicyOrAccount()); this pattern duplicates equivalent filter logic that exists in SAIF.Data's own PolicyOutputDocumentExtensions (SDN-BR-061, saif-data-nhibernate-analysis.md).
Purpose¶
- Provide composable, single-purpose
IQueryable<PolicyOutputDocument>filters for document status (Released/Held/Pending/HeldAndPending), agency visibility (AgencyViewable/AgencyInboxViewable/AgencyDeleted/NotAgencyDeleted/NonViewed), and scoping (policy, agency, producer, parent policy, category, relationship type, document types, release/document date), used byPolicyOutputDocumentRepositoryto assemble its agency-facing queries.
Context¶
- Namespace:
SAIF.Data.NHibernate.Repositories.OutputDocuments - Assembly/package:
SAIF.Data.NHibernate(ships inside theSAIF.SAIFCode.CoreNuGet package) - Static class; all members are extension methods on
IQueryable<PolicyOutputDocument>and returnIQueryable<PolicyOutputDocument>for chaining. No base class or interface.
Public members¶
| Member | Signature | Purpose |
|---|---|---|
| ForPolicy | public static IQueryable<PolicyOutputDocument> ForPolicy(this IQueryable<PolicyOutputDocument> query, long policyNumber) |
Filters to documents whose Policy.PolicyNumber equals policyNumber. |
| Released | public static IQueryable<PolicyOutputDocument> Released(this IQueryable<PolicyOutputDocument> query) |
Filters to documents whose DocumentStatus.Code equals DocumentStatusCode.ReleasedDocumentStatusCode (SDN-BR-061). |
| AgencyViewable | public static IQueryable<PolicyOutputDocument> AgencyViewable(this IQueryable<PolicyOutputDocument> query) |
Filters to documents whose OutputDocument.DocumentType.IsAgencyViewable is true (SDN-BR-061). |
| AgencyInboxViewable | public static IQueryable<PolicyOutputDocument> AgencyInboxViewable(this IQueryable<PolicyOutputDocument> query) |
Filters to documents whose OutputDocument.DocumentType.IsAgencyInboxViewable is true (SDN-BR-061). |
| Held | public static IQueryable<PolicyOutputDocument> Held(this IQueryable<PolicyOutputDocument> query) |
Filters to documents whose DocumentStatus.Code equals DocumentStatusCode.HeldDocumentStatusCode. |
| Pending | public static IQueryable<PolicyOutputDocument> Pending(this IQueryable<PolicyOutputDocument> query) |
Filters to documents whose DocumentStatus.Code equals DocumentStatusCode.PendingDocumentStatusCode. |
| HeldAndPending | public static IQueryable<PolicyOutputDocument> HeldAndPending(this IQueryable<PolicyOutputDocument> query) |
Filters to documents whose DocumentStatus.Code is either HeldDocumentStatusCode or PendingDocumentStatusCode. |
| ForAgency | public static IQueryable<PolicyOutputDocument> ForAgency(this IQueryable<PolicyOutputDocument> query, long agencyId) |
Filters to documents whose AgencyId equals agencyId. |
| AgencyDeleted | public static IQueryable<PolicyOutputDocument> AgencyDeleted(this IQueryable<PolicyOutputDocument> query) |
Filters to documents whose AgencyDeleteDate is not null, i.e. documents the agency has marked deleted (SDN-BR-060). |
| NotAgencyDeleted | public static IQueryable<PolicyOutputDocument> NotAgencyDeleted(this IQueryable<PolicyOutputDocument> query) |
Filters to documents whose AgencyDeleteDate is null, i.e. not agency-deleted (SDN-BR-060). |
| ReleasedOnOrAfter | public static IQueryable<PolicyOutputDocument> ReleasedOnOrAfter(this IQueryable<PolicyOutputDocument> query, DateTime date) |
Filters to documents whose ReleaseDate is greater than or equal to date. |
| ForProducer | public static IQueryable<PolicyOutputDocument> ForProducer(this IQueryable<PolicyOutputDocument> query, long producerId) |
Filters to documents whose AgentId equals producerId. |
| NonViewed | public static IQueryable<PolicyOutputDocument> NonViewed(this IQueryable<PolicyOutputDocument> query) |
Filters to documents whose AgencyViewed is false, i.e. not yet viewed by the agency (SDN-BR-060). |
| ForCategory | public static IQueryable<PolicyOutputDocument> ForCategory(this IQueryable<PolicyOutputDocument> query, string documentCategory) |
Returns query unfiltered if documentCategory is null/whitespace or equals "ALL"; otherwise filters to documents whose OutputDocument.DocumentType.DocumentCategory.Code equals documentCategory (SDN-BR-062). |
| ForParentPolicy | public static IQueryable<PolicyOutputDocument> ForParentPolicy(this IQueryable<PolicyOutputDocument> query, long parentPolicyNumber) |
Filters to documents whose Policy.RelationshipPolicy.PolicyNumber equals parentPolicyNumber and whose own Policy.PolicyNumber differs from that relationship policy number — i.e. true child policies only, excluding the parent policy's own documents. |
| ForRelationshipType | public static IQueryable<PolicyOutputDocument> ForRelationshipType(this IQueryable<PolicyOutputDocument> query, string relationshipType) |
Returns query unfiltered if relationshipType is null/whitespace; otherwise filters to documents whose Policy.Relationship.Code equals relationshipType. |
| ForDocumentTypes | public static IQueryable<PolicyOutputDocument> ForDocumentTypes(this IQueryable<PolicyOutputDocument> query, string documentType) |
Filters to documents whose OutputDocument.DocumentType.Code is contained within the caller-supplied documentType string (a reversed Contains check: documentType.Contains(p.OutputDocument.DocumentType.Code)), intended for a delimited list of allowed type codes passed as a single string*. |
| ForReleaseDate | public static IQueryable<PolicyOutputDocument> ForReleaseDate(this IQueryable<PolicyOutputDocument> query, DateTime releaseDate) |
Filters to documents whose ReleaseDate equals releaseDate exactly. |
| ForDocumentDate | public static IQueryable<PolicyOutputDocument> ForDocumentDate(this IQueryable<PolicyOutputDocument> query, DateTime documentDate) |
Filters to documents whose OutputDocument.DocumentDate equals documentDate exactly. |
Behavioral notes¶
- Every method is a single
.Where()clause with no side effects; none execute the query themselves — materialization (ToList()/Any()) happens in the calling repository method. ForDocumentTypesusesdocumentType.Contains(p.OutputDocument.DocumentType.Code)— the containment check runs with the document type code as the needle and the caller-supplieddocumentTypestring as the haystack, which only behaves as a "type is in this delimited list" filter ifdocumentTypeis a concatenation of type codes with no separator collisions; a single exact type code passed here would still match via substring containment, which can over-match if one code is a substring of another*.ForCategoryandForRelationshipTypeboth use the "blank means unfiltered" sentinel convention, butForCategoryadditionally special-cases the literal string"ALL"whileForRelationshipTypedoes not (SDN-BR-062).
Constraints and usage notes¶
- These filters assume
IQueryable<PolicyOutputDocument>navigation properties (Policy,OutputDocument,DocumentStatus, etc.) translate to SQL via NHibernate LINQ; calling them against an already-materializedIEnumerablewould evaluate correctly but without SQL-side filtering, which the source does not do (all callers chain them directly onQuery()/EagerLoadQuery()results before materializing)*.
Note: Statements marked with
†are derived from dependency library documentation via the Legends CLI. Statements marked with*were inferred from code structure or contextual evidence. Statements marked with**could not be confirmed; treat as unknown until verified.
Related documentation¶
- Index
- Overview
- Architecture
- Dependencies
- Operations and processes
- Business rules
- Database tables
- SQL catalog
- Procedures
- Security and authorization
- API reference
Sources¶
Data/SAIF.Data.NHibernate/Repositories/OutputDocuments/PolicyOutputDocumentRepository.cs