Namespace SEBT.Portal.Core.Models.Household
Classes
- Address
Represents an address on file for a household.
- AllowedActions
Computed permissions for self-service portal actions. Evaluated server-side from
SelfServiceRulesSettingsagainst the user's household data (issuance type, card status). The frontend reads these booleans to show/hide CTAs without ever seeing the raw policy config.
- Application
Represents a benefit application with its associated children and card information. This is a domain model used for in-memory storage via MockHouseholdRepository. Application data is stored as part of HouseholdData.Applications list.
- BlockedAddressEntry
A single blocked-address record sourced from a state-specific data file. Street is the unnormalized street form (line 1, or a synthesized "PO BOX {n}" string when the record is a PO box only). PostalCodeFive is the 5-digit ZIP, used to disambiguate same-street collisions across cities.
- Child
Represents a child on a benefit application.
- CoLoadedCohortClassifier
Derives CoLoadedCohort from pre-filter household case and application state. Shared by household reads and ID proofing off-boarding decisions.
- HouseholdData
Represents household data including application and benefit information. This domain model is used for in-memory storage via MockHouseholdRepository. All household and application data is stored in-memory during development.
- HouseholdIdentifier
A typed identifier used to look up and authorize access to household data. The type is determined by state configuration (e.g. Email, SNAP ID); the value comes from the authenticated user.
- HouseholdSocureEligibility
Whether the guardian has qualifying portal household data before sending them through Socure. Aligns with the dashboard empty-state check (no enrolled cases and no applications). A missing household is treated like an empty household.
- SummerEbtCase
Represents a household member's Summer EBT case from the state backend. Per-child case data including eligibility, card, and benefit information.
- UserProfile
Represents the logged-in user's profile name for display
Enums
- ApplicationStatus
Represents the status of a benefit application.
Serialized as its integer value over the API (no JsonStringEnumConverter, unlike CardStatus), so these ordinals are the wire contract. The frontend decodes them against a hardcoded table in features/household/api/schema.ts, and the plugin boundary casts between this enum and the state-connector's mirror by value, not by name. Do not reorder or renumber members; append only. EnumWireContractTests and EnumParityTests fail if you do.
- BenefitExpirationStatus
Where a case's benefits stand relative to their expiration date. Serialized as the member name over the API, so member identifiers are the wire contract.
- BenefitIssuanceType
Represents the type of benefit issuance for a household.
- CardStatus
Represents the status of a benefit card. Mirrors the Interface enum member-for-member; parity is enforced by EnumParityTests. Serialized as the member name (e.g., "Active", "Lost") over the API per JsonStringEnumConverter, so member identifiers are the wire contract.
- CoLoadedCohort
Classifies a household relative to co-loaded benefits, for use by the portal's exclusion logic and by analytics to segment usage.
The classification is derived at runtime from the pre-filter household state (case list + applications), using the rule:
- NonCoLoaded — no
SummerEbtCaseis co-loaded. - CoLoadedOnly — every case is co-loaded AND there are no in-flight household applications (
Pending/UnderReviewon Applications), no cases in pending applicant status (same statuses on ApplicationStatus). - MixedOrApplicantExcluded — the household has at least one co-loaded case AND at least one of: a non-co-loaded case, an in-flight household application (
Pending/UnderReview), or a case whose ApplicationStatus is pending or under review.
For households in MixedOrApplicantExcluded, co-loaded benefits may be suppressed from their dashboard/benefits response so they see only non-co-loaded cases and/or application views (subject to
CoLoadedCohortFilterconfiguration).- NonCoLoaded — no
- IssuanceType
Represents the type of issuance for an application.
Serialized as its integer value over the API, so these ordinals are the wire contract. The frontend decodes them against a hardcoded table in features/household/api/schema.ts. Append only; do not reorder or renumber. EnumWireContractTests fails if you do.
- PreferredHouseholdIdType
Types of identifiers that can be used to authorize guardians and link them to household data. Configurable per state; a state may support one or more types (e.g. Email today, SNAP ID later).