Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
1 change: 1 addition & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,5 +56,6 @@ module.exports = {
"**/.eslintrc.js",
"sentry-example-page.js",
"sentry-example-api.js",
"*.csv",
],
}
2 changes: 1 addition & 1 deletion .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ ui-components/CHANGELOG.md
sites/public/CHANGELOG.md
sites/partners/CHANGELOG.md
shared-helpers/CHANGELOG.md
backend/core/CHANGELOG.md
*.csv
5 changes: 5 additions & 0 deletions api/prisma/migrations/36_marketing_month/migration.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
-- CreateEnum
CREATE TYPE "month_enum" AS ENUM ('january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december');

-- AlterTable
ALTER TABLE "listings" ADD COLUMN "marketing_month" "month_enum";
18 changes: 18 additions & 0 deletions api/prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -661,6 +661,7 @@ model Listings {
marketingType MarketingTypeEnum @default(marketing) @map("marketing_type")
marketingYear Int? @map("marketing_year")
marketingSeason MarketingSeasonEnum? @map("marketing_season")
marketingMonth MonthEnum? @map("marketing_month")
whatToExpectAdditionalText String? @map("what_to_expect_additional_text")
section8Acceptance Boolean? @map("section8_acceptance")
neighborhoodAmenitiesId String? @unique() @map("neighborhood_amenities_id") @db.Uuid
Expand Down Expand Up @@ -1247,6 +1248,23 @@ enum MarketingSeasonEnum {
@@map("listings_marketing_season_enum")
}

enum MonthEnum {
january
february
march
april
may
june
july
august
september
october
november
december

@@map("month_enum")
}

enum MarketingTypeEnum {
marketing
comingSoon
Expand Down
29 changes: 17 additions & 12 deletions api/prisma/seed-staging.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,19 +71,19 @@ export const stagingSeed = async (
],
languages: Object.values(LanguagesEnum),
requiredListingFields: [
'listingsBuildingAddress',
'name',
'developer',
'listingImages',
'digitalApplication',
'jurisdictions',
'leasingAgentEmail',
'leasingAgentName',
'leasingAgentPhone',
'jurisdictions',
'units',
'digitalApplication',
'listingImages',
'listingsBuildingAddress',
'name',
'paperApplication',
'referralOpportunity',
'rentalAssistance',
'units',
],
}),
});
Expand Down Expand Up @@ -158,27 +158,32 @@ export const stagingSeed = async (
const angelopolisJurisdiction = await prismaClient.jurisdictions.create({
data: jurisdictionFactory('Angelopolis', {
featureFlags: [
FeatureFlagEnum.enableAccessibilityFeatures,
FeatureFlagEnum.enableHousingDeveloperOwner,
FeatureFlagEnum.enableListingFiltering,
FeatureFlagEnum.enableMarketingStatus,
FeatureFlagEnum.enableMarketingStatusMonths,
FeatureFlagEnum.enableNeighborhoodAmenities,
FeatureFlagEnum.enableNeighborhoodAmenitiesDropdown,
],
visibleNeighborhoodAmenities: [
NeighborhoodAmenitiesEnum.groceryStores,
NeighborhoodAmenitiesEnum.pharmacies,
],

requiredListingFields: [
'listingsBuildingAddress',
'name',
'listingImages',
'digitalApplication',
'jurisdictions',
'leasingAgentEmail',
'leasingAgentName',
'leasingAgentPhone',
'jurisdictions',
'units',
'digitalApplication',
'listingImages',
'listingsBuildingAddress',
'name',
'paperApplication',
'referralOpportunity',
'rentalAssistance',
'units',
],
}),
});
Expand Down
12 changes: 12 additions & 0 deletions api/src/dtos/listings/listing.dto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import {
RegionEnum,
MarketingSeasonEnum,
MarketingTypeEnum,
MonthEnum,
ReviewOrderTypeEnum,
DepositTypeEnum,
ListingTypeEnum,
Expand Down Expand Up @@ -1047,6 +1048,17 @@ class Listing extends AbstractDTO {
})
marketingSeason?: MarketingSeasonEnum | null;

@Expose()
@ValidateListingPublish('marketingMonth', {
groups: [ValidationsGroupsEnum.default],
})
@IsEnum(MonthEnum, { groups: [ValidationsGroupsEnum.default] })
@ApiPropertyOptional({
enum: MonthEnum,
enumName: 'MonthEnum',
})
marketingMonth?: MonthEnum | null;

@Expose()
@ValidateListingPublish('homeType', {
groups: [ValidationsGroupsEnum.default],
Expand Down
11 changes: 10 additions & 1 deletion api/src/enums/feature-flags/feature-flags-enum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ export enum FeatureFlagEnum {
enableListingPagination = 'enableListingPagination',
enableListingUpdatedAt = 'enableListingUpdatedAt',
enableMarketingStatus = 'enableMarketingStatus',
enableMarketingStatusMonths = 'enableMarketingStatusMonths',
enableNeighborhoodAmenities = 'enableNeighborhoodAmenities',
enableNeighborhoodAmenitiesDropdown = 'enableNeighborhoodAmenitiesDropdown',
enableNonRegulatedListings = 'enableNonRegulatedListings',
Expand All @@ -47,7 +48,10 @@ export enum FeatureFlagEnum {
// List of all of existing flags and their descriptions.
// This should be the source of all feature flags in our system.
// Keep alphabetized for readability.
export const featureFlagMap: { name: string; description: string }[] = [
export const featureFlagMap: {
name: string;
description: string;
}[] = [
{
name: FeatureFlagEnum.disableCommonApplication,
description:
Expand Down Expand Up @@ -150,6 +154,11 @@ export const featureFlagMap: { name: string; description: string }[] = [
description:
"When true, the 'marketing status' sub-section is displayed in listing creation/edit and the public listing view",
},
{
name: FeatureFlagEnum.enableMarketingStatusMonths,
description:
"When true, the 'marketing status' sub-section uses months instead of seasons (functions only if enableMarketingStatus is also true)",
},
{
name: FeatureFlagEnum.enableNeighborhoodAmenities,
description:
Expand Down
12 changes: 12 additions & 0 deletions shared-helpers/src/locales/ar.json
Original file line number Diff line number Diff line change
Expand Up @@ -876,6 +876,18 @@
"listings.waitlist.unitsAndWaitlist": "الوحدات المتاحة وقائمة الانتظار",
"lottery.applicationsThatQualifyForPreference": "سيتم إعطاء الطلبات المؤهلة لهذا التفضيل أولوية أعلى.",
"lottery.viewPreferenceList": "عرض قائمة التفضيلات",
"months.january": "يناير",
"months.february": "فبراير",
"months.march": "مارس",
"months.april": "أبريل",
"months.may": "مايو",
"months.june": "يونيو",
"months.july": "يوليو",
"months.august": "أغسطس",
"months.september": "سبتمبر",
"months.october": "أكتوبر",
"months.november": "نوفمبر",
"months.december": "ديسمبر",
"nav.browseProperties": "تصفح الخصائص",
"nav.getFeedback": "نحن نحب أن نحصل على تعليقاتك!",
"nav.listings": "القوائم",
Expand Down
12 changes: 12 additions & 0 deletions shared-helpers/src/locales/bn.json
Original file line number Diff line number Diff line change
Expand Up @@ -876,6 +876,18 @@
"listings.waitlist.unitsAndWaitlist": "উপলব্ধ ইউনিট এবং অপেক্ষা তালিকা",
"lottery.applicationsThatQualifyForPreference": "এই অগ্রাধিকার জন্য যোগ্যতা অর্জনকারী অ্যাপ্লিকেশনগুলিকে একটি উচ্চ অগ্রাধিকার দেওয়া হবে।",
"lottery.viewPreferenceList": "পছন্দের তালিকা দেখুন",
"months.january": "জানুয়ারী",
"months.february": "ফেব্রুয়ারী",
"months.march": "মার্চ",
"months.april": "এপ্রিল",
"months.may": "মে",
"months.june": "জুন",
"months.july": "জুলাই",
"months.august": "আগস্ট",
"months.september": "সেপ্টেম্বর",
"months.october": "অক্টোবর",
"months.november": "নভেম্বর",
"months.december": "ডিসেম্বর",
"nav.browseProperties": "প্রপার্টি ব্রাউজ করুন",
"nav.getFeedback": "আমরা আপনার প্রতিক্রিয়া পেতে চাই!",
"nav.listings": "তালিকা",
Expand Down
18 changes: 15 additions & 3 deletions shared-helpers/src/locales/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -309,9 +309,9 @@
"application.review.confirmation.whatHappensNext.lottery": "### ¿Qué sucede a continuación?\n\n* Una vez que se cierre el período de solicitud, los solicitantes elegibles serán colocados en orden según el orden de clasificación de la lotería.\n\n* Las preferencias de vivienda, si corresponde, afectarán el orden de clasificación de la lotería.\n\n* Si lo contactan para una entrevista, se le pedirá que complete una solicitud más detallada y proporcione documentos de respaldo.",
"application.review.confirmation.whatHappensNext.waitlist": "### ¿Qué sucede a continuación?\n\n* Los solicitantes elegibles se colocarán en la lista de espera por orden de llegada hasta que se cubran los lugares de la lista de espera.\n\n* Las preferencias de alojamiento, si corresponde, afectarán el orden de la lista de espera.\n\n* Si lo contactan para una entrevista, se le pedirá que complete una solicitud más detallada y proporcione los documentos de respaldo.\n\n* Es posible que lo contactemos mientras esté en la lista de espera para confirmar que desea permanecer en la lista de espera.",
"application.review.confirmation.whatHappensNext.noPref.fcfs": "### ¿Qué sucede a continuación?\n\n* Los solicitantes elegibles serán contactados por orden de llegada hasta que se cubran las vacantes. \n\n* Si lo contactan para una entrevista, se le pedirá que complete una solicitud más detallada y proporcione documentos de respaldo.",
"application.review.confirmation.whatHappensNext.noPref.lottery": "### ¿Qué sucede a continuación?\n\n* Una vez que se cierre el período de solicitud, los solicitantes elegibles serán colocados en orden según el orden de clasificación de la lotería.\n\n* Si lo contactan para una entrevista, se le pedirá que complete una solicitud más detallada y proporcione documentos de respaldo.",
"application.review.confirmation.whatHappensNext.noPref.waitlist": "### ¿Qué sucede a continuación?\n\n* Los solicitantes elegibles se colocarán en la lista de espera por orden de llegada hasta que se cubran los lugares de la lista de espera.\n\n* Si lo contactan para una entrevista, se le pedirá que complete una solicitud más detallada y proporcione los documentos de respaldo.\n\n* Es posible que lo contactemos mientras esté en la lista de espera para confirmar que desea permanecer en la lista de espera.",
"application.review.confirmation.whatHappensNext.noPref.base": "### ¿Qué sucede a continuación?\n\n* Si lo contactan para una entrevista, se le pedirá que complete una solicitud más detallada y proporcione los documentos de respaldo.",
"application.review.confirmation.whatHappensNext.noPref.lottery": "### ¿Qué sucede a continuación?\n\n* Una vez que se cierre el período de solicitud, los solicitantes elegibles serán colocados en orden según el orden de clasificación de la lotería.\n\n* Si lo contactan para una entrevista, se le pedirá que complete una solicitud más detallada y proporcione documentos de respaldo.",
"application.review.confirmation.whatHappensNext.noPref.waitlist": "### ¿Qué sucede a continuación?\n\n* Los solicitantes elegibles se colocarán en la lista de espera por orden de llegada hasta que se cubran los lugares de la lista de espera.\n\n* Si lo contactan para una entrevista, se le pedirá que complete una solicitud más detallada y proporcione los documentos de respaldo.\n\n* Es posible que lo contactemos mientras esté en la lista de espera para confirmar que desea permanecer en la lista de espera.",
"application.review.confirmation.whatHappensNext.noPref.base": "### ¿Qué sucede a continuación?\n\n* Si lo contactan para una entrevista, se le pedirá que complete una solicitud más detallada y proporcione los documentos de respaldo.",
"application.review.demographics.ethnicityLabel": "¿Cuál de las siguientes opciones describe mejor su origen étnico?",
"application.review.demographics.ethnicityOptions.hispanicLatino": "Hispano o latino",
"application.review.demographics.ethnicityOptions.notHispanicLatino": "Ni hispano ni latino",
Expand Down Expand Up @@ -876,6 +876,18 @@
"listings.waitlist.unitsAndWaitlist": "Viviendas disponibles y lista de espera",
"lottery.applicationsThatQualifyForPreference": "Las solicitudes que reúnan los requisitos de esta preferencia recibirán una prioridad más alta.",
"lottery.viewPreferenceList": "Ver la lista de preferencias",
"months.january": "Enero",
"months.february": "Febrero",
"months.march": "Marzo",
"months.april": "Abril",
"months.may": "Mayo",
"months.june": "Junio",
"months.july": "Julio",
"months.august": "Agosto",
"months.september": "Septiembre",
"months.october": "Octubre",
"months.november": "Noviembre",
"months.december": "Diciembre",
"nav.browseProperties": "Buscar propiedades",
"nav.getFeedback": "Nos encantaría recibir sus comentarios",
"nav.listings": "Listados",
Expand Down
12 changes: 12 additions & 0 deletions shared-helpers/src/locales/general.json
Original file line number Diff line number Diff line change
Expand Up @@ -876,6 +876,18 @@
"listings.waitlist.unitsAndWaitlist": "Available units and waitlist",
"lottery.applicationsThatQualifyForPreference": "Applications that qualify for this preference will be given a higher priority.",
"lottery.viewPreferenceList": "View preference list",
"months.january": "January",
"months.february": "February",
"months.march": "March",
"months.april": "April",
"months.may": "May",
"months.june": "June",
"months.july": "July",
"months.august": "August",
"months.september": "September",
"months.october": "October",
"months.november": "November",
"months.december": "December",
"nav.browseProperties": "Browse properties",
"nav.getFeedback": "We'd love to get your feedback!",
"nav.listings": "Listings",
Expand Down
12 changes: 12 additions & 0 deletions shared-helpers/src/locales/tl.json
Original file line number Diff line number Diff line change
Expand Up @@ -876,6 +876,18 @@
"listings.waitlist.unitsAndWaitlist": "Mga available na unit at waitlist",
"lottery.applicationsThatQualifyForPreference": "Ang mga application na kwalipikado para sa pagpipilian na ito ay bibigyan ng mas mataas na prayoridad.",
"lottery.viewPreferenceList": "Tingnan ang listahan ng kagustuhan",
"months.january": "Enero",
"months.february": "Pebrero",
"months.march": "Marso",
"months.april": "Abril",
"months.may": "Mayo",
"months.june": "Hunyo",
"months.july": "Hulyo",
"months.august": "Agosto",
"months.september": "Setyembre",
"months.october": "Oktubre",
"months.november": "Nobyembre",
"months.december": "Disyembre",
"nav.browseProperties": "Mag-browse ng mga katangian",
"nav.getFeedback": "Gusto naming makuha ang iyong feedback!",
"nav.listings": "Mga listahan",
Expand Down
Loading
Loading