Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "listings" ADD COLUMN "listing_file_number" TEXT;
1 change: 1 addition & 0 deletions api/prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -566,6 +566,7 @@ model Listings {
amenities String?
buildingTotalUnits Int? @map("building_total_units")
developer String?
listingFileNumber String? @map("listing_file_number")
householdSizeMax Int? @map("household_size_max")
householdSizeMin Int? @map("household_size_min")
neighborhood String?
Expand Down
7 changes: 6 additions & 1 deletion api/prisma/seed-staging.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,14 +157,19 @@ export const stagingSeed = async (
});
const angelopolisJurisdiction = await prismaClient.jurisdictions.create({
data: jurisdictionFactory('Angelopolis', {
featureFlags: [FeatureFlagEnum.enableNeighborhoodAmenities, FeatureFlagEnum.enableHousingDeveloperOwner],
featureFlags: [
FeatureFlagEnum.enableHousingDeveloperOwner,
FeatureFlagEnum.enableListingFileNumber,
FeatureFlagEnum.enableNeighborhoodAmenities,
],
visibleNeighborhoodAmenities: [
NeighborhoodAmenitiesEnum.groceryStores,
NeighborhoodAmenitiesEnum.pharmacies,
],
requiredListingFields: [
'listingsBuildingAddress',
'name',
'listingFileNumber',
'listingImages',
'leasingAgentEmail',
'leasingAgentName',
Expand Down
8 changes: 8 additions & 0 deletions api/src/dtos/listings/listing.dto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,14 @@ class Listing extends AbstractDTO {
@ApiPropertyOptional()
developer?: string;

@Expose()
@ValidateListingPublish('listingFileNumber', {
groups: [ValidationsGroupsEnum.default],
})
@IsString({ groups: [ValidationsGroupsEnum.default] })
@ApiPropertyOptional()
listingFileNumber?: string;

@Expose()
@IsNumber({}, { groups: [ValidationsGroupsEnum.default] })
@ApiPropertyOptional()
Expand Down
6 changes: 6 additions & 0 deletions api/src/enums/feature-flags/feature-flags-enum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export enum FeatureFlagEnum {
enableIsVerified = 'enableIsVerified',
enableLimitedHowDidYouHear = 'enableLimitedHowDidYouHear',
enableListingFavoriting = 'enableListingFavoriting',
enableListingFileNumber = 'enableListingFileNumber',
enableListingFiltering = 'enableListingFiltering',
enableListingOpportunity = 'enableListingOpportunity',
enableListingPagination = 'enableListingPagination',
Expand Down Expand Up @@ -125,6 +126,11 @@ export const featureFlagMap: { name: string; description: string }[] = [
description:
'When true, a Favorite button is shown for public listings and users can view their favorited listings',
},
{
name: FeatureFlagEnum.enableListingFileNumber,
description:
'When true, partners can enter and export a listing file number',
},
{
name: FeatureFlagEnum.enableListingFiltering,
description:
Expand Down
11 changes: 11 additions & 0 deletions api/src/services/listing-csv-export.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,17 @@ export class ListingCsvExporterService implements CsvExporterServiceInterface {
? 'Housing developer / owner'
: 'Developer',
},
...(doAnyJurisdictionHaveFeatureFlagSet(
user.jurisdictions,
FeatureFlagEnum.enableListingFileNumber,
)
? [
{
path: 'listingFileNumber',
label: 'Listing File Number',
},
]
: []),
{
path: 'listingsBuildingAddress.street',
label: 'Building Street Address',
Expand Down
10 changes: 10 additions & 0 deletions shared-helpers/src/types/backend-swagger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3962,6 +3962,9 @@ export interface Listing {
/** */
developer?: string

/** */
listingFileNumber?: string

/** */
householdSizeMax?: number

Expand Down Expand Up @@ -4649,6 +4652,9 @@ export interface ListingCreate {
/** */
developer?: string

/** */
listingFileNumber?: string

/** */
householdSizeMax?: number

Expand Down Expand Up @@ -4989,6 +4995,9 @@ export interface ListingUpdate {
/** */
developer?: string

/** */
listingFileNumber?: string

/** */
householdSizeMax?: number

Expand Down Expand Up @@ -7576,6 +7585,7 @@ export enum FeatureFlagEnum {
"enableIsVerified" = "enableIsVerified",
"enableLimitedHowDidYouHear" = "enableLimitedHowDidYouHear",
"enableListingFavoriting" = "enableListingFavoriting",
"enableListingFileNumber" = "enableListingFileNumber",
"enableListingFiltering" = "enableListingFiltering",
"enableListingOpportunity" = "enableListingOpportunity",
"enableListingPagination" = "enableListingPagination",
Expand Down
1 change: 1 addition & 0 deletions sites/partners/page_content/locale_overrides/general.json
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,7 @@
"listings.listingAvailabilityQuestion": "What is the listing availability?",
"listings.listingIsAlreadyLive": "This listing is already live. Updates will affect the applicant experience on the housing portal.",
"listings.listingName": "Listing name",
"listings.listingFileNumber": "Listing file number",
"listings.listingPhoto": "Listing photo",
"listings.listingStatus.active": "Open",
"listings.listingStatus.changesRequested": "Changes requested",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,22 @@ const DetailListingIntro = () => {
FeatureFlagEnum.enableHousingDeveloperOwner,
listing.jurisdictions.id
)
const enableListingFileNumber = doJurisdictionsHaveFeatureFlagOn(
FeatureFlagEnum.enableListingFileNumber,
listing.jurisdictions.id
)

return (
<SectionWithGrid heading={t("listings.sections.introTitle")} inset>
{enableListingFileNumber && (
<Grid.Row>
<Grid.Cell>
<FieldValue id="listingFileNumber" label={t("listings.listingFileNumber")}>
{getDetailFieldString(listing.listingFileNumber)}
</FieldValue>
</Grid.Cell>
</Grid.Row>
)}
<Grid.Row>
<Grid.Cell>
<FieldValue id="name" label={t("listings.listingName")}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ const ListingIntro = (props: ListingIntroProps) => {
FeatureFlagEnum.enableHousingDeveloperOwner,
jurisdiction
)
const enableListingFileNumber = doJurisdictionsHaveFeatureFlagOn(
FeatureFlagEnum.enableListingFileNumber,
jurisdiction
)

const jurisdictionOptions: SelectOption[] = [
{ label: "", value: "" },
Expand All @@ -50,6 +54,22 @@ const ListingIntro = (props: ListingIntroProps) => {
heading={t("listings.sections.introTitle")}
subheading={t("listings.sections.introSubtitle")}
>
{enableListingFileNumber && (
<Grid.Row columns={1}>
<Grid.Cell>
<Field
register={register}
{...defaultFieldProps(
"listingFileNumber",
t("listings.listingFileNumber"),
props.requiredFields,
errors,
clearErrors
)}
/>
</Grid.Cell>
</Grid.Row>
)}
<Grid.Row columns={1}>
<Grid.Cell>
<Field
Expand Down
1 change: 1 addition & 0 deletions sites/partners/src/lib/listings/formTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ export const formDefaults: FormListing = {
listingEvents: [],
listingImages: [],
listingFeatures: null,
listingFileNumber: "",
listingNeighborhoodAmenities: null,
listingUtilities: null,
listingsLeasingAgentAddress: null,
Expand Down
Loading