Skip to content

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 by PolicyOutputDocumentRepository to assemble its agency-facing queries.

Context

  • Namespace: SAIF.Data.NHibernate.Repositories.OutputDocuments
  • Assembly/package: SAIF.Data.NHibernate (ships inside the SAIF.SAIFCode.Core NuGet package)
  • Static class; all members are extension methods on IQueryable<PolicyOutputDocument> and return IQueryable<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.
  • ForDocumentTypes uses documentType.Contains(p.OutputDocument.DocumentType.Code) — the containment check runs with the document type code as the needle and the caller-supplied documentType string as the haystack, which only behaves as a "type is in this delimited list" filter if documentType is 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*.
  • ForCategory and ForRelationshipType both use the "blank means unfiltered" sentinel convention, but ForCategory additionally special-cases the literal string "ALL" while ForRelationshipType does 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-materialized IEnumerable would evaluate correctly but without SQL-side filtering, which the source does not do (all callers chain them directly on Query()/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.

Sources

  • Data/SAIF.Data.NHibernate/Repositories/OutputDocuments/PolicyOutputDocumentRepository.cs