From ae45c0346b76a32f6f0e1c27c52e481599cfa8f0 Mon Sep 17 00:00:00 2001 From: Lint Action Date: Fri, 9 Jul 2021 12:38:11 +0000 Subject: [PATCH] Fix code style issues with Prettier --- CONTRIBUTING.md | 1 - backend/core/CHANGELOG.md | 4 - backend/core/README.md | 4 + .../src/migration/1599673143230-initial.ts | 115 +- .../migration/1600106987673-add_admin_flag.ts | 19 +- ...0773730888-AddRentalAssistanceToListing.ts | 16 +- .../1600891752631-change-ordinal-type.ts | 20 +- .../1602262127031-add-listing-events.ts | 33 +- .../1603364073148-fix-integer-types.ts | 41 +- ...3449837150-fix-integer-types-in-listing.ts | 49 +- ...604317983218-add-application-data-index.ts | 20 +- ...56541138-add-missing-listing-properties.ts | 25 +- ...1604669588916-add-properties-and-groups.ts | 143 +- .../migration/1604932002979-add-ami-chart.ts | 53 +- .../1605691160237-add-application-data.ts | 289 +- ...06144763359-update-listing-date-strings.ts | 73 +- ...990163-update-units-ami-charts-relation.ts | 35 +- ...989965-update-property-building-address.ts | 45 +- .../1606475798955-update-demographics-race.ts | 21 +- ...1606477233962-update-application-entity.ts | 37 +- .../1606488094709-update-applicant-email.ts | 17 +- ...607179140908-fix-application-text-types.ts | 197 +- ...cation-properties-nullable-for-partners.ts | 246 +- ...08200172832-add-listing-submission-date.ts | 19 +- ...3577-make-application-language-nullable.ts | 17 +- ...361232572-add-deleted-at-to-application.ts | 17 +- ...dd-listing-display-waitlist-size-column.ts | 19 +- ...610577576914-add-forget-password-fields.ts | 17 +- ...1610715331956-add-listing-leasing-agent.ts | 67 +- .../1610715660175-remove-address-from-user.ts | 33 +- ...27131-fix-yes-no-answers-db-column-type.ts | 29 +- ...324796-redefine-application-preferences.ts | 54 +- ...5543779-add-form-metadata-to-preference.ts | 27 +- ...8223-add-csv-formatting-type-to-listing.ts | 19 +- ...ily-remove-application-preference-table.ts | 22 +- ...056-make-ami-chart-items-a-jsonb-column.ts | 19 +- ...8403-make-listing-assets-a-jsonb-column.ts | 19 +- ...ting-application-methods-a-jsonb-column.ts | 19 +- ...8745-make-listing-events-a-jsonb-column.ts | 19 +- ...257-align-migration-with-latest-changes.ts | 59 +- ...617095866285-add-afs-related-migrations.ts | 69 +- ...617096743504-add-afs-related-migrations.ts | 41 +- ...517-add-application-marked-as-duplicate.ts | 19 +- ...move-application-unused-resolved-status.ts | 43 +- .../1618916649051-add-translations-table.ts | 25 +- .../1619094998058-alter-translations-table.ts | 37 +- .../1619453621997-add-user-language.ts | 17 +- ...619558199145-add-missing-listing-fields.ts | 21 +- ...005-add-county-code-to-listing-and-user.ts | 6 +- ...e-extra-data-in-application-preferences.ts | 17 +- .../1623247120126-add-assets-table.ts | 29 +- ...623279600284-listing-status-enum-closed.ts | 47 +- .../1624272587523-add-jurisdictions-table.ts | 74 +- ...6509-add-reserved-community-types-table.ts | 35 +- ...4542123483-seed-reserved-community-type.ts | 23 +- ...624546037-add-image-relation-to-listing.ts | 25 +- .../1624871726219-add-result-to-listing.ts | 25 +- ...ult-link-and-waitlist-fields-to-listing.ts | 37 +- ...pick-up-and-drop-off-columns-to-listing.ts | 26 +- ...lication-drop-off-and-mailing-addresses.ts | 32 +- ...-add-additional-notes-column-to-listing.ts | 21 +- backend/core/tsconfig.build.json | 9 +- backend/core/types/src/backend-swagger.ts | 3007 +++++++++-------- backend/proxy/README.md | 6 +- cypress.json | 2 +- docs/DeployServicesHeroku.md | 2 +- docs/Styling.md | 2 +- docs/pull_request_template.md | 2 + lerna.json | 7 +- sites/partners/cypress.json | 1 - sites/partners/cypress/tsconfig.json | 7 +- sites/public/CHANGELOG.md | 15 +- .../fixtures/applicationConfigBlank.json | 170 +- .../fixtures/applicationConfigFilled.json | 269 +- .../cypress/fixtures/applications/ada.json | 2 +- .../fixtures/applications/address.json | 2 +- .../alternate-contact-contact.json | 2 +- .../applications/alternate-contact-name.json | 2 +- .../applications/alternate-contact-type.json | 2 +- .../fixtures/applications/demographics.json | 2 +- .../cypress/fixtures/applications/income.json | 2 +- .../cypress/fixtures/applications/member.json | 2 +- .../cypress/fixtures/applications/name.json | 2 +- .../fixtures/applications/preferencesAll.json | 2 +- .../fixtures/applications/summary.json | 2 +- sites/public/cypress/fixtures/listing.json | 2738 ++++++++------- .../cypress/fixtures/listingConfig.json | 135 +- ui-components/.storybook/preview-body.html | 2 +- ui-components/.storybook/preview-head.html | 2 +- ui-components/CHANGELOG.md | 12 - .../actions/ExpandableContent.test.tsx | 12 +- ui-components/src/blocks/DashBlocks.scss | 2 +- ui-components/src/footers/SiteFooter.scss | 4 +- ui-components/src/global/accordion.scss | 2 +- ui-components/src/global/custom_counter.scss | 2 +- ui-components/src/global/homepage.scss | 2 +- ui-components/src/global/mixins.scss | 2 +- ui-components/src/global/vendor/ag_grid.scss | 21 +- ui-components/src/headers/Hero.scss | 3 +- ui-components/src/icons/HeaderBadge.scss | 2 +- ui-components/src/lists/PreferencesList.scss | 4 +- ui-components/src/locales/vi.json | 1492 ++++---- ui-components/src/locales/zh.json | 1492 ++++---- ui-components/src/navigation/Breadcrumbs.scss | 2 +- ui-components/src/navigation/FooterNav.scss | 4 +- .../src/navigation/LanguageNav.stories.tsx | 22 +- .../src/notifications/AlertNotice.scss | 3 +- .../src/notifications/ApplicationStatus.scss | 2 +- .../page_components/listing/ListingMap.scss | 4 +- .../listing/ListingsGroup.scss | 6 +- .../page_components/listing/ListingsList.scss | 2 +- .../ApplicationSection.stories.tsx | 2 +- ui-components/src/prototypes/AppCard.scss | 1 - ui-components/src/prototypes/Back.scss | 4 +- ui-components/src/prototypes/Back.stories.tsx | 4 +- ui-components/src/prototypes/ButtonPager.scss | 4 +- .../src/prototypes/FieldSection.scss | 2 +- .../src/prototypes/Message.stories.tsx | 6 +- .../src/prototypes/SideNav.stories.tsx | 4 +- ui-components/src/prototypes/SummaryCard.scss | 2 +- ui-components/src/sections/ListSection.scss | 2 +- 121 files changed, 6310 insertions(+), 5863 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a63d245903..aa0a6773a3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -27,4 +27,3 @@ Bloom uses the Circle CI system to automatically run tests on any pull requests. We use the ESlint linting system and the automatic code formatter Prettier (which the linter also enforces). **All** pull requests must pass linting to be accepted, so they don't create fix work for future contributors. If you're not using an IDE that integrates with these tools, please run eslint + prettier from the cli on all added or changed code before you submit a pull request. As much as we'll try to keep current, the linting rules can become out of date, and in this case you should file an issue with the adjustments you're looking for. We'll be looking for a resulting PR with a minimum of two commits - one to adjust the rules or tooling, and another that updates the codebase to match. If the latter changes are complex, please discuss in advance and break up the work into reasonably reviewable commits. - diff --git a/backend/core/CHANGELOG.md b/backend/core/CHANGELOG.md index 3fc0e99007..d8e770b940 100644 --- a/backend/core/CHANGELOG.md +++ b/backend/core/CHANGELOG.md @@ -7,10 +7,6 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline **Note:** Version bump only for package @bloom-housing/backend-core - - - - ## [0.0.9](https://github.com/bloom-housing/bloom/compare/v0.0.2...v0.0.9) (2020-04-21) **Note:** Version bump only for package @bloom-housing/listings-service diff --git a/backend/core/README.md b/backend/core/README.md index dfeae1468e..7f7ba251bb 100644 --- a/backend/core/README.md +++ b/backend/core/README.md @@ -42,16 +42,19 @@ yarn db:create ``` Seeding the DB: + ```shell script yarn db:seed ``` Generating a new migration: + ```shell script yarn db:migration:generate ``` Applying migrations: + ```shell script yarn db:migration:run ``` @@ -74,6 +77,7 @@ Test if Redis is working: You can connect a debugger to the backend by starting the backend server with `yarn debug`. To connect to it from VS Code, add a configuration to launch.json that looks like + ```shell script { "name": "Attach to Backend", diff --git a/backend/core/src/migration/1599673143230-initial.ts b/backend/core/src/migration/1599673143230-initial.ts index 6469c38ffa..9b7838bc69 100644 --- a/backend/core/src/migration/1599673143230-initial.ts +++ b/backend/core/src/migration/1599673143230-initial.ts @@ -1,44 +1,81 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class initial1599673143230 implements MigrationInterface { - name = 'initial1599673143230' + name = "initial1599673143230" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`CREATE TABLE "units" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "ami_percentage" text, "annual_income_min" text, "monthly_income_min" text, "floor" numeric, "annual_income_max" text, "max_occupancy" numeric, "min_occupancy" numeric, "monthly_rent" text, "num_bathrooms" numeric, "num_bedrooms" numeric, "number" text, "priority_type" text, "reserved_type" text, "sq_feet" numeric(8,2), "status" text, "unit_type" text, "ami_chart_id" numeric, "monthly_rent_as_percent_of_income" numeric(8,2), "listing_id" uuid, "bmr_program_chart" boolean, CONSTRAINT "PK_5a8f2f064919b587d93936cb223" PRIMARY KEY ("id"))`); - await queryRunner.query(`CREATE TABLE "user_accounts" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "password_hash" character varying NOT NULL, "email" character varying NOT NULL, "first_name" character varying NOT NULL, "middle_name" character varying, "last_name" character varying NOT NULL, "dob" TIMESTAMP NOT NULL, "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_125e915cf23ad1cfb43815ce59b" PRIMARY KEY ("id"))`); - await queryRunner.query(`CREATE TABLE "applications" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "app_url" text NOT NULL, "application" jsonb, "user_id" uuid, "listing_id" uuid, CONSTRAINT "PK_938c0a27255637bde919591888f" PRIMARY KEY ("id"))`); - await queryRunner.query(`CREATE TABLE "assets" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "label" text NOT NULL, "file_id" text NOT NULL, "listing_id" uuid, CONSTRAINT "PK_da96729a8b113377cfb6a62439c" PRIMARY KEY ("id"))`); - await queryRunner.query(`CREATE TABLE "preferences" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "ordinal" text, "title" text, "subtitle" text, "description" text, "links" jsonb, "listing_id" uuid, CONSTRAINT "PK_17f8855e4145192bbabd91a51be" PRIMARY KEY ("id"))`); - await queryRunner.query(`CREATE TYPE "listings_status_enum" AS ENUM('active', 'pending')`); - await queryRunner.query(`CREATE TABLE "listings" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "accessibility" text, "amenities" text, "application_due_date" text, "application_open_date" text, "application_fee" text, "application_organization" text, "application_address" jsonb, "blank_paper_application_can_be_picked_up" boolean, "building_address" jsonb, "building_total_units" numeric, "building_selection_criteria" text, "costs_not_included" text, "credit_history" text, "criminal_background" text, "deposit_min" text, "deposit_max" text, "developer" text, "disable_units_accordion" boolean, "household_size_max" numeric, "household_size_min" numeric, "image_url" text, "leasing_agent_address" jsonb, "leasing_agent_email" text, "leasing_agent_name" text, "leasing_agent_office_hours" text, "leasing_agent_phone" text, "leasing_agent_title" text, "name" text, "neighborhood" text, "pet_policy" text, "postmarked_applications_received_by_date" text, "program_rules" text, "rental_history" text, "required_documents" text, "smoking_policy" text, "units_available" numeric, "unit_amenities" text, "waitlist_current_size" numeric, "waitlist_max_size" numeric, "what_to_expect" jsonb, "year_built" numeric, "status" "listings_status_enum" NOT NULL DEFAULT 'pending', CONSTRAINT "PK_520ecac6c99ec90bcf5a603cdcb" PRIMARY KEY ("id"))`); - await queryRunner.query(`CREATE TYPE "application_methods_type_enum" AS ENUM('Internal', 'FileDownload', 'ExternalLink', 'PaperPickup', 'POBox', 'LeasingAgent')`); - await queryRunner.query(`CREATE TABLE "application_methods" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "type" "application_methods_type_enum" NOT NULL, "label" text, "external_reference" text, "accepts_postmarked_applications" boolean, "listing_id" uuid, CONSTRAINT "PK_c58506819ffaba3863a4edc5e9e" PRIMARY KEY ("id"))`); - await queryRunner.query(`CREATE TABLE "revoked_tokens" ("token" character varying NOT NULL, "revoked_at" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_f38f625b4823c8903e819bfedd1" PRIMARY KEY ("token"))`); - await queryRunner.query(`ALTER TABLE "units" ADD CONSTRAINT "FK_9aebcde52d6e054e5ac5d26228c" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE CASCADE ON UPDATE CASCADE`); - await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "FK_9e7594d5b474d9cbebba15c1ae7" FOREIGN KEY ("user_id") REFERENCES "user_accounts"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "FK_cc9d65c58d8deb0ef5353e9037d" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "assets" ADD CONSTRAINT "FK_8cb54e950245d30651b903a4c61" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "preferences" ADD CONSTRAINT "FK_91017f2182ec7b0dcd4abe68b5a" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE CASCADE ON UPDATE CASCADE`); - await queryRunner.query(`ALTER TABLE "application_methods" ADD CONSTRAINT "FK_3057650361c2aeab15dfee5c3cc" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "application_methods" DROP CONSTRAINT "FK_3057650361c2aeab15dfee5c3cc"`); - await queryRunner.query(`ALTER TABLE "preferences" DROP CONSTRAINT "FK_91017f2182ec7b0dcd4abe68b5a"`); - await queryRunner.query(`ALTER TABLE "assets" DROP CONSTRAINT "FK_8cb54e950245d30651b903a4c61"`); - await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "FK_cc9d65c58d8deb0ef5353e9037d"`); - await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "FK_9e7594d5b474d9cbebba15c1ae7"`); - await queryRunner.query(`ALTER TABLE "units" DROP CONSTRAINT "FK_9aebcde52d6e054e5ac5d26228c"`); - await queryRunner.query(`DROP TABLE "revoked_tokens"`); - await queryRunner.query(`DROP TABLE "application_methods"`); - await queryRunner.query(`DROP TYPE "application_methods_type_enum"`); - await queryRunner.query(`DROP TABLE "listings"`); - await queryRunner.query(`DROP TYPE "listings_status_enum"`); - await queryRunner.query(`DROP TABLE "preferences"`); - await queryRunner.query(`DROP TABLE "assets"`); - await queryRunner.query(`DROP TABLE "applications"`); - await queryRunner.query(`DROP TABLE "user_accounts"`); - await queryRunner.query(`DROP TABLE "units"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TABLE "units" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "ami_percentage" text, "annual_income_min" text, "monthly_income_min" text, "floor" numeric, "annual_income_max" text, "max_occupancy" numeric, "min_occupancy" numeric, "monthly_rent" text, "num_bathrooms" numeric, "num_bedrooms" numeric, "number" text, "priority_type" text, "reserved_type" text, "sq_feet" numeric(8,2), "status" text, "unit_type" text, "ami_chart_id" numeric, "monthly_rent_as_percent_of_income" numeric(8,2), "listing_id" uuid, "bmr_program_chart" boolean, CONSTRAINT "PK_5a8f2f064919b587d93936cb223" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `CREATE TABLE "user_accounts" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "password_hash" character varying NOT NULL, "email" character varying NOT NULL, "first_name" character varying NOT NULL, "middle_name" character varying, "last_name" character varying NOT NULL, "dob" TIMESTAMP NOT NULL, "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_125e915cf23ad1cfb43815ce59b" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `CREATE TABLE "applications" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "app_url" text NOT NULL, "application" jsonb, "user_id" uuid, "listing_id" uuid, CONSTRAINT "PK_938c0a27255637bde919591888f" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `CREATE TABLE "assets" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "label" text NOT NULL, "file_id" text NOT NULL, "listing_id" uuid, CONSTRAINT "PK_da96729a8b113377cfb6a62439c" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `CREATE TABLE "preferences" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "ordinal" text, "title" text, "subtitle" text, "description" text, "links" jsonb, "listing_id" uuid, CONSTRAINT "PK_17f8855e4145192bbabd91a51be" PRIMARY KEY ("id"))` + ) + await queryRunner.query(`CREATE TYPE "listings_status_enum" AS ENUM('active', 'pending')`) + await queryRunner.query( + `CREATE TABLE "listings" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "accessibility" text, "amenities" text, "application_due_date" text, "application_open_date" text, "application_fee" text, "application_organization" text, "application_address" jsonb, "blank_paper_application_can_be_picked_up" boolean, "building_address" jsonb, "building_total_units" numeric, "building_selection_criteria" text, "costs_not_included" text, "credit_history" text, "criminal_background" text, "deposit_min" text, "deposit_max" text, "developer" text, "disable_units_accordion" boolean, "household_size_max" numeric, "household_size_min" numeric, "image_url" text, "leasing_agent_address" jsonb, "leasing_agent_email" text, "leasing_agent_name" text, "leasing_agent_office_hours" text, "leasing_agent_phone" text, "leasing_agent_title" text, "name" text, "neighborhood" text, "pet_policy" text, "postmarked_applications_received_by_date" text, "program_rules" text, "rental_history" text, "required_documents" text, "smoking_policy" text, "units_available" numeric, "unit_amenities" text, "waitlist_current_size" numeric, "waitlist_max_size" numeric, "what_to_expect" jsonb, "year_built" numeric, "status" "listings_status_enum" NOT NULL DEFAULT 'pending', CONSTRAINT "PK_520ecac6c99ec90bcf5a603cdcb" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `CREATE TYPE "application_methods_type_enum" AS ENUM('Internal', 'FileDownload', 'ExternalLink', 'PaperPickup', 'POBox', 'LeasingAgent')` + ) + await queryRunner.query( + `CREATE TABLE "application_methods" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "type" "application_methods_type_enum" NOT NULL, "label" text, "external_reference" text, "accepts_postmarked_applications" boolean, "listing_id" uuid, CONSTRAINT "PK_c58506819ffaba3863a4edc5e9e" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `CREATE TABLE "revoked_tokens" ("token" character varying NOT NULL, "revoked_at" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_f38f625b4823c8903e819bfedd1" PRIMARY KEY ("token"))` + ) + await queryRunner.query( + `ALTER TABLE "units" ADD CONSTRAINT "FK_9aebcde52d6e054e5ac5d26228c" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE CASCADE ON UPDATE CASCADE` + ) + await queryRunner.query( + `ALTER TABLE "applications" ADD CONSTRAINT "FK_9e7594d5b474d9cbebba15c1ae7" FOREIGN KEY ("user_id") REFERENCES "user_accounts"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "applications" ADD CONSTRAINT "FK_cc9d65c58d8deb0ef5353e9037d" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "assets" ADD CONSTRAINT "FK_8cb54e950245d30651b903a4c61" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "preferences" ADD CONSTRAINT "FK_91017f2182ec7b0dcd4abe68b5a" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE CASCADE ON UPDATE CASCADE` + ) + await queryRunner.query( + `ALTER TABLE "application_methods" ADD CONSTRAINT "FK_3057650361c2aeab15dfee5c3cc" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "application_methods" DROP CONSTRAINT "FK_3057650361c2aeab15dfee5c3cc"` + ) + await queryRunner.query( + `ALTER TABLE "preferences" DROP CONSTRAINT "FK_91017f2182ec7b0dcd4abe68b5a"` + ) + await queryRunner.query(`ALTER TABLE "assets" DROP CONSTRAINT "FK_8cb54e950245d30651b903a4c61"`) + await queryRunner.query( + `ALTER TABLE "applications" DROP CONSTRAINT "FK_cc9d65c58d8deb0ef5353e9037d"` + ) + await queryRunner.query( + `ALTER TABLE "applications" DROP CONSTRAINT "FK_9e7594d5b474d9cbebba15c1ae7"` + ) + await queryRunner.query(`ALTER TABLE "units" DROP CONSTRAINT "FK_9aebcde52d6e054e5ac5d26228c"`) + await queryRunner.query(`DROP TABLE "revoked_tokens"`) + await queryRunner.query(`DROP TABLE "application_methods"`) + await queryRunner.query(`DROP TYPE "application_methods_type_enum"`) + await queryRunner.query(`DROP TABLE "listings"`) + await queryRunner.query(`DROP TYPE "listings_status_enum"`) + await queryRunner.query(`DROP TABLE "preferences"`) + await queryRunner.query(`DROP TABLE "assets"`) + await queryRunner.query(`DROP TABLE "applications"`) + await queryRunner.query(`DROP TABLE "user_accounts"`) + await queryRunner.query(`DROP TABLE "units"`) + } } diff --git a/backend/core/src/migration/1600106987673-add_admin_flag.ts b/backend/core/src/migration/1600106987673-add_admin_flag.ts index 1075a1e2d7..02a4de676d 100644 --- a/backend/core/src/migration/1600106987673-add_admin_flag.ts +++ b/backend/core/src/migration/1600106987673-add_admin_flag.ts @@ -1,14 +1,15 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addAdminFlag1600106987673 implements MigrationInterface { - name = 'addAdminFlag1600106987673' + name = "addAdminFlag1600106987673" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "user_accounts" ADD "is_admin" boolean NOT NULL DEFAULT false`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "user_accounts" DROP COLUMN "is_admin"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "user_accounts" ADD "is_admin" boolean NOT NULL DEFAULT false` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "user_accounts" DROP COLUMN "is_admin"`) + } } diff --git a/backend/core/src/migration/1600773730888-AddRentalAssistanceToListing.ts b/backend/core/src/migration/1600773730888-AddRentalAssistanceToListing.ts index 2c3a21eb0e..7f55eedd3e 100644 --- a/backend/core/src/migration/1600773730888-AddRentalAssistanceToListing.ts +++ b/backend/core/src/migration/1600773730888-AddRentalAssistanceToListing.ts @@ -1,13 +1,11 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class AddRentalAssistanceToListing1600773730888 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "listings" ADD COLUMN "rental_assistance" text`) + } - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" ADD COLUMN "rental_assistance" text`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "rental_assistance"`); - } - + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "rental_assistance"`) + } } diff --git a/backend/core/src/migration/1600891752631-change-ordinal-type.ts b/backend/core/src/migration/1600891752631-change-ordinal-type.ts index 3ef7eef48b..62e3d4b6d4 100644 --- a/backend/core/src/migration/1600891752631-change-ordinal-type.ts +++ b/backend/core/src/migration/1600891752631-change-ordinal-type.ts @@ -1,13 +1,13 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class changeOrdinalType1600891752631 implements MigrationInterface { - - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "preferences" ALTER COLUMN "ordinal" TYPE numeric USING (LEFT(ordinal,1)::NUMERIC)`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "preferences" ALTER COLUMN "ordinal" TYPE text`); - } - + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "preferences" ALTER COLUMN "ordinal" TYPE numeric USING (LEFT(ordinal,1)::NUMERIC)` + ) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "preferences" ALTER COLUMN "ordinal" TYPE text`) + } } diff --git a/backend/core/src/migration/1602262127031-add-listing-events.ts b/backend/core/src/migration/1602262127031-add-listing-events.ts index 5554b00ea5..d8d4f2814b 100644 --- a/backend/core/src/migration/1602262127031-add-listing-events.ts +++ b/backend/core/src/migration/1602262127031-add-listing-events.ts @@ -1,18 +1,25 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addListingEvents1602262127031 implements MigrationInterface { - name = 'addListingEvents1602262127031' + name = "addListingEvents1602262127031" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`CREATE TYPE "listing_events_type_enum" AS ENUM('openHouse', 'publicLottery')`); - await queryRunner.query(`CREATE TABLE "listing_events" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "type" "listing_events_type_enum" NOT NULL, "start_time" TIMESTAMP NOT NULL, "end_time" TIMESTAMP NOT NULL, "url" text, "note" text, "listing_id" uuid, CONSTRAINT "PK_a9a209828028e14e2caf8def25c" PRIMARY KEY ("id"))`); - await queryRunner.query(`ALTER TABLE "listing_events" ADD CONSTRAINT "FK_d0b9892bc613e4d9f8b5c25d03e" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE CASCADE ON UPDATE CASCADE`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listing_events" DROP CONSTRAINT "FK_d0b9892bc613e4d9f8b5c25d03e"`); - await queryRunner.query(`DROP TABLE "listing_events"`); - await queryRunner.query(`DROP TYPE "listing_events_type_enum"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TYPE "listing_events_type_enum" AS ENUM('openHouse', 'publicLottery')` + ) + await queryRunner.query( + `CREATE TABLE "listing_events" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "type" "listing_events_type_enum" NOT NULL, "start_time" TIMESTAMP NOT NULL, "end_time" TIMESTAMP NOT NULL, "url" text, "note" text, "listing_id" uuid, CONSTRAINT "PK_a9a209828028e14e2caf8def25c" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `ALTER TABLE "listing_events" ADD CONSTRAINT "FK_d0b9892bc613e4d9f8b5c25d03e" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE CASCADE ON UPDATE CASCADE` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "listing_events" DROP CONSTRAINT "FK_d0b9892bc613e4d9f8b5c25d03e"` + ) + await queryRunner.query(`DROP TABLE "listing_events"`) + await queryRunner.query(`DROP TYPE "listing_events_type_enum"`) + } } diff --git a/backend/core/src/migration/1603364073148-fix-integer-types.ts b/backend/core/src/migration/1603364073148-fix-integer-types.ts index cba33dc951..b21811bd25 100644 --- a/backend/core/src/migration/1603364073148-fix-integer-types.ts +++ b/backend/core/src/migration/1603364073148-fix-integer-types.ts @@ -1,26 +1,25 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class fixIntegerTypes1603364073148 implements MigrationInterface { - name = 'fixIntegerTypes1603364073148' + name = "fixIntegerTypes1603364073148" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "floor" TYPE integer`); - await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "max_occupancy" TYPE integer`); - await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "min_occupancy" TYPE integer`); - await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "num_bathrooms" TYPE integer`); - await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "num_bedrooms" TYPE integer`); - await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "ami_chart_id" TYPE integer`); - await queryRunner.query(`ALTER TABLE "preferences" ALTER COLUMN "ordinal" TYPE integer`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "floor" TYPE numeric`); - await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "max_occupancy" TYPE numeric`); - await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "min_occupancy" TYPE numeric`); - await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "num_bathrooms" TYPE numeric`); - await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "num_bedrooms" TYPE numeric`); - await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "ami_chart_id" TYPE numeric`); - await queryRunner.query(`ALTER TABLE "preferences" ALTER COLUMN "ordinal" TYPE numeric`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "floor" TYPE integer`) + await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "max_occupancy" TYPE integer`) + await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "min_occupancy" TYPE integer`) + await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "num_bathrooms" TYPE integer`) + await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "num_bedrooms" TYPE integer`) + await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "ami_chart_id" TYPE integer`) + await queryRunner.query(`ALTER TABLE "preferences" ALTER COLUMN "ordinal" TYPE integer`) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "floor" TYPE numeric`) + await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "max_occupancy" TYPE numeric`) + await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "min_occupancy" TYPE numeric`) + await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "num_bathrooms" TYPE numeric`) + await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "num_bedrooms" TYPE numeric`) + await queryRunner.query(`ALTER TABLE "units" ALTER COLUMN "ami_chart_id" TYPE numeric`) + await queryRunner.query(`ALTER TABLE "preferences" ALTER COLUMN "ordinal" TYPE numeric`) + } } diff --git a/backend/core/src/migration/1603449837150-fix-integer-types-in-listing.ts b/backend/core/src/migration/1603449837150-fix-integer-types-in-listing.ts index dd1174f43c..51c345dfc7 100644 --- a/backend/core/src/migration/1603449837150-fix-integer-types-in-listing.ts +++ b/backend/core/src/migration/1603449837150-fix-integer-types-in-listing.ts @@ -1,26 +1,33 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class fixIntegerTypesInListing1603449837150 implements MigrationInterface { - name = 'fixIntegerTypesInListing1603449837150' + name = "fixIntegerTypesInListing1603449837150" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "building_total_units" TYPE integer`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "household_size_max" TYPE integer`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "household_size_min" TYPE integer`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "units_available" TYPE integer`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "waitlist_current_size" TYPE integer`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "waitlist_max_size" TYPE integer`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "year_built" TYPE integer`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "year_built" TYPE numeric`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "waitlist_max_size" TYPE numeric`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "waitlist_current_size" TYPE numeric`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "units_available" TYPE numeric`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "household_size_min" TYPE numeric`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "household_size_max" TYPE numeric`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "building_total_units" TYPE numeric`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "listings" ALTER COLUMN "building_total_units" TYPE integer` + ) + await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "household_size_max" TYPE integer`) + await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "household_size_min" TYPE integer`) + await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "units_available" TYPE integer`) + await queryRunner.query( + `ALTER TABLE "listings" ALTER COLUMN "waitlist_current_size" TYPE integer` + ) + await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "waitlist_max_size" TYPE integer`) + await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "year_built" TYPE integer`) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "year_built" TYPE numeric`) + await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "waitlist_max_size" TYPE numeric`) + await queryRunner.query( + `ALTER TABLE "listings" ALTER COLUMN "waitlist_current_size" TYPE numeric` + ) + await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "units_available" TYPE numeric`) + await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "household_size_min" TYPE numeric`) + await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "household_size_max" TYPE numeric`) + await queryRunner.query( + `ALTER TABLE "listings" ALTER COLUMN "building_total_units" TYPE numeric` + ) + } } diff --git a/backend/core/src/migration/1604317983218-add-application-data-index.ts b/backend/core/src/migration/1604317983218-add-application-data-index.ts index 0999b36024..576e998db6 100644 --- a/backend/core/src/migration/1604317983218-add-application-data-index.ts +++ b/backend/core/src/migration/1604317983218-add-application-data-index.ts @@ -1,13 +1,13 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addApplicationDataIndex1604317983218 implements MigrationInterface { - - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`CREATE INDEX ON "applications" USING GIN ( to_tsvector('english', application) )`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`DROP INDEX applications_to_tsvector_idx`); - } - + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE INDEX ON "applications" USING GIN ( to_tsvector('english', application) )` + ) + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP INDEX applications_to_tsvector_idx`) + } } diff --git a/backend/core/src/migration/1604656541138-add-missing-listing-properties.ts b/backend/core/src/migration/1604656541138-add-missing-listing-properties.ts index 012c02c9e5..93d7e504c6 100644 --- a/backend/core/src/migration/1604656541138-add-missing-listing-properties.ts +++ b/backend/core/src/migration/1604656541138-add-missing-listing-properties.ts @@ -1,16 +1,19 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addMissingListingProperties1604656541138 implements MigrationInterface { - name = 'addMissingListingProperties1604656541138' + name = "addMissingListingProperties1604656541138" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" ADD "application_pick_up_address" jsonb`); - await queryRunner.query(`ALTER TABLE "listings" ADD "application_pick_up_address_office_hours" text`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_pick_up_address_office_hours"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_pick_up_address"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "listings" ADD "application_pick_up_address" jsonb`) + await queryRunner.query( + `ALTER TABLE "listings" ADD "application_pick_up_address_office_hours" text` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "listings" DROP COLUMN "application_pick_up_address_office_hours"` + ) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_pick_up_address"`) + } } diff --git a/backend/core/src/migration/1604669588916-add-properties-and-groups.ts b/backend/core/src/migration/1604669588916-add-properties-and-groups.ts index a3bf92bb61..4d3ab4c07d 100644 --- a/backend/core/src/migration/1604669588916-add-properties-and-groups.ts +++ b/backend/core/src/migration/1604669588916-add-properties-and-groups.ts @@ -1,64 +1,89 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addPropertiesAndGroups1604669588916 implements MigrationInterface { - name = 'addPropertiesAndGroups1604669588916' + name = "addPropertiesAndGroups1604669588916" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "units" DROP CONSTRAINT "FK_9aebcde52d6e054e5ac5d26228c"`); - await queryRunner.query(`ALTER TABLE "units" RENAME COLUMN "listing_id" TO "property_id"`); - await queryRunner.query(`CREATE TABLE "property_group" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "name" character varying NOT NULL, CONSTRAINT "PK_30c4d5d238ffc95e72d94837e54" PRIMARY KEY ("id"))`); - await queryRunner.query(`CREATE TABLE "property" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "accessibility" text, "amenities" text, "building_address" jsonb, "building_total_units" integer, "developer" text, "household_size_max" integer, "household_size_min" integer, "neighborhood" text, "pet_policy" text, "smoking_policy" text, "units_available" integer, "unit_amenities" text, "year_built" integer, CONSTRAINT "PK_d80743e6191258a5003d5843b4f" PRIMARY KEY ("id"))`); - await queryRunner.query(`CREATE TABLE "property_group_properties_property" ("property_group_id" uuid NOT NULL, "property_id" uuid NOT NULL, CONSTRAINT "PK_7d88a8faf587c93493dd120dd83" PRIMARY KEY ("property_group_id", "property_id"))`); - await queryRunner.query(`CREATE INDEX "IDX_84e6a1949911510df0eff691f0" ON "property_group_properties_property" ("property_group_id") `); - await queryRunner.query(`CREATE INDEX "IDX_c99e75ee805d56fea44bf2970f" ON "property_group_properties_property" ("property_id") `); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "accessibility"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "amenities"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "building_address"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "building_total_units"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "developer"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "household_size_max"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "household_size_min"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "image_url"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "neighborhood"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "pet_policy"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "smoking_policy"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "units_available"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "unit_amenities"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "year_built"`); - await queryRunner.query(`ALTER TABLE "listings" ADD "property_id" uuid NOT NULL`); - await queryRunner.query(`ALTER TABLE "units" ADD CONSTRAINT "FK_f221e6d7bfd686266003b982b5f" FOREIGN KEY ("property_id") REFERENCES "property"("id") ON DELETE CASCADE ON UPDATE CASCADE`); - await queryRunner.query(`ALTER TABLE "listings" ADD CONSTRAINT "FK_9eef913a9013d6e3d09a92ec075" FOREIGN KEY ("property_id") REFERENCES "property"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "property_group_properties_property" ADD CONSTRAINT "FK_84e6a1949911510df0eff691f0d" FOREIGN KEY ("property_group_id") REFERENCES "property_group"("id") ON DELETE CASCADE ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "property_group_properties_property" ADD CONSTRAINT "FK_c99e75ee805d56fea44bf2970f2" FOREIGN KEY ("property_id") REFERENCES "property"("id") ON DELETE CASCADE ON UPDATE NO ACTION`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "property_group_properties_property" DROP CONSTRAINT "FK_c99e75ee805d56fea44bf2970f2"`); - await queryRunner.query(`ALTER TABLE "property_group_properties_property" DROP CONSTRAINT "FK_84e6a1949911510df0eff691f0d"`); - await queryRunner.query(`ALTER TABLE "listings" DROP CONSTRAINT "FK_9eef913a9013d6e3d09a92ec075"`); - await queryRunner.query(`ALTER TABLE "units" DROP CONSTRAINT "FK_f221e6d7bfd686266003b982b5f"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "property_id"`); - await queryRunner.query(`ALTER TABLE "listings" ADD "year_built" integer`); - await queryRunner.query(`ALTER TABLE "listings" ADD "unit_amenities" text`); - await queryRunner.query(`ALTER TABLE "listings" ADD "units_available" integer`); - await queryRunner.query(`ALTER TABLE "listings" ADD "smoking_policy" text`); - await queryRunner.query(`ALTER TABLE "listings" ADD "pet_policy" text`); - await queryRunner.query(`ALTER TABLE "listings" ADD "neighborhood" text`); - await queryRunner.query(`ALTER TABLE "listings" ADD "image_url" text`); - await queryRunner.query(`ALTER TABLE "listings" ADD "household_size_min" integer`); - await queryRunner.query(`ALTER TABLE "listings" ADD "household_size_max" integer`); - await queryRunner.query(`ALTER TABLE "listings" ADD "developer" text`); - await queryRunner.query(`ALTER TABLE "listings" ADD "building_total_units" integer`); - await queryRunner.query(`ALTER TABLE "listings" ADD "building_address" jsonb`); - await queryRunner.query(`ALTER TABLE "listings" ADD "amenities" text`); - await queryRunner.query(`ALTER TABLE "listings" ADD "accessibility" text`); - await queryRunner.query(`DROP INDEX "IDX_c99e75ee805d56fea44bf2970f"`); - await queryRunner.query(`DROP INDEX "IDX_84e6a1949911510df0eff691f0"`); - await queryRunner.query(`DROP TABLE "property_group_properties_property"`); - await queryRunner.query(`DROP TABLE "property"`); - await queryRunner.query(`DROP TABLE "property_group"`); - await queryRunner.query(`ALTER TABLE "units" RENAME COLUMN "property_id" TO "listing_id"`); - await queryRunner.query(`ALTER TABLE "units" ADD CONSTRAINT "FK_9aebcde52d6e054e5ac5d26228c" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE CASCADE ON UPDATE CASCADE`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "units" DROP CONSTRAINT "FK_9aebcde52d6e054e5ac5d26228c"`) + await queryRunner.query(`ALTER TABLE "units" RENAME COLUMN "listing_id" TO "property_id"`) + await queryRunner.query( + `CREATE TABLE "property_group" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "name" character varying NOT NULL, CONSTRAINT "PK_30c4d5d238ffc95e72d94837e54" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `CREATE TABLE "property" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "accessibility" text, "amenities" text, "building_address" jsonb, "building_total_units" integer, "developer" text, "household_size_max" integer, "household_size_min" integer, "neighborhood" text, "pet_policy" text, "smoking_policy" text, "units_available" integer, "unit_amenities" text, "year_built" integer, CONSTRAINT "PK_d80743e6191258a5003d5843b4f" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `CREATE TABLE "property_group_properties_property" ("property_group_id" uuid NOT NULL, "property_id" uuid NOT NULL, CONSTRAINT "PK_7d88a8faf587c93493dd120dd83" PRIMARY KEY ("property_group_id", "property_id"))` + ) + await queryRunner.query( + `CREATE INDEX "IDX_84e6a1949911510df0eff691f0" ON "property_group_properties_property" ("property_group_id") ` + ) + await queryRunner.query( + `CREATE INDEX "IDX_c99e75ee805d56fea44bf2970f" ON "property_group_properties_property" ("property_id") ` + ) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "accessibility"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "amenities"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "building_address"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "building_total_units"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "developer"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "household_size_max"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "household_size_min"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "image_url"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "neighborhood"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "pet_policy"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "smoking_policy"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "units_available"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "unit_amenities"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "year_built"`) + await queryRunner.query(`ALTER TABLE "listings" ADD "property_id" uuid NOT NULL`) + await queryRunner.query( + `ALTER TABLE "units" ADD CONSTRAINT "FK_f221e6d7bfd686266003b982b5f" FOREIGN KEY ("property_id") REFERENCES "property"("id") ON DELETE CASCADE ON UPDATE CASCADE` + ) + await queryRunner.query( + `ALTER TABLE "listings" ADD CONSTRAINT "FK_9eef913a9013d6e3d09a92ec075" FOREIGN KEY ("property_id") REFERENCES "property"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "property_group_properties_property" ADD CONSTRAINT "FK_84e6a1949911510df0eff691f0d" FOREIGN KEY ("property_group_id") REFERENCES "property_group"("id") ON DELETE CASCADE ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "property_group_properties_property" ADD CONSTRAINT "FK_c99e75ee805d56fea44bf2970f2" FOREIGN KEY ("property_id") REFERENCES "property"("id") ON DELETE CASCADE ON UPDATE NO ACTION` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "property_group_properties_property" DROP CONSTRAINT "FK_c99e75ee805d56fea44bf2970f2"` + ) + await queryRunner.query( + `ALTER TABLE "property_group_properties_property" DROP CONSTRAINT "FK_84e6a1949911510df0eff691f0d"` + ) + await queryRunner.query( + `ALTER TABLE "listings" DROP CONSTRAINT "FK_9eef913a9013d6e3d09a92ec075"` + ) + await queryRunner.query(`ALTER TABLE "units" DROP CONSTRAINT "FK_f221e6d7bfd686266003b982b5f"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "property_id"`) + await queryRunner.query(`ALTER TABLE "listings" ADD "year_built" integer`) + await queryRunner.query(`ALTER TABLE "listings" ADD "unit_amenities" text`) + await queryRunner.query(`ALTER TABLE "listings" ADD "units_available" integer`) + await queryRunner.query(`ALTER TABLE "listings" ADD "smoking_policy" text`) + await queryRunner.query(`ALTER TABLE "listings" ADD "pet_policy" text`) + await queryRunner.query(`ALTER TABLE "listings" ADD "neighborhood" text`) + await queryRunner.query(`ALTER TABLE "listings" ADD "image_url" text`) + await queryRunner.query(`ALTER TABLE "listings" ADD "household_size_min" integer`) + await queryRunner.query(`ALTER TABLE "listings" ADD "household_size_max" integer`) + await queryRunner.query(`ALTER TABLE "listings" ADD "developer" text`) + await queryRunner.query(`ALTER TABLE "listings" ADD "building_total_units" integer`) + await queryRunner.query(`ALTER TABLE "listings" ADD "building_address" jsonb`) + await queryRunner.query(`ALTER TABLE "listings" ADD "amenities" text`) + await queryRunner.query(`ALTER TABLE "listings" ADD "accessibility" text`) + await queryRunner.query(`DROP INDEX "IDX_c99e75ee805d56fea44bf2970f"`) + await queryRunner.query(`DROP INDEX "IDX_84e6a1949911510df0eff691f0"`) + await queryRunner.query(`DROP TABLE "property_group_properties_property"`) + await queryRunner.query(`DROP TABLE "property"`) + await queryRunner.query(`DROP TABLE "property_group"`) + await queryRunner.query(`ALTER TABLE "units" RENAME COLUMN "property_id" TO "listing_id"`) + await queryRunner.query( + `ALTER TABLE "units" ADD CONSTRAINT "FK_9aebcde52d6e054e5ac5d26228c" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE CASCADE ON UPDATE CASCADE` + ) + } } diff --git a/backend/core/src/migration/1604932002979-add-ami-chart.ts b/backend/core/src/migration/1604932002979-add-ami-chart.ts index e07964d451..7f22c38f05 100644 --- a/backend/core/src/migration/1604932002979-add-ami-chart.ts +++ b/backend/core/src/migration/1604932002979-add-ami-chart.ts @@ -1,24 +1,39 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addAmiChart1604932002979 implements MigrationInterface { - name = 'addAmiChart1604932002979' + name = "addAmiChart1604932002979" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`CREATE TABLE "ami_chart" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "name" character varying NOT NULL, CONSTRAINT "PK_e079bbfad233fdc79072acb33b5" PRIMARY KEY ("id"))`); - await queryRunner.query(`CREATE TABLE "ami_chart_item" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "percent_of_ami" integer NOT NULL, "household_size" integer NOT NULL, "income" integer NOT NULL, "ami_chart_id" uuid, CONSTRAINT "PK_50c1f3d69f4675d775e08d7465e" PRIMARY KEY ("id"))`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "blank_paper_application_can_be_picked_up"`); - await queryRunner.query(`ALTER TABLE "property" ADD "ami_chart_id" uuid`); - await queryRunner.query(`ALTER TABLE "property" ADD CONSTRAINT "FK_d639fcd25af4127bc979d5146a9" FOREIGN KEY ("ami_chart_id") REFERENCES "ami_chart"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "ami_chart_item" ADD CONSTRAINT "FK_98d10c0d335d9e4aca6fb5335b3" FOREIGN KEY ("ami_chart_id") REFERENCES "ami_chart"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "ami_chart_item" DROP CONSTRAINT "FK_98d10c0d335d9e4aca6fb5335b3"`); - await queryRunner.query(`ALTER TABLE "property" DROP CONSTRAINT "FK_d639fcd25af4127bc979d5146a9"`); - await queryRunner.query(`ALTER TABLE "property" DROP COLUMN "ami_chart_id"`); - await queryRunner.query(`ALTER TABLE "listings" ADD "blank_paper_application_can_be_picked_up" boolean`); - await queryRunner.query(`DROP TABLE "ami_chart_item"`); - await queryRunner.query(`DROP TABLE "ami_chart"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TABLE "ami_chart" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "name" character varying NOT NULL, CONSTRAINT "PK_e079bbfad233fdc79072acb33b5" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `CREATE TABLE "ami_chart_item" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "percent_of_ami" integer NOT NULL, "household_size" integer NOT NULL, "income" integer NOT NULL, "ami_chart_id" uuid, CONSTRAINT "PK_50c1f3d69f4675d775e08d7465e" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `ALTER TABLE "listings" DROP COLUMN "blank_paper_application_can_be_picked_up"` + ) + await queryRunner.query(`ALTER TABLE "property" ADD "ami_chart_id" uuid`) + await queryRunner.query( + `ALTER TABLE "property" ADD CONSTRAINT "FK_d639fcd25af4127bc979d5146a9" FOREIGN KEY ("ami_chart_id") REFERENCES "ami_chart"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "ami_chart_item" ADD CONSTRAINT "FK_98d10c0d335d9e4aca6fb5335b3" FOREIGN KEY ("ami_chart_id") REFERENCES "ami_chart"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "ami_chart_item" DROP CONSTRAINT "FK_98d10c0d335d9e4aca6fb5335b3"` + ) + await queryRunner.query( + `ALTER TABLE "property" DROP CONSTRAINT "FK_d639fcd25af4127bc979d5146a9"` + ) + await queryRunner.query(`ALTER TABLE "property" DROP COLUMN "ami_chart_id"`) + await queryRunner.query( + `ALTER TABLE "listings" ADD "blank_paper_application_can_be_picked_up" boolean` + ) + await queryRunner.query(`DROP TABLE "ami_chart_item"`) + await queryRunner.query(`DROP TABLE "ami_chart"`) + } } diff --git a/backend/core/src/migration/1605691160237-add-application-data.ts b/backend/core/src/migration/1605691160237-add-application-data.ts index 049351fe4f..fb2980d102 100644 --- a/backend/core/src/migration/1605691160237-add-application-data.ts +++ b/backend/core/src/migration/1605691160237-add-application-data.ts @@ -1,102 +1,197 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addApplicationData1605691160237 implements MigrationInterface { - name = 'addApplicationData1605691160237' + name = "addApplicationData1605691160237" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`CREATE TABLE "accessibility" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "mobility" boolean, "vision" boolean, "hearing" boolean, CONSTRAINT "PK_9729339e162bc7ec98a8815758c" PRIMARY KEY ("id"))`); - await queryRunner.query(`CREATE TABLE "address" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "place_name" text, "city" character varying NOT NULL, "county" text, "state" character varying NOT NULL, "street" character varying NOT NULL, "street2" text, "zip_code" character varying NOT NULL, "latitude" numeric, "longitude" numeric, CONSTRAINT "PK_d92de1f82754668b5f5f5dd4fd5" PRIMARY KEY ("id"))`); - await queryRunner.query(`CREATE TABLE "alternate_contact" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "type" character varying NOT NULL, "other_type" character varying, "first_name" character varying NOT NULL, "last_name" character varying NOT NULL, "agency" character varying, "phone_number" character varying NOT NULL, "email_address" character varying NOT NULL, CONSTRAINT "PK_4b35560218b2062cccb339975e7" PRIMARY KEY ("id"))`); - await queryRunner.query(`CREATE TABLE "applicant" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "first_name" character varying NOT NULL, "middle_name" character varying NOT NULL, "last_name" character varying NOT NULL, "birth_month" character varying NOT NULL, "birth_day" character varying NOT NULL, "birth_year" character varying NOT NULL, "email_address" character varying NOT NULL, "no_email" boolean NOT NULL, "phone_number" character varying NOT NULL, "phone_number_type" character varying NOT NULL, "no_phone" boolean NOT NULL, "work_in_region" text, "work_address_id" uuid, "address_id" uuid, CONSTRAINT "REL_7d357035705ebbbe91b5034678" UNIQUE ("work_address_id"), CONSTRAINT "REL_8ba2b09030c3a2b857dda5f83f" UNIQUE ("address_id"), CONSTRAINT "PK_f4a6e907b8b17f293eb073fc5ea" PRIMARY KEY ("id"))`); - await queryRunner.query(`CREATE TABLE "application_preferences" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "live_in" boolean NOT NULL, "none" boolean NOT NULL, "work_in" boolean NOT NULL, CONSTRAINT "PK_97729a397c6bff3aaa3bde8be94" PRIMARY KEY ("id"))`); - await queryRunner.query(`CREATE TABLE "demographics" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "ethnicity" character varying NOT NULL, "gender" character varying NOT NULL, "sexual_orientation" character varying NOT NULL, "how_did_you_hear" text array NOT NULL, "race" character varying NOT NULL, CONSTRAINT "PK_17bf4db5727bd0ad0462c67eda9" PRIMARY KEY ("id"))`); - await queryRunner.query(`CREATE TABLE "household_member" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "order_id" integer NOT NULL, "first_name" character varying NOT NULL, "middle_name" character varying NOT NULL, "last_name" character varying NOT NULL, "birth_month" character varying NOT NULL, "birth_day" character varying NOT NULL, "birth_year" character varying NOT NULL, "email_address" character varying NOT NULL, "no_email" boolean, "phone_number" character varying NOT NULL, "phone_number_type" character varying NOT NULL, "no_phone" boolean, "same_address" boolean, "relationship" text, "work_in_region" boolean, "address_id" uuid, "work_address_id" uuid, "application_id" uuid, CONSTRAINT "REL_7b61da64f1b7a6bbb48eb5bbb4" UNIQUE ("address_id"), CONSTRAINT "REL_f390552cbb929761927c70b7a0" UNIQUE ("work_address_id"), CONSTRAINT "PK_84e1d1f2553646d38e7c8b72a10" PRIMARY KEY ("id"))`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "application"`); - await queryRunner.query(`ALTER TABLE "applications" ADD "additional_phone" boolean NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ADD "additional_phone_number" character varying NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ADD "additional_phone_number_type" character varying NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ADD "contact_preferences" text array NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ADD "household_size" integer NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ADD "housing_status" character varying NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ADD "send_mail_to_mailing_address" boolean NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ADD "income_vouchers" boolean NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ADD "income" character varying NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ADD "income_period" character varying NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ADD "preferred_unit" text array NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ADD "language" character varying NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ADD "submission_type" character varying NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ADD "accepted_terms" boolean NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ADD "applicant_id" uuid`); - await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "UQ_194d0fca275b8661a56e486cb64" UNIQUE ("applicant_id")`); - await queryRunner.query(`ALTER TABLE "applications" ADD "mailing_address_id" uuid`); - await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "UQ_b72ba26ebc88981f441b30fe3c5" UNIQUE ("mailing_address_id")`); - await queryRunner.query(`ALTER TABLE "applications" ADD "alternate_address_id" uuid`); - await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "UQ_7fc41f89f22ca59ffceab5da80e" UNIQUE ("alternate_address_id")`); - await queryRunner.query(`ALTER TABLE "applications" ADD "alternate_contact_id" uuid`); - await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "UQ_56abaa378952856aaccc64d7eb3" UNIQUE ("alternate_contact_id")`); - await queryRunner.query(`ALTER TABLE "applications" ADD "accessibility_id" uuid`); - await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "UQ_3a4c71bc34dce9f6c196f110935" UNIQUE ("accessibility_id")`); - await queryRunner.query(`ALTER TABLE "applications" ADD "demographics_id" uuid`); - await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "UQ_fed5da45b7b4dafd9f025a37dd1" UNIQUE ("demographics_id")`); - await queryRunner.query(`ALTER TABLE "applicant" ADD CONSTRAINT "FK_7d357035705ebbbe91b50346781" FOREIGN KEY ("work_address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "applicant" ADD CONSTRAINT "FK_8ba2b09030c3a2b857dda5f83fe" FOREIGN KEY ("address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "household_member" ADD CONSTRAINT "FK_7b61da64f1b7a6bbb48eb5bbb43" FOREIGN KEY ("address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "household_member" ADD CONSTRAINT "FK_f390552cbb929761927c70b7a0d" FOREIGN KEY ("work_address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "household_member" ADD CONSTRAINT "FK_520996eeecf9f6fb9425dc7352c" FOREIGN KEY ("application_id") REFERENCES "applications"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "FK_194d0fca275b8661a56e486cb64" FOREIGN KEY ("applicant_id") REFERENCES "applicant"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "FK_b72ba26ebc88981f441b30fe3c5" FOREIGN KEY ("mailing_address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "FK_7fc41f89f22ca59ffceab5da80e" FOREIGN KEY ("alternate_address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "FK_56abaa378952856aaccc64d7eb3" FOREIGN KEY ("alternate_contact_id") REFERENCES "alternate_contact"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "FK_3a4c71bc34dce9f6c196f110935" FOREIGN KEY ("accessibility_id") REFERENCES "accessibility"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "FK_fed5da45b7b4dafd9f025a37dd1" FOREIGN KEY ("demographics_id") REFERENCES "demographics"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "FK_fed5da45b7b4dafd9f025a37dd1"`); - await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "FK_3a4c71bc34dce9f6c196f110935"`); - await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "FK_56abaa378952856aaccc64d7eb3"`); - await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "FK_7fc41f89f22ca59ffceab5da80e"`); - await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "FK_b72ba26ebc88981f441b30fe3c5"`); - await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "FK_194d0fca275b8661a56e486cb64"`); - await queryRunner.query(`ALTER TABLE "household_member" DROP CONSTRAINT "FK_520996eeecf9f6fb9425dc7352c"`); - await queryRunner.query(`ALTER TABLE "household_member" DROP CONSTRAINT "FK_f390552cbb929761927c70b7a0d"`); - await queryRunner.query(`ALTER TABLE "household_member" DROP CONSTRAINT "FK_7b61da64f1b7a6bbb48eb5bbb43"`); - await queryRunner.query(`ALTER TABLE "applicant" DROP CONSTRAINT "FK_8ba2b09030c3a2b857dda5f83fe"`); - await queryRunner.query(`ALTER TABLE "applicant" DROP CONSTRAINT "FK_7d357035705ebbbe91b50346781"`); - await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "UQ_fed5da45b7b4dafd9f025a37dd1"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "demographics_id"`); - await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "UQ_3a4c71bc34dce9f6c196f110935"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "accessibility_id"`); - await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "UQ_56abaa378952856aaccc64d7eb3"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "alternate_contact_id"`); - await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "UQ_7fc41f89f22ca59ffceab5da80e"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "alternate_address_id"`); - await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "UQ_b72ba26ebc88981f441b30fe3c5"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "mailing_address_id"`); - await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "UQ_194d0fca275b8661a56e486cb64"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "applicant_id"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "accepted_terms"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "submission_type"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "language"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "preferred_unit"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "income_period"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "income"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "income_vouchers"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "send_mail_to_mailing_address"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "housing_status"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "household_size"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "contact_preferences"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "additional_phone_number_type"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "additional_phone_number"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "additional_phone"`); - await queryRunner.query(`ALTER TABLE "applications" ADD "application" jsonb`); - await queryRunner.query(`DROP TABLE "household_member"`); - await queryRunner.query(`DROP TABLE "demographics"`); - await queryRunner.query(`DROP TABLE "application_preferences"`); - await queryRunner.query(`DROP TABLE "applicant"`); - await queryRunner.query(`DROP TABLE "alternate_contact"`); - await queryRunner.query(`DROP TABLE "address"`); - await queryRunner.query(`DROP TABLE "accessibility"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TABLE "accessibility" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "mobility" boolean, "vision" boolean, "hearing" boolean, CONSTRAINT "PK_9729339e162bc7ec98a8815758c" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `CREATE TABLE "address" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "place_name" text, "city" character varying NOT NULL, "county" text, "state" character varying NOT NULL, "street" character varying NOT NULL, "street2" text, "zip_code" character varying NOT NULL, "latitude" numeric, "longitude" numeric, CONSTRAINT "PK_d92de1f82754668b5f5f5dd4fd5" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `CREATE TABLE "alternate_contact" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "type" character varying NOT NULL, "other_type" character varying, "first_name" character varying NOT NULL, "last_name" character varying NOT NULL, "agency" character varying, "phone_number" character varying NOT NULL, "email_address" character varying NOT NULL, CONSTRAINT "PK_4b35560218b2062cccb339975e7" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `CREATE TABLE "applicant" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "first_name" character varying NOT NULL, "middle_name" character varying NOT NULL, "last_name" character varying NOT NULL, "birth_month" character varying NOT NULL, "birth_day" character varying NOT NULL, "birth_year" character varying NOT NULL, "email_address" character varying NOT NULL, "no_email" boolean NOT NULL, "phone_number" character varying NOT NULL, "phone_number_type" character varying NOT NULL, "no_phone" boolean NOT NULL, "work_in_region" text, "work_address_id" uuid, "address_id" uuid, CONSTRAINT "REL_7d357035705ebbbe91b5034678" UNIQUE ("work_address_id"), CONSTRAINT "REL_8ba2b09030c3a2b857dda5f83f" UNIQUE ("address_id"), CONSTRAINT "PK_f4a6e907b8b17f293eb073fc5ea" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `CREATE TABLE "application_preferences" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "live_in" boolean NOT NULL, "none" boolean NOT NULL, "work_in" boolean NOT NULL, CONSTRAINT "PK_97729a397c6bff3aaa3bde8be94" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `CREATE TABLE "demographics" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "ethnicity" character varying NOT NULL, "gender" character varying NOT NULL, "sexual_orientation" character varying NOT NULL, "how_did_you_hear" text array NOT NULL, "race" character varying NOT NULL, CONSTRAINT "PK_17bf4db5727bd0ad0462c67eda9" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `CREATE TABLE "household_member" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "order_id" integer NOT NULL, "first_name" character varying NOT NULL, "middle_name" character varying NOT NULL, "last_name" character varying NOT NULL, "birth_month" character varying NOT NULL, "birth_day" character varying NOT NULL, "birth_year" character varying NOT NULL, "email_address" character varying NOT NULL, "no_email" boolean, "phone_number" character varying NOT NULL, "phone_number_type" character varying NOT NULL, "no_phone" boolean, "same_address" boolean, "relationship" text, "work_in_region" boolean, "address_id" uuid, "work_address_id" uuid, "application_id" uuid, CONSTRAINT "REL_7b61da64f1b7a6bbb48eb5bbb4" UNIQUE ("address_id"), CONSTRAINT "REL_f390552cbb929761927c70b7a0" UNIQUE ("work_address_id"), CONSTRAINT "PK_84e1d1f2553646d38e7c8b72a10" PRIMARY KEY ("id"))` + ) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "application"`) + await queryRunner.query(`ALTER TABLE "applications" ADD "additional_phone" boolean NOT NULL`) + await queryRunner.query( + `ALTER TABLE "applications" ADD "additional_phone_number" character varying NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "applications" ADD "additional_phone_number_type" character varying NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "applications" ADD "contact_preferences" text array NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "applications" ADD "household_size" integer NOT NULL`) + await queryRunner.query( + `ALTER TABLE "applications" ADD "housing_status" character varying NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "applications" ADD "send_mail_to_mailing_address" boolean NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "applications" ADD "income_vouchers" boolean NOT NULL`) + await queryRunner.query(`ALTER TABLE "applications" ADD "income" character varying NOT NULL`) + await queryRunner.query( + `ALTER TABLE "applications" ADD "income_period" character varying NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "applications" ADD "preferred_unit" text array NOT NULL`) + await queryRunner.query(`ALTER TABLE "applications" ADD "language" character varying NOT NULL`) + await queryRunner.query( + `ALTER TABLE "applications" ADD "submission_type" character varying NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "applications" ADD "accepted_terms" boolean NOT NULL`) + await queryRunner.query(`ALTER TABLE "applications" ADD "applicant_id" uuid`) + await queryRunner.query( + `ALTER TABLE "applications" ADD CONSTRAINT "UQ_194d0fca275b8661a56e486cb64" UNIQUE ("applicant_id")` + ) + await queryRunner.query(`ALTER TABLE "applications" ADD "mailing_address_id" uuid`) + await queryRunner.query( + `ALTER TABLE "applications" ADD CONSTRAINT "UQ_b72ba26ebc88981f441b30fe3c5" UNIQUE ("mailing_address_id")` + ) + await queryRunner.query(`ALTER TABLE "applications" ADD "alternate_address_id" uuid`) + await queryRunner.query( + `ALTER TABLE "applications" ADD CONSTRAINT "UQ_7fc41f89f22ca59ffceab5da80e" UNIQUE ("alternate_address_id")` + ) + await queryRunner.query(`ALTER TABLE "applications" ADD "alternate_contact_id" uuid`) + await queryRunner.query( + `ALTER TABLE "applications" ADD CONSTRAINT "UQ_56abaa378952856aaccc64d7eb3" UNIQUE ("alternate_contact_id")` + ) + await queryRunner.query(`ALTER TABLE "applications" ADD "accessibility_id" uuid`) + await queryRunner.query( + `ALTER TABLE "applications" ADD CONSTRAINT "UQ_3a4c71bc34dce9f6c196f110935" UNIQUE ("accessibility_id")` + ) + await queryRunner.query(`ALTER TABLE "applications" ADD "demographics_id" uuid`) + await queryRunner.query( + `ALTER TABLE "applications" ADD CONSTRAINT "UQ_fed5da45b7b4dafd9f025a37dd1" UNIQUE ("demographics_id")` + ) + await queryRunner.query( + `ALTER TABLE "applicant" ADD CONSTRAINT "FK_7d357035705ebbbe91b50346781" FOREIGN KEY ("work_address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "applicant" ADD CONSTRAINT "FK_8ba2b09030c3a2b857dda5f83fe" FOREIGN KEY ("address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "household_member" ADD CONSTRAINT "FK_7b61da64f1b7a6bbb48eb5bbb43" FOREIGN KEY ("address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "household_member" ADD CONSTRAINT "FK_f390552cbb929761927c70b7a0d" FOREIGN KEY ("work_address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "household_member" ADD CONSTRAINT "FK_520996eeecf9f6fb9425dc7352c" FOREIGN KEY ("application_id") REFERENCES "applications"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "applications" ADD CONSTRAINT "FK_194d0fca275b8661a56e486cb64" FOREIGN KEY ("applicant_id") REFERENCES "applicant"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "applications" ADD CONSTRAINT "FK_b72ba26ebc88981f441b30fe3c5" FOREIGN KEY ("mailing_address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "applications" ADD CONSTRAINT "FK_7fc41f89f22ca59ffceab5da80e" FOREIGN KEY ("alternate_address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "applications" ADD CONSTRAINT "FK_56abaa378952856aaccc64d7eb3" FOREIGN KEY ("alternate_contact_id") REFERENCES "alternate_contact"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "applications" ADD CONSTRAINT "FK_3a4c71bc34dce9f6c196f110935" FOREIGN KEY ("accessibility_id") REFERENCES "accessibility"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "applications" ADD CONSTRAINT "FK_fed5da45b7b4dafd9f025a37dd1" FOREIGN KEY ("demographics_id") REFERENCES "demographics"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "applications" DROP CONSTRAINT "FK_fed5da45b7b4dafd9f025a37dd1"` + ) + await queryRunner.query( + `ALTER TABLE "applications" DROP CONSTRAINT "FK_3a4c71bc34dce9f6c196f110935"` + ) + await queryRunner.query( + `ALTER TABLE "applications" DROP CONSTRAINT "FK_56abaa378952856aaccc64d7eb3"` + ) + await queryRunner.query( + `ALTER TABLE "applications" DROP CONSTRAINT "FK_7fc41f89f22ca59ffceab5da80e"` + ) + await queryRunner.query( + `ALTER TABLE "applications" DROP CONSTRAINT "FK_b72ba26ebc88981f441b30fe3c5"` + ) + await queryRunner.query( + `ALTER TABLE "applications" DROP CONSTRAINT "FK_194d0fca275b8661a56e486cb64"` + ) + await queryRunner.query( + `ALTER TABLE "household_member" DROP CONSTRAINT "FK_520996eeecf9f6fb9425dc7352c"` + ) + await queryRunner.query( + `ALTER TABLE "household_member" DROP CONSTRAINT "FK_f390552cbb929761927c70b7a0d"` + ) + await queryRunner.query( + `ALTER TABLE "household_member" DROP CONSTRAINT "FK_7b61da64f1b7a6bbb48eb5bbb43"` + ) + await queryRunner.query( + `ALTER TABLE "applicant" DROP CONSTRAINT "FK_8ba2b09030c3a2b857dda5f83fe"` + ) + await queryRunner.query( + `ALTER TABLE "applicant" DROP CONSTRAINT "FK_7d357035705ebbbe91b50346781"` + ) + await queryRunner.query( + `ALTER TABLE "applications" DROP CONSTRAINT "UQ_fed5da45b7b4dafd9f025a37dd1"` + ) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "demographics_id"`) + await queryRunner.query( + `ALTER TABLE "applications" DROP CONSTRAINT "UQ_3a4c71bc34dce9f6c196f110935"` + ) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "accessibility_id"`) + await queryRunner.query( + `ALTER TABLE "applications" DROP CONSTRAINT "UQ_56abaa378952856aaccc64d7eb3"` + ) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "alternate_contact_id"`) + await queryRunner.query( + `ALTER TABLE "applications" DROP CONSTRAINT "UQ_7fc41f89f22ca59ffceab5da80e"` + ) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "alternate_address_id"`) + await queryRunner.query( + `ALTER TABLE "applications" DROP CONSTRAINT "UQ_b72ba26ebc88981f441b30fe3c5"` + ) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "mailing_address_id"`) + await queryRunner.query( + `ALTER TABLE "applications" DROP CONSTRAINT "UQ_194d0fca275b8661a56e486cb64"` + ) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "applicant_id"`) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "accepted_terms"`) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "submission_type"`) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "language"`) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "preferred_unit"`) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "income_period"`) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "income"`) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "income_vouchers"`) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "send_mail_to_mailing_address"`) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "housing_status"`) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "household_size"`) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "contact_preferences"`) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "additional_phone_number_type"`) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "additional_phone_number"`) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "additional_phone"`) + await queryRunner.query(`ALTER TABLE "applications" ADD "application" jsonb`) + await queryRunner.query(`DROP TABLE "household_member"`) + await queryRunner.query(`DROP TABLE "demographics"`) + await queryRunner.query(`DROP TABLE "application_preferences"`) + await queryRunner.query(`DROP TABLE "applicant"`) + await queryRunner.query(`DROP TABLE "alternate_contact"`) + await queryRunner.query(`DROP TABLE "address"`) + await queryRunner.query(`DROP TABLE "accessibility"`) + } } diff --git a/backend/core/src/migration/1606144763359-update-listing-date-strings.ts b/backend/core/src/migration/1606144763359-update-listing-date-strings.ts index 7b00e2dfb3..cf5522ffc3 100644 --- a/backend/core/src/migration/1606144763359-update-listing-date-strings.ts +++ b/backend/core/src/migration/1606144763359-update-listing-date-strings.ts @@ -1,32 +1,51 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class updateListingDateStrings1606144763359 implements MigrationInterface { - name = 'updateListingDateStrings1606144763359' + name = "updateListingDateStrings1606144763359" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "units" DROP COLUMN "ami_chart_id"`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ADD "mailing_address_id" uuid`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ADD CONSTRAINT "UQ_5eb038a51b9cd6872359a687b18" UNIQUE ("mailing_address_id")`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_due_date"`); - await queryRunner.query(`ALTER TABLE "listings" ADD "application_due_date" TIMESTAMP WITH TIME ZONE`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_open_date"`); - await queryRunner.query(`ALTER TABLE "listings" ADD "application_open_date" TIMESTAMP WITH TIME ZONE`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "postmarked_applications_received_by_date"`); - await queryRunner.query(`ALTER TABLE "listings" ADD "postmarked_applications_received_by_date" TIMESTAMP WITH TIME ZONE`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ADD CONSTRAINT "FK_5eb038a51b9cd6872359a687b18" FOREIGN KEY ("mailing_address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "alternate_contact" DROP CONSTRAINT "FK_5eb038a51b9cd6872359a687b18"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "postmarked_applications_received_by_date"`); - await queryRunner.query(`ALTER TABLE "listings" ADD "postmarked_applications_received_by_date" text`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_open_date"`); - await queryRunner.query(`ALTER TABLE "listings" ADD "application_open_date" text`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_due_date"`); - await queryRunner.query(`ALTER TABLE "listings" ADD "application_due_date" text`); - await queryRunner.query(`ALTER TABLE "alternate_contact" DROP CONSTRAINT "UQ_5eb038a51b9cd6872359a687b18"`); - await queryRunner.query(`ALTER TABLE "alternate_contact" DROP COLUMN "mailing_address_id"`); - await queryRunner.query(`ALTER TABLE "units" ADD "ami_chart_id" integer`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "units" DROP COLUMN "ami_chart_id"`) + await queryRunner.query(`ALTER TABLE "alternate_contact" ADD "mailing_address_id" uuid`) + await queryRunner.query( + `ALTER TABLE "alternate_contact" ADD CONSTRAINT "UQ_5eb038a51b9cd6872359a687b18" UNIQUE ("mailing_address_id")` + ) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_due_date"`) + await queryRunner.query( + `ALTER TABLE "listings" ADD "application_due_date" TIMESTAMP WITH TIME ZONE` + ) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_open_date"`) + await queryRunner.query( + `ALTER TABLE "listings" ADD "application_open_date" TIMESTAMP WITH TIME ZONE` + ) + await queryRunner.query( + `ALTER TABLE "listings" DROP COLUMN "postmarked_applications_received_by_date"` + ) + await queryRunner.query( + `ALTER TABLE "listings" ADD "postmarked_applications_received_by_date" TIMESTAMP WITH TIME ZONE` + ) + await queryRunner.query( + `ALTER TABLE "alternate_contact" ADD CONSTRAINT "FK_5eb038a51b9cd6872359a687b18" FOREIGN KEY ("mailing_address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "alternate_contact" DROP CONSTRAINT "FK_5eb038a51b9cd6872359a687b18"` + ) + await queryRunner.query( + `ALTER TABLE "listings" DROP COLUMN "postmarked_applications_received_by_date"` + ) + await queryRunner.query( + `ALTER TABLE "listings" ADD "postmarked_applications_received_by_date" text` + ) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_open_date"`) + await queryRunner.query(`ALTER TABLE "listings" ADD "application_open_date" text`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_due_date"`) + await queryRunner.query(`ALTER TABLE "listings" ADD "application_due_date" text`) + await queryRunner.query( + `ALTER TABLE "alternate_contact" DROP CONSTRAINT "UQ_5eb038a51b9cd6872359a687b18"` + ) + await queryRunner.query(`ALTER TABLE "alternate_contact" DROP COLUMN "mailing_address_id"`) + await queryRunner.query(`ALTER TABLE "units" ADD "ami_chart_id" integer`) + } } diff --git a/backend/core/src/migration/1606316990163-update-units-ami-charts-relation.ts b/backend/core/src/migration/1606316990163-update-units-ami-charts-relation.ts index fdfea16275..be4a58ec42 100644 --- a/backend/core/src/migration/1606316990163-update-units-ami-charts-relation.ts +++ b/backend/core/src/migration/1606316990163-update-units-ami-charts-relation.ts @@ -1,20 +1,25 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class updateUnitsAmiChartsRelation1606316990163 implements MigrationInterface { - name = 'updateUnitsAmiChartsRelation1606316990163' + name = "updateUnitsAmiChartsRelation1606316990163" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "property" DROP CONSTRAINT "FK_d639fcd25af4127bc979d5146a9"`); - await queryRunner.query(`ALTER TABLE "property" DROP COLUMN "ami_chart_id"`); - await queryRunner.query(`ALTER TABLE "units" ADD "ami_chart_id" uuid`); - await queryRunner.query(`ALTER TABLE "units" ADD CONSTRAINT "FK_35571c6bd2a1ff690201d1dff08" FOREIGN KEY ("ami_chart_id") REFERENCES "ami_chart"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "units" DROP CONSTRAINT "FK_35571c6bd2a1ff690201d1dff08"`); - await queryRunner.query(`ALTER TABLE "units" DROP COLUMN "ami_chart_id"`); - await queryRunner.query(`ALTER TABLE "property" ADD "ami_chart_id" uuid`); - await queryRunner.query(`ALTER TABLE "property" ADD CONSTRAINT "FK_d639fcd25af4127bc979d5146a9" FOREIGN KEY ("ami_chart_id") REFERENCES "ami_chart"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "property" DROP CONSTRAINT "FK_d639fcd25af4127bc979d5146a9"` + ) + await queryRunner.query(`ALTER TABLE "property" DROP COLUMN "ami_chart_id"`) + await queryRunner.query(`ALTER TABLE "units" ADD "ami_chart_id" uuid`) + await queryRunner.query( + `ALTER TABLE "units" ADD CONSTRAINT "FK_35571c6bd2a1ff690201d1dff08" FOREIGN KEY ("ami_chart_id") REFERENCES "ami_chart"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "units" DROP CONSTRAINT "FK_35571c6bd2a1ff690201d1dff08"`) + await queryRunner.query(`ALTER TABLE "units" DROP COLUMN "ami_chart_id"`) + await queryRunner.query(`ALTER TABLE "property" ADD "ami_chart_id" uuid`) + await queryRunner.query( + `ALTER TABLE "property" ADD CONSTRAINT "FK_d639fcd25af4127bc979d5146a9" FOREIGN KEY ("ami_chart_id") REFERENCES "ami_chart"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } } diff --git a/backend/core/src/migration/1606386989965-update-property-building-address.ts b/backend/core/src/migration/1606386989965-update-property-building-address.ts index cb74aad62f..422c6739ff 100644 --- a/backend/core/src/migration/1606386989965-update-property-building-address.ts +++ b/backend/core/src/migration/1606386989965-update-property-building-address.ts @@ -1,22 +1,33 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class updatePropertyBuildingAddress1606386989965 implements MigrationInterface { - name = 'updatePropertyBuildingAddress1606386989965' + name = "updatePropertyBuildingAddress1606386989965" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "property" RENAME COLUMN "building_address" TO "building_address_id"`); - await queryRunner.query(`ALTER TABLE "property" DROP COLUMN "building_address_id"`); - await queryRunner.query(`ALTER TABLE "property" ADD "building_address_id" uuid`); - await queryRunner.query(`ALTER TABLE "property" ADD CONSTRAINT "UQ_f0f7062f34738e0b338163786fd" UNIQUE ("building_address_id")`); - await queryRunner.query(`ALTER TABLE "property" ADD CONSTRAINT "FK_f0f7062f34738e0b338163786fd" FOREIGN KEY ("building_address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "property" DROP CONSTRAINT "FK_f0f7062f34738e0b338163786fd"`); - await queryRunner.query(`ALTER TABLE "property" DROP CONSTRAINT "UQ_f0f7062f34738e0b338163786fd"`); - await queryRunner.query(`ALTER TABLE "property" DROP COLUMN "building_address_id"`); - await queryRunner.query(`ALTER TABLE "property" ADD "building_address_id" jsonb`); - await queryRunner.query(`ALTER TABLE "property" RENAME COLUMN "building_address_id" TO "building_address"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "property" RENAME COLUMN "building_address" TO "building_address_id"` + ) + await queryRunner.query(`ALTER TABLE "property" DROP COLUMN "building_address_id"`) + await queryRunner.query(`ALTER TABLE "property" ADD "building_address_id" uuid`) + await queryRunner.query( + `ALTER TABLE "property" ADD CONSTRAINT "UQ_f0f7062f34738e0b338163786fd" UNIQUE ("building_address_id")` + ) + await queryRunner.query( + `ALTER TABLE "property" ADD CONSTRAINT "FK_f0f7062f34738e0b338163786fd" FOREIGN KEY ("building_address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "property" DROP CONSTRAINT "FK_f0f7062f34738e0b338163786fd"` + ) + await queryRunner.query( + `ALTER TABLE "property" DROP CONSTRAINT "UQ_f0f7062f34738e0b338163786fd"` + ) + await queryRunner.query(`ALTER TABLE "property" DROP COLUMN "building_address_id"`) + await queryRunner.query(`ALTER TABLE "property" ADD "building_address_id" jsonb`) + await queryRunner.query( + `ALTER TABLE "property" RENAME COLUMN "building_address_id" TO "building_address"` + ) + } } diff --git a/backend/core/src/migration/1606475798955-update-demographics-race.ts b/backend/core/src/migration/1606475798955-update-demographics-race.ts index 307592f209..6607582998 100644 --- a/backend/core/src/migration/1606475798955-update-demographics-race.ts +++ b/backend/core/src/migration/1606475798955-update-demographics-race.ts @@ -1,16 +1,15 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class updateDemographicsRace1606475798955 implements MigrationInterface { - name = 'updateDemographicsRace1606475798955' + name = "updateDemographicsRace1606475798955" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "demographics" DROP COLUMN "race"`); - await queryRunner.query(`ALTER TABLE "demographics" ADD "race" text`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "demographics" DROP COLUMN "race"`); - await queryRunner.query(`ALTER TABLE "demographics" ADD "race" character varying NOT NULL`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "demographics" DROP COLUMN "race"`) + await queryRunner.query(`ALTER TABLE "demographics" ADD "race" text`) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "demographics" DROP COLUMN "race"`) + await queryRunner.query(`ALTER TABLE "demographics" ADD "race" character varying NOT NULL`) + } } diff --git a/backend/core/src/migration/1606477233962-update-application-entity.ts b/backend/core/src/migration/1606477233962-update-application-entity.ts index e52d07da0d..b8fa523a5d 100644 --- a/backend/core/src/migration/1606477233962-update-application-entity.ts +++ b/backend/core/src/migration/1606477233962-update-application-entity.ts @@ -1,20 +1,27 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class updateApplicationEntity1606477233962 implements MigrationInterface { - name = 'updateApplicationEntity1606477233962' + name = "updateApplicationEntity1606477233962" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "applications" ADD "status" character varying NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ADD "preferences_id" uuid`); - await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "UQ_94732707236694795230ad64c78" UNIQUE ("preferences_id")`); - await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "FK_94732707236694795230ad64c78" FOREIGN KEY ("preferences_id") REFERENCES "application_preferences"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "FK_94732707236694795230ad64c78"`); - await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "UQ_94732707236694795230ad64c78"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "preferences_id"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "status"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "applications" ADD "status" character varying NOT NULL`) + await queryRunner.query(`ALTER TABLE "applications" ADD "preferences_id" uuid`) + await queryRunner.query( + `ALTER TABLE "applications" ADD CONSTRAINT "UQ_94732707236694795230ad64c78" UNIQUE ("preferences_id")` + ) + await queryRunner.query( + `ALTER TABLE "applications" ADD CONSTRAINT "FK_94732707236694795230ad64c78" FOREIGN KEY ("preferences_id") REFERENCES "application_preferences"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "applications" DROP CONSTRAINT "FK_94732707236694795230ad64c78"` + ) + await queryRunner.query( + `ALTER TABLE "applications" DROP CONSTRAINT "UQ_94732707236694795230ad64c78"` + ) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "preferences_id"`) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "status"`) + } } diff --git a/backend/core/src/migration/1606488094709-update-applicant-email.ts b/backend/core/src/migration/1606488094709-update-applicant-email.ts index c951d5cdf8..f4de2fca22 100644 --- a/backend/core/src/migration/1606488094709-update-applicant-email.ts +++ b/backend/core/src/migration/1606488094709-update-applicant-email.ts @@ -1,14 +1,13 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class updateApplicantEmail1606488094709 implements MigrationInterface { - name = 'updateApplicantEmail1606488094709' + name = "updateApplicantEmail1606488094709" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "email_address" DROP NOT NULL`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "email_address" SET NOT NULL`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "email_address" DROP NOT NULL`) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "email_address" SET NOT NULL`) + } } diff --git a/backend/core/src/migration/1607179140908-fix-application-text-types.ts b/backend/core/src/migration/1607179140908-fix-application-text-types.ts index 60fe3cc8af..f579ff2f64 100644 --- a/backend/core/src/migration/1607179140908-fix-application-text-types.ts +++ b/backend/core/src/migration/1607179140908-fix-application-text-types.ts @@ -1,87 +1,120 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class fixApplicationTextTypes1607179140908 implements MigrationInterface { - name = 'fixApplicationTextTypes1607179140908' + name = "fixApplicationTextTypes1607179140908" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "city" TYPE text`); - await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "state" TYPE text`); - await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "street" TYPE text`); - await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "zip_code" TYPE text`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "type" TYPE text`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "other_type" TYPE text`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "first_name" TYPE text`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "last_name" TYPE text`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "agency" TYPE text`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "phone_number" TYPE text`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "email_address" TYPE text`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "first_name" TYPE text`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "middle_name" TYPE text`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "last_name" TYPE text`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_month" TYPE text`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_day" TYPE text`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_year" TYPE text`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "email_address" TYPE text`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "no_email" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "phone_number" TYPE text`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "phone_number_type" TYPE text`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "no_phone" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "ethnicity" TYPE text`); - await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "gender" TYPE text`); - await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "sexual_orientation" TYPE text`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "order_id" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "first_name" TYPE text`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "middle_name" TYPE text`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "last_name" TYPE text`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_month" TYPE text`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_day" TYPE text`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_year" TYPE text`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "email_address" TYPE text`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "phone_number" TYPE text`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "phone_number_type" TYPE text`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "additional_phone_number" TYPE text`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "additional_phone_number_type" TYPE text`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "housing_status" TYPE text`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "income" TYPE text`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "income" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "housing_status" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "additional_phone_number_type" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "additional_phone_number" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "phone_number_type" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "phone_number" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "email_address" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_year" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_day" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_month" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "last_name" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "middle_name" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "first_name" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "sexual_orientation" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "gender" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "ethnicity" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "phone_number_type" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "phone_number" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "email_address" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_year" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_day" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_month" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "last_name" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "middle_name" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "first_name" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "email_address" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "phone_number" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "agency" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "last_name" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "first_name" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "other_type" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "type" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "zip_code" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "street" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "state" TYPE varchar`); - await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "city" TYPE varchar`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "city" TYPE text`) + await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "state" TYPE text`) + await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "street" TYPE text`) + await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "zip_code" TYPE text`) + await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "type" TYPE text`) + await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "other_type" TYPE text`) + await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "first_name" TYPE text`) + await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "last_name" TYPE text`) + await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "agency" TYPE text`) + await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "phone_number" TYPE text`) + await queryRunner.query( + `ALTER TABLE "alternate_contact" ALTER COLUMN "email_address" TYPE text` + ) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "first_name" TYPE text`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "middle_name" TYPE text`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "last_name" TYPE text`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_month" TYPE text`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_day" TYPE text`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_year" TYPE text`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "email_address" TYPE text`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "no_email" DROP NOT NULL`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "phone_number" TYPE text`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "phone_number_type" TYPE text`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "no_phone" DROP NOT NULL`) + await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "ethnicity" TYPE text`) + await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "gender" TYPE text`) + await queryRunner.query( + `ALTER TABLE "demographics" ALTER COLUMN "sexual_orientation" TYPE text` + ) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "order_id" DROP NOT NULL`) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "first_name" TYPE text`) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "middle_name" TYPE text`) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "last_name" TYPE text`) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_month" TYPE text`) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_day" TYPE text`) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_year" TYPE text`) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "email_address" TYPE text`) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "phone_number" TYPE text`) + await queryRunner.query( + `ALTER TABLE "household_member" ALTER COLUMN "phone_number_type" TYPE text` + ) + await queryRunner.query( + `ALTER TABLE "applications" ALTER COLUMN "additional_phone_number" TYPE text` + ) + await queryRunner.query( + `ALTER TABLE "applications" ALTER COLUMN "additional_phone_number_type" TYPE text` + ) + await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "housing_status" TYPE text`) + await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "income" TYPE text`) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "income" TYPE varchar`) + await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "housing_status" TYPE varchar`) + await queryRunner.query( + `ALTER TABLE "applications" ALTER COLUMN "additional_phone_number_type" TYPE varchar` + ) + await queryRunner.query( + `ALTER TABLE "applications" ALTER COLUMN "additional_phone_number" TYPE varchar` + ) + await queryRunner.query( + `ALTER TABLE "household_member" ALTER COLUMN "phone_number_type" TYPE varchar` + ) + await queryRunner.query( + `ALTER TABLE "household_member" ALTER COLUMN "phone_number" TYPE varchar` + ) + await queryRunner.query( + `ALTER TABLE "household_member" ALTER COLUMN "email_address" TYPE varchar` + ) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_year" TYPE varchar`) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_day" TYPE varchar`) + await queryRunner.query( + `ALTER TABLE "household_member" ALTER COLUMN "birth_month" TYPE varchar` + ) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "last_name" TYPE varchar`) + await queryRunner.query( + `ALTER TABLE "household_member" ALTER COLUMN "middle_name" TYPE varchar` + ) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "first_name" TYPE varchar`) + await queryRunner.query( + `ALTER TABLE "demographics" ALTER COLUMN "sexual_orientation" TYPE varchar` + ) + await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "gender" TYPE varchar`) + await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "ethnicity" TYPE varchar`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "phone_number_type" TYPE varchar`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "phone_number" TYPE varchar`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "email_address" TYPE varchar`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_year" TYPE varchar`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_day" TYPE varchar`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_month" TYPE varchar`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "last_name" TYPE varchar`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "middle_name" TYPE varchar`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "first_name" TYPE varchar`) + await queryRunner.query( + `ALTER TABLE "alternate_contact" ALTER COLUMN "email_address" TYPE varchar` + ) + await queryRunner.query( + `ALTER TABLE "alternate_contact" ALTER COLUMN "phone_number" TYPE varchar` + ) + await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "agency" TYPE varchar`) + await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "last_name" TYPE varchar`) + await queryRunner.query( + `ALTER TABLE "alternate_contact" ALTER COLUMN "first_name" TYPE varchar` + ) + await queryRunner.query( + `ALTER TABLE "alternate_contact" ALTER COLUMN "other_type" TYPE varchar` + ) + await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "type" TYPE varchar`) + await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "zip_code" TYPE varchar`) + await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "street" TYPE varchar`) + await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "state" TYPE varchar`) + await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "city" TYPE varchar`) + } } diff --git a/backend/core/src/migration/1607180515097-make-application-properties-nullable-for-partners.ts b/backend/core/src/migration/1607180515097-make-application-properties-nullable-for-partners.ts index d9aad5a9e9..72e0d6d967 100644 --- a/backend/core/src/migration/1607180515097-make-application-properties-nullable-for-partners.ts +++ b/backend/core/src/migration/1607180515097-make-application-properties-nullable-for-partners.ts @@ -1,92 +1,162 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" -export class makeApplicationPropertiesNullableForPartners1607180515097 implements MigrationInterface { - name = 'makeApplicationPropertiesNullableForPartners1607180515097' +export class makeApplicationPropertiesNullableForPartners1607180515097 + implements MigrationInterface { + name = "makeApplicationPropertiesNullableForPartners1607180515097" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "city" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "state" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "street" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "zip_code" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "type" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "first_name" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "last_name" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "phone_number" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "email_address" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "first_name" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "middle_name" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "last_name" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_month" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_day" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_year" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "phone_number" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "phone_number_type" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "ethnicity" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "gender" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "sexual_orientation" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "first_name" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "middle_name" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "last_name" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_month" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_day" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_year" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "email_address" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "phone_number" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "phone_number_type" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "app_url" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "additional_phone" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "additional_phone_number" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "additional_phone_number_type" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "household_size" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "housing_status" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "send_mail_to_mailing_address" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "income_vouchers" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "income" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "income_period" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "accepted_terms" DROP NOT NULL`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "accepted_terms" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "income_period" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "income" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "income_vouchers" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "send_mail_to_mailing_address" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "housing_status" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "household_size" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "additional_phone_number_type" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "additional_phone_number" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "additional_phone" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "app_url" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "phone_number_type" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "phone_number" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "email_address" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_year" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_day" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_month" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "last_name" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "middle_name" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "first_name" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "sexual_orientation" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "gender" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "ethnicity" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "phone_number_type" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "phone_number" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_year" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_day" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_month" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "last_name" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "middle_name" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "first_name" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "email_address" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "phone_number" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "last_name" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "first_name" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "type" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "zip_code" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "street" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "state" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "city" SET NOT NULL`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "city" DROP NOT NULL`) + await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "state" DROP NOT NULL`) + await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "street" DROP NOT NULL`) + await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "zip_code" DROP NOT NULL`) + await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "type" DROP NOT NULL`) + await queryRunner.query( + `ALTER TABLE "alternate_contact" ALTER COLUMN "first_name" DROP NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "alternate_contact" ALTER COLUMN "last_name" DROP NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "alternate_contact" ALTER COLUMN "phone_number" DROP NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "alternate_contact" ALTER COLUMN "email_address" DROP NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "first_name" DROP NOT NULL`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "middle_name" DROP NOT NULL`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "last_name" DROP NOT NULL`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_month" DROP NOT NULL`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_day" DROP NOT NULL`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_year" DROP NOT NULL`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "phone_number" DROP NOT NULL`) + await queryRunner.query( + `ALTER TABLE "applicant" ALTER COLUMN "phone_number_type" DROP NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "ethnicity" DROP NOT NULL`) + await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "gender" DROP NOT NULL`) + await queryRunner.query( + `ALTER TABLE "demographics" ALTER COLUMN "sexual_orientation" DROP NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "household_member" ALTER COLUMN "first_name" DROP NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "household_member" ALTER COLUMN "middle_name" DROP NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "last_name" DROP NOT NULL`) + await queryRunner.query( + `ALTER TABLE "household_member" ALTER COLUMN "birth_month" DROP NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_day" DROP NOT NULL`) + await queryRunner.query( + `ALTER TABLE "household_member" ALTER COLUMN "birth_year" DROP NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "household_member" ALTER COLUMN "email_address" DROP NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "household_member" ALTER COLUMN "phone_number" DROP NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "household_member" ALTER COLUMN "phone_number_type" DROP NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "app_url" DROP NOT NULL`) + await queryRunner.query( + `ALTER TABLE "applications" ALTER COLUMN "additional_phone" DROP NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "applications" ALTER COLUMN "additional_phone_number" DROP NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "applications" ALTER COLUMN "additional_phone_number_type" DROP NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "applications" ALTER COLUMN "household_size" DROP NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "applications" ALTER COLUMN "housing_status" DROP NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "applications" ALTER COLUMN "send_mail_to_mailing_address" DROP NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "applications" ALTER COLUMN "income_vouchers" DROP NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "income" DROP NOT NULL`) + await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "income_period" DROP NOT NULL`) + await queryRunner.query( + `ALTER TABLE "applications" ALTER COLUMN "accepted_terms" DROP NOT NULL` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "accepted_terms" SET NOT NULL`) + await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "income_period" SET NOT NULL`) + await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "income" SET NOT NULL`) + await queryRunner.query( + `ALTER TABLE "applications" ALTER COLUMN "income_vouchers" SET NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "applications" ALTER COLUMN "send_mail_to_mailing_address" SET NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "housing_status" SET NOT NULL`) + await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "household_size" SET NOT NULL`) + await queryRunner.query( + `ALTER TABLE "applications" ALTER COLUMN "additional_phone_number_type" SET NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "applications" ALTER COLUMN "additional_phone_number" SET NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "applications" ALTER COLUMN "additional_phone" SET NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "app_url" SET NOT NULL`) + await queryRunner.query( + `ALTER TABLE "household_member" ALTER COLUMN "phone_number_type" SET NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "household_member" ALTER COLUMN "phone_number" SET NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "household_member" ALTER COLUMN "email_address" SET NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_year" SET NOT NULL`) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "birth_day" SET NOT NULL`) + await queryRunner.query( + `ALTER TABLE "household_member" ALTER COLUMN "birth_month" SET NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "last_name" SET NOT NULL`) + await queryRunner.query( + `ALTER TABLE "household_member" ALTER COLUMN "middle_name" SET NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "household_member" ALTER COLUMN "first_name" SET NOT NULL`) + await queryRunner.query( + `ALTER TABLE "demographics" ALTER COLUMN "sexual_orientation" SET NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "gender" SET NOT NULL`) + await queryRunner.query(`ALTER TABLE "demographics" ALTER COLUMN "ethnicity" SET NOT NULL`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "phone_number_type" SET NOT NULL`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "phone_number" SET NOT NULL`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_year" SET NOT NULL`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_day" SET NOT NULL`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "birth_month" SET NOT NULL`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "last_name" SET NOT NULL`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "middle_name" SET NOT NULL`) + await queryRunner.query(`ALTER TABLE "applicant" ALTER COLUMN "first_name" SET NOT NULL`) + await queryRunner.query( + `ALTER TABLE "alternate_contact" ALTER COLUMN "email_address" SET NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "alternate_contact" ALTER COLUMN "phone_number" SET NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "last_name" SET NOT NULL`) + await queryRunner.query( + `ALTER TABLE "alternate_contact" ALTER COLUMN "first_name" SET NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "alternate_contact" ALTER COLUMN "type" SET NOT NULL`) + await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "zip_code" SET NOT NULL`) + await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "street" SET NOT NULL`) + await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "state" SET NOT NULL`) + await queryRunner.query(`ALTER TABLE "address" ALTER COLUMN "city" SET NOT NULL`) + } } diff --git a/backend/core/src/migration/1608200172832-add-listing-submission-date.ts b/backend/core/src/migration/1608200172832-add-listing-submission-date.ts index e28dd1d201..56227ea32c 100644 --- a/backend/core/src/migration/1608200172832-add-listing-submission-date.ts +++ b/backend/core/src/migration/1608200172832-add-listing-submission-date.ts @@ -1,14 +1,15 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addListingSubmissionDate1608200172832 implements MigrationInterface { - name = 'addListingSubmissionDate1608200172832' + name = "addListingSubmissionDate1608200172832" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "applications" ADD "submission_date" TIMESTAMP WITH TIME ZONE`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "submission_date"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "applications" ADD "submission_date" TIMESTAMP WITH TIME ZONE` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "submission_date"`) + } } diff --git a/backend/core/src/migration/1609755983577-make-application-language-nullable.ts b/backend/core/src/migration/1609755983577-make-application-language-nullable.ts index d21b17ef49..84d112ee0f 100644 --- a/backend/core/src/migration/1609755983577-make-application-language-nullable.ts +++ b/backend/core/src/migration/1609755983577-make-application-language-nullable.ts @@ -1,14 +1,13 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class makeApplicationLanguageNullable1609755983577 implements MigrationInterface { - name = 'makeApplicationLanguageNullable1609755983577' + name = "makeApplicationLanguageNullable1609755983577" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "language" DROP NOT NULL`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "language" SET NOT NULL`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "language" DROP NOT NULL`) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "language" SET NOT NULL`) + } } diff --git a/backend/core/src/migration/1610361232572-add-deleted-at-to-application.ts b/backend/core/src/migration/1610361232572-add-deleted-at-to-application.ts index bf468a9138..c21982a040 100644 --- a/backend/core/src/migration/1610361232572-add-deleted-at-to-application.ts +++ b/backend/core/src/migration/1610361232572-add-deleted-at-to-application.ts @@ -1,14 +1,13 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addDeletedAtToApplication1610361232572 implements MigrationInterface { - name = 'addDeletedAtToApplication1610361232572' + name = "addDeletedAtToApplication1610361232572" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "applications" ADD "deleted_at" TIMESTAMP`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "deleted_at"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "applications" ADD "deleted_at" TIMESTAMP`) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "deleted_at"`) + } } diff --git a/backend/core/src/migration/1610401966407-add-listing-display-waitlist-size-column.ts b/backend/core/src/migration/1610401966407-add-listing-display-waitlist-size-column.ts index c1cef899a7..6971cea3b1 100644 --- a/backend/core/src/migration/1610401966407-add-listing-display-waitlist-size-column.ts +++ b/backend/core/src/migration/1610401966407-add-listing-display-waitlist-size-column.ts @@ -1,14 +1,15 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addListingDisplayWaitlistSizeColumn1610401966407 implements MigrationInterface { - name = 'addListingDisplayWaitlistSizeColumn1610401966407' + name = "addListingDisplayWaitlistSizeColumn1610401966407" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" ADD "display_waitlist_size" boolean NOT NULL DEFAULT false`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "display_waitlist_size"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "listings" ADD "display_waitlist_size" boolean NOT NULL DEFAULT false` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "display_waitlist_size"`) + } } diff --git a/backend/core/src/migration/1610577576914-add-forget-password-fields.ts b/backend/core/src/migration/1610577576914-add-forget-password-fields.ts index e61c488bfa..d7299d9bf8 100644 --- a/backend/core/src/migration/1610577576914-add-forget-password-fields.ts +++ b/backend/core/src/migration/1610577576914-add-forget-password-fields.ts @@ -1,14 +1,13 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addForgetPasswordFields1610577576914 implements MigrationInterface { - name = 'addForgetPasswordFields1610577576914' + name = "addForgetPasswordFields1610577576914" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "user_accounts" ADD "reset_token" character varying`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "user_accounts" DROP COLUMN "reset_token"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "user_accounts" ADD "reset_token" character varying`) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "user_accounts" DROP COLUMN "reset_token"`) + } } diff --git a/backend/core/src/migration/1610715331956-add-listing-leasing-agent.ts b/backend/core/src/migration/1610715331956-add-listing-leasing-agent.ts index 63b35db522..f47e0ec0b7 100644 --- a/backend/core/src/migration/1610715331956-add-listing-leasing-agent.ts +++ b/backend/core/src/migration/1610715331956-add-listing-leasing-agent.ts @@ -1,28 +1,49 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addListingLeasingAgent1610715331956 implements MigrationInterface { - name = 'addListingLeasingAgent1610715331956' + name = "addListingLeasingAgent1610715331956" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`CREATE TABLE "listings_leasing_agents_user_accounts" ("listings_id" uuid NOT NULL, "user_accounts_id" uuid NOT NULL, CONSTRAINT "PK_6c10161c8ebb6e0291145688c56" PRIMARY KEY ("listings_id", "user_accounts_id"))`); - await queryRunner.query(`CREATE INDEX "IDX_f7b22af2c421e823f60c5f7d28" ON "listings_leasing_agents_user_accounts" ("listings_id") `); - await queryRunner.query(`CREATE INDEX "IDX_de53131bc8a08f824a5d3dd51e" ON "listings_leasing_agents_user_accounts" ("user_accounts_id") `); - await queryRunner.query(`ALTER TABLE "user_accounts" ADD "address_id" uuid`); - await queryRunner.query(`ALTER TABLE "user_accounts" ADD CONSTRAINT "UQ_a72c6ee9575828fce562bd20a63" UNIQUE ("address_id")`); - await queryRunner.query(`ALTER TABLE "user_accounts" ADD CONSTRAINT "FK_a72c6ee9575828fce562bd20a63" FOREIGN KEY ("address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "listings_leasing_agents_user_accounts" ADD CONSTRAINT "FK_f7b22af2c421e823f60c5f7d28b" FOREIGN KEY ("listings_id") REFERENCES "listings"("id") ON DELETE CASCADE ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "listings_leasing_agents_user_accounts" ADD CONSTRAINT "FK_de53131bc8a08f824a5d3dd51e3" FOREIGN KEY ("user_accounts_id") REFERENCES "user_accounts"("id") ON DELETE CASCADE ON UPDATE NO ACTION`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings_leasing_agents_user_accounts" DROP CONSTRAINT "FK_de53131bc8a08f824a5d3dd51e3"`); - await queryRunner.query(`ALTER TABLE "listings_leasing_agents_user_accounts" DROP CONSTRAINT "FK_f7b22af2c421e823f60c5f7d28b"`); - await queryRunner.query(`ALTER TABLE "user_accounts" DROP CONSTRAINT "FK_a72c6ee9575828fce562bd20a63"`); - await queryRunner.query(`ALTER TABLE "user_accounts" DROP CONSTRAINT "UQ_a72c6ee9575828fce562bd20a63"`); - await queryRunner.query(`ALTER TABLE "user_accounts" DROP COLUMN "address_id"`); - await queryRunner.query(`DROP INDEX "IDX_de53131bc8a08f824a5d3dd51e"`); - await queryRunner.query(`DROP INDEX "IDX_f7b22af2c421e823f60c5f7d28"`); - await queryRunner.query(`DROP TABLE "listings_leasing_agents_user_accounts"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TABLE "listings_leasing_agents_user_accounts" ("listings_id" uuid NOT NULL, "user_accounts_id" uuid NOT NULL, CONSTRAINT "PK_6c10161c8ebb6e0291145688c56" PRIMARY KEY ("listings_id", "user_accounts_id"))` + ) + await queryRunner.query( + `CREATE INDEX "IDX_f7b22af2c421e823f60c5f7d28" ON "listings_leasing_agents_user_accounts" ("listings_id") ` + ) + await queryRunner.query( + `CREATE INDEX "IDX_de53131bc8a08f824a5d3dd51e" ON "listings_leasing_agents_user_accounts" ("user_accounts_id") ` + ) + await queryRunner.query(`ALTER TABLE "user_accounts" ADD "address_id" uuid`) + await queryRunner.query( + `ALTER TABLE "user_accounts" ADD CONSTRAINT "UQ_a72c6ee9575828fce562bd20a63" UNIQUE ("address_id")` + ) + await queryRunner.query( + `ALTER TABLE "user_accounts" ADD CONSTRAINT "FK_a72c6ee9575828fce562bd20a63" FOREIGN KEY ("address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "listings_leasing_agents_user_accounts" ADD CONSTRAINT "FK_f7b22af2c421e823f60c5f7d28b" FOREIGN KEY ("listings_id") REFERENCES "listings"("id") ON DELETE CASCADE ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "listings_leasing_agents_user_accounts" ADD CONSTRAINT "FK_de53131bc8a08f824a5d3dd51e3" FOREIGN KEY ("user_accounts_id") REFERENCES "user_accounts"("id") ON DELETE CASCADE ON UPDATE NO ACTION` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "listings_leasing_agents_user_accounts" DROP CONSTRAINT "FK_de53131bc8a08f824a5d3dd51e3"` + ) + await queryRunner.query( + `ALTER TABLE "listings_leasing_agents_user_accounts" DROP CONSTRAINT "FK_f7b22af2c421e823f60c5f7d28b"` + ) + await queryRunner.query( + `ALTER TABLE "user_accounts" DROP CONSTRAINT "FK_a72c6ee9575828fce562bd20a63"` + ) + await queryRunner.query( + `ALTER TABLE "user_accounts" DROP CONSTRAINT "UQ_a72c6ee9575828fce562bd20a63"` + ) + await queryRunner.query(`ALTER TABLE "user_accounts" DROP COLUMN "address_id"`) + await queryRunner.query(`DROP INDEX "IDX_de53131bc8a08f824a5d3dd51e"`) + await queryRunner.query(`DROP INDEX "IDX_f7b22af2c421e823f60c5f7d28"`) + await queryRunner.query(`DROP TABLE "listings_leasing_agents_user_accounts"`) + } } diff --git a/backend/core/src/migration/1610715660175-remove-address-from-user.ts b/backend/core/src/migration/1610715660175-remove-address-from-user.ts index 48e7214919..c77ae15df8 100644 --- a/backend/core/src/migration/1610715660175-remove-address-from-user.ts +++ b/backend/core/src/migration/1610715660175-remove-address-from-user.ts @@ -1,18 +1,25 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class removeAddressFromUser1610715660175 implements MigrationInterface { - name = 'removeAddressFromUser1610715660175' + name = "removeAddressFromUser1610715660175" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "user_accounts" DROP CONSTRAINT "FK_a72c6ee9575828fce562bd20a63"`); - await queryRunner.query(`ALTER TABLE "user_accounts" DROP CONSTRAINT "UQ_a72c6ee9575828fce562bd20a63"`); - await queryRunner.query(`ALTER TABLE "user_accounts" DROP COLUMN "address_id"`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "user_accounts" ADD "address_id" uuid`); - await queryRunner.query(`ALTER TABLE "user_accounts" ADD CONSTRAINT "UQ_a72c6ee9575828fce562bd20a63" UNIQUE ("address_id")`); - await queryRunner.query(`ALTER TABLE "user_accounts" ADD CONSTRAINT "FK_a72c6ee9575828fce562bd20a63" FOREIGN KEY ("address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "user_accounts" DROP CONSTRAINT "FK_a72c6ee9575828fce562bd20a63"` + ) + await queryRunner.query( + `ALTER TABLE "user_accounts" DROP CONSTRAINT "UQ_a72c6ee9575828fce562bd20a63"` + ) + await queryRunner.query(`ALTER TABLE "user_accounts" DROP COLUMN "address_id"`) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "user_accounts" ADD "address_id" uuid`) + await queryRunner.query( + `ALTER TABLE "user_accounts" ADD CONSTRAINT "UQ_a72c6ee9575828fce562bd20a63" UNIQUE ("address_id")` + ) + await queryRunner.query( + `ALTER TABLE "user_accounts" ADD CONSTRAINT "FK_a72c6ee9575828fce562bd20a63" FOREIGN KEY ("address_id") REFERENCES "address"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } } diff --git a/backend/core/src/migration/1611163327131-fix-yes-no-answers-db-column-type.ts b/backend/core/src/migration/1611163327131-fix-yes-no-answers-db-column-type.ts index 4b01ffd186..4bf6ac3ab2 100644 --- a/backend/core/src/migration/1611163327131-fix-yes-no-answers-db-column-type.ts +++ b/backend/core/src/migration/1611163327131-fix-yes-no-answers-db-column-type.ts @@ -1,20 +1,19 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class fixYesNoAnswersDbColumnType1611163327131 implements MigrationInterface { - name = 'fixYesNoAnswersDbColumnType1611163327131' + name = "fixYesNoAnswersDbColumnType1611163327131" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "household_member" DROP COLUMN "same_address"`); - await queryRunner.query(`ALTER TABLE "household_member" ADD "same_address" text`); - await queryRunner.query(`ALTER TABLE "household_member" DROP COLUMN "work_in_region"`); - await queryRunner.query(`ALTER TABLE "household_member" ADD "work_in_region" text`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "household_member" DROP COLUMN "work_in_region"`); - await queryRunner.query(`ALTER TABLE "household_member" ADD "work_in_region" boolean`); - await queryRunner.query(`ALTER TABLE "household_member" DROP COLUMN "same_address"`); - await queryRunner.query(`ALTER TABLE "household_member" ADD "same_address" boolean`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "household_member" DROP COLUMN "same_address"`) + await queryRunner.query(`ALTER TABLE "household_member" ADD "same_address" text`) + await queryRunner.query(`ALTER TABLE "household_member" DROP COLUMN "work_in_region"`) + await queryRunner.query(`ALTER TABLE "household_member" ADD "work_in_region" text`) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "household_member" DROP COLUMN "work_in_region"`) + await queryRunner.query(`ALTER TABLE "household_member" ADD "work_in_region" boolean`) + await queryRunner.query(`ALTER TABLE "household_member" DROP COLUMN "same_address"`) + await queryRunner.query(`ALTER TABLE "household_member" ADD "same_address" boolean`) + } } diff --git a/backend/core/src/migration/1611170324796-redefine-application-preferences.ts b/backend/core/src/migration/1611170324796-redefine-application-preferences.ts index db2cba3cc6..82dfdaa6e1 100644 --- a/backend/core/src/migration/1611170324796-redefine-application-preferences.ts +++ b/backend/core/src/migration/1611170324796-redefine-application-preferences.ts @@ -1,23 +1,41 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class redefineApplicationPreferences1611170324796 implements MigrationInterface { - name = 'redefineApplicationPreferences1611170324796' + name = "redefineApplicationPreferences1611170324796" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "FK_94732707236694795230ad64c78"`); - await queryRunner.query(`CREATE TABLE "application_preference" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "data" jsonb, "application_id" uuid, "preference_id" uuid, CONSTRAINT "PK_e24d88ff86742179cf93434fcae" PRIMARY KEY ("id"))`); - await queryRunner.query(`ALTER TABLE "applications" DROP CONSTRAINT "UQ_94732707236694795230ad64c78"`); - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "preferences_id"`); - await queryRunner.query(`ALTER TABLE "application_preference" ADD CONSTRAINT "FK_3a650c5299b1063f57bf6a2422e" FOREIGN KEY ("application_id") REFERENCES "applications"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "application_preference" ADD CONSTRAINT "FK_fb3200f0f8c9469aee290c37158" FOREIGN KEY ("preference_id") REFERENCES "preferences"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "applications" DROP CONSTRAINT "FK_94732707236694795230ad64c78"` + ) + await queryRunner.query( + `CREATE TABLE "application_preference" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "data" jsonb, "application_id" uuid, "preference_id" uuid, CONSTRAINT "PK_e24d88ff86742179cf93434fcae" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `ALTER TABLE "applications" DROP CONSTRAINT "UQ_94732707236694795230ad64c78"` + ) + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "preferences_id"`) + await queryRunner.query( + `ALTER TABLE "application_preference" ADD CONSTRAINT "FK_3a650c5299b1063f57bf6a2422e" FOREIGN KEY ("application_id") REFERENCES "applications"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "application_preference" ADD CONSTRAINT "FK_fb3200f0f8c9469aee290c37158" FOREIGN KEY ("preference_id") REFERENCES "preferences"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "application_preference" DROP CONSTRAINT "FK_fb3200f0f8c9469aee290c37158"`); - await queryRunner.query(`ALTER TABLE "application_preference" DROP CONSTRAINT "FK_3a650c5299b1063f57bf6a2422e"`); - await queryRunner.query(`ALTER TABLE "applications" ADD "preferences_id" uuid`); - await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "UQ_94732707236694795230ad64c78" UNIQUE ("preferences_id")`); - await queryRunner.query(`DROP TABLE "application_preference"`); - await queryRunner.query(`ALTER TABLE "applications" ADD CONSTRAINT "FK_94732707236694795230ad64c78" FOREIGN KEY ("preferences_id") REFERENCES "application_preferences"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "application_preference" DROP CONSTRAINT "FK_fb3200f0f8c9469aee290c37158"` + ) + await queryRunner.query( + `ALTER TABLE "application_preference" DROP CONSTRAINT "FK_3a650c5299b1063f57bf6a2422e"` + ) + await queryRunner.query(`ALTER TABLE "applications" ADD "preferences_id" uuid`) + await queryRunner.query( + `ALTER TABLE "applications" ADD CONSTRAINT "UQ_94732707236694795230ad64c78" UNIQUE ("preferences_id")` + ) + await queryRunner.query(`DROP TABLE "application_preference"`) + await queryRunner.query( + `ALTER TABLE "applications" ADD CONSTRAINT "FK_94732707236694795230ad64c78" FOREIGN KEY ("preferences_id") REFERENCES "application_preferences"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } } diff --git a/backend/core/src/migration/1611265543779-add-form-metadata-to-preference.ts b/backend/core/src/migration/1611265543779-add-form-metadata-to-preference.ts index 6c54cf0771..769c3c223e 100644 --- a/backend/core/src/migration/1611265543779-add-form-metadata-to-preference.ts +++ b/backend/core/src/migration/1611265543779-add-form-metadata-to-preference.ts @@ -1,18 +1,19 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addFormMetadataToPreference1611265543779 implements MigrationInterface { - name = 'addFormMetadataToPreference1611265543779' + name = "addFormMetadataToPreference1611265543779" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "preferences" ADD "form_metadata" jsonb`); - await queryRunner.query(`ALTER TABLE "application_preference" ALTER COLUMN "data" SET NOT NULL`); - await queryRunner.query(`COMMENT ON COLUMN "application_preference"."data" IS NULL`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`COMMENT ON COLUMN "application_preference"."data" IS NULL`); - await queryRunner.query(`ALTER TABLE "application_preference" ALTER COLUMN "data" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "preferences" DROP COLUMN "form_metadata"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "preferences" ADD "form_metadata" jsonb`) + await queryRunner.query(`ALTER TABLE "application_preference" ALTER COLUMN "data" SET NOT NULL`) + await queryRunner.query(`COMMENT ON COLUMN "application_preference"."data" IS NULL`) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`COMMENT ON COLUMN "application_preference"."data" IS NULL`) + await queryRunner.query( + `ALTER TABLE "application_preference" ALTER COLUMN "data" DROP NOT NULL` + ) + await queryRunner.query(`ALTER TABLE "preferences" DROP COLUMN "form_metadata"`) + } } diff --git a/backend/core/src/migration/1612262618223-add-csv-formatting-type-to-listing.ts b/backend/core/src/migration/1612262618223-add-csv-formatting-type-to-listing.ts index ce615686d5..ca369ae751 100644 --- a/backend/core/src/migration/1612262618223-add-csv-formatting-type-to-listing.ts +++ b/backend/core/src/migration/1612262618223-add-csv-formatting-type-to-listing.ts @@ -1,14 +1,15 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addCsvFormattingTypeToListing1612262618223 implements MigrationInterface { - name = 'addCsvFormattingTypeToListing1612262618223' + name = "addCsvFormattingTypeToListing1612262618223" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" ADD "csv_formatting_type" character varying NOT NULL DEFAULT 'basic'`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "csv_formatting_type"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "listings" ADD "csv_formatting_type" character varying NOT NULL DEFAULT 'basic'` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "csv_formatting_type"`) + } } diff --git a/backend/core/src/migration/1612345865476-temporarily-remove-application-preference-table.ts b/backend/core/src/migration/1612345865476-temporarily-remove-application-preference-table.ts index 90e18c98f9..7f9bfb3c80 100644 --- a/backend/core/src/migration/1612345865476-temporarily-remove-application-preference-table.ts +++ b/backend/core/src/migration/1612345865476-temporarily-remove-application-preference-table.ts @@ -1,14 +1,16 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" -export class temporarilyRemoveApplicationPreferenceTable1612345865476 implements MigrationInterface { - name = 'temporarilyRemoveApplicationPreferenceTable1612345865476' +export class temporarilyRemoveApplicationPreferenceTable1612345865476 + implements MigrationInterface { + name = "temporarilyRemoveApplicationPreferenceTable1612345865476" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "applications" ADD "preferences" jsonb NOT NULL default '[]'::jsonb`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "preferences"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "applications" ADD "preferences" jsonb NOT NULL default '[]'::jsonb` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "preferences"`) + } } diff --git a/backend/core/src/migration/1612777228056-make-ami-chart-items-a-jsonb-column.ts b/backend/core/src/migration/1612777228056-make-ami-chart-items-a-jsonb-column.ts index f48af436f8..837c9534ed 100644 --- a/backend/core/src/migration/1612777228056-make-ami-chart-items-a-jsonb-column.ts +++ b/backend/core/src/migration/1612777228056-make-ami-chart-items-a-jsonb-column.ts @@ -1,14 +1,15 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class makeAmiChartItemsAJsonbColumn1612777228056 implements MigrationInterface { - name = 'makeAmiChartItemsAJsonbColumn1612777228056' + name = "makeAmiChartItemsAJsonbColumn1612777228056" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "ami_chart" ADD "items" jsonb NOT NULL default '[]'::jsonb`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "ami_chart" DROP COLUMN "items"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "ami_chart" ADD "items" jsonb NOT NULL default '[]'::jsonb` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "ami_chart" DROP COLUMN "items"`) + } } diff --git a/backend/core/src/migration/1612778538403-make-listing-assets-a-jsonb-column.ts b/backend/core/src/migration/1612778538403-make-listing-assets-a-jsonb-column.ts index 11a9a72415..3aeb1f7c23 100644 --- a/backend/core/src/migration/1612778538403-make-listing-assets-a-jsonb-column.ts +++ b/backend/core/src/migration/1612778538403-make-listing-assets-a-jsonb-column.ts @@ -1,14 +1,15 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class makeListingAssetsAJsonbColumn1612778538403 implements MigrationInterface { - name = 'makeListingAssetsAJsonbColumn1612778538403' + name = "makeListingAssetsAJsonbColumn1612778538403" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" ADD "assets" jsonb NOT NULL default '[]'::jsonb`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "assets"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "listings" ADD "assets" jsonb NOT NULL default '[]'::jsonb` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "assets"`) + } } diff --git a/backend/core/src/migration/1612778951266-make-listing-application-methods-a-jsonb-column.ts b/backend/core/src/migration/1612778951266-make-listing-application-methods-a-jsonb-column.ts index c340d7c510..89350212d8 100644 --- a/backend/core/src/migration/1612778951266-make-listing-application-methods-a-jsonb-column.ts +++ b/backend/core/src/migration/1612778951266-make-listing-application-methods-a-jsonb-column.ts @@ -1,14 +1,15 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class makeListingApplicationMethodsAJsonbColumn1612778951266 implements MigrationInterface { - name = 'makeListingApplicationMethodsAJsonbColumn1612778951266' + name = "makeListingApplicationMethodsAJsonbColumn1612778951266" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" ADD "application_methods" jsonb NOT NULL default '[]'::jsonb`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_methods"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "listings" ADD "application_methods" jsonb NOT NULL default '[]'::jsonb` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_methods"`) + } } diff --git a/backend/core/src/migration/1612779568745-make-listing-events-a-jsonb-column.ts b/backend/core/src/migration/1612779568745-make-listing-events-a-jsonb-column.ts index 4d3fc19272..25fb977b86 100644 --- a/backend/core/src/migration/1612779568745-make-listing-events-a-jsonb-column.ts +++ b/backend/core/src/migration/1612779568745-make-listing-events-a-jsonb-column.ts @@ -1,14 +1,15 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class makeListingEventsAJsonbColumn1612779568745 implements MigrationInterface { - name = 'makeListingEventsAJsonbColumn1612779568745' + name = "makeListingEventsAJsonbColumn1612779568745" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" ADD "events" jsonb NOT NULL default '[]'::jsonb`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "events"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "listings" ADD "events" jsonb NOT NULL default '[]'::jsonb` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "events"`) + } } diff --git a/backend/core/src/migration/1614083153257-align-migration-with-latest-changes.ts b/backend/core/src/migration/1614083153257-align-migration-with-latest-changes.ts index 57298a0bab..89b7801bba 100644 --- a/backend/core/src/migration/1614083153257-align-migration-with-latest-changes.ts +++ b/backend/core/src/migration/1614083153257-align-migration-with-latest-changes.ts @@ -1,32 +1,37 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class alignMigrationWithLatestChanges1614083153257 implements MigrationInterface { - name = 'alignMigrationWithLatestChanges1614083153257' + name = "alignMigrationWithLatestChanges1614083153257" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`COMMENT ON COLUMN "applications"."preferences" IS NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "preferences" DROP DEFAULT`); - await queryRunner.query(`COMMENT ON COLUMN "listings"."application_methods" IS NULL`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "application_methods" DROP DEFAULT`); - await queryRunner.query(`COMMENT ON COLUMN "listings"."assets" IS NULL`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "assets" DROP DEFAULT`); - await queryRunner.query(`COMMENT ON COLUMN "listings"."events" IS NULL`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "events" DROP DEFAULT`); - await queryRunner.query(`COMMENT ON COLUMN "ami_chart"."items" IS NULL`); - await queryRunner.query(`ALTER TABLE "ami_chart" ALTER COLUMN "items" DROP DEFAULT`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "ami_chart" ALTER COLUMN "items" SET DEFAULT '[]'`); - await queryRunner.query(`COMMENT ON COLUMN "ami_chart"."items" IS NULL`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "events" SET DEFAULT '[]'`); - await queryRunner.query(`COMMENT ON COLUMN "listings"."events" IS NULL`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "assets" SET DEFAULT '[]'`); - await queryRunner.query(`COMMENT ON COLUMN "listings"."assets" IS NULL`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "application_methods" SET DEFAULT '[]'`); - await queryRunner.query(`COMMENT ON COLUMN "listings"."application_methods" IS NULL`); - await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "preferences" SET DEFAULT '[]'`); - await queryRunner.query(`COMMENT ON COLUMN "applications"."preferences" IS NULL`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`COMMENT ON COLUMN "applications"."preferences" IS NULL`) + await queryRunner.query(`ALTER TABLE "applications" ALTER COLUMN "preferences" DROP DEFAULT`) + await queryRunner.query(`COMMENT ON COLUMN "listings"."application_methods" IS NULL`) + await queryRunner.query( + `ALTER TABLE "listings" ALTER COLUMN "application_methods" DROP DEFAULT` + ) + await queryRunner.query(`COMMENT ON COLUMN "listings"."assets" IS NULL`) + await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "assets" DROP DEFAULT`) + await queryRunner.query(`COMMENT ON COLUMN "listings"."events" IS NULL`) + await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "events" DROP DEFAULT`) + await queryRunner.query(`COMMENT ON COLUMN "ami_chart"."items" IS NULL`) + await queryRunner.query(`ALTER TABLE "ami_chart" ALTER COLUMN "items" DROP DEFAULT`) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "ami_chart" ALTER COLUMN "items" SET DEFAULT '[]'`) + await queryRunner.query(`COMMENT ON COLUMN "ami_chart"."items" IS NULL`) + await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "events" SET DEFAULT '[]'`) + await queryRunner.query(`COMMENT ON COLUMN "listings"."events" IS NULL`) + await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "assets" SET DEFAULT '[]'`) + await queryRunner.query(`COMMENT ON COLUMN "listings"."assets" IS NULL`) + await queryRunner.query( + `ALTER TABLE "listings" ALTER COLUMN "application_methods" SET DEFAULT '[]'` + ) + await queryRunner.query(`COMMENT ON COLUMN "listings"."application_methods" IS NULL`) + await queryRunner.query( + `ALTER TABLE "applications" ALTER COLUMN "preferences" SET DEFAULT '[]'` + ) + await queryRunner.query(`COMMENT ON COLUMN "applications"."preferences" IS NULL`) + } } diff --git a/backend/core/src/migration/1617095866285-add-afs-related-migrations.ts b/backend/core/src/migration/1617095866285-add-afs-related-migrations.ts index c5c34b57fb..b6fe3e1bf3 100644 --- a/backend/core/src/migration/1617095866285-add-afs-related-migrations.ts +++ b/backend/core/src/migration/1617095866285-add-afs-related-migrations.ts @@ -1,28 +1,51 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addAfsRelatedMigrations1617095866285 implements MigrationInterface { - name = 'addAfsRelatedMigrations1617095866285' + name = "addAfsRelatedMigrations1617095866285" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`CREATE TABLE "application_flagged_set" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "rule" character varying NOT NULL, "resolved" boolean NOT NULL, "resolved_time" TIMESTAMP WITH TIME ZONE, "status" character varying NOT NULL DEFAULT 'flagged', "resolving_user_id_id" uuid, "listing_id" uuid, CONSTRAINT "PK_81969e689800a802b75ffd883cc" PRIMARY KEY ("id"))`); - await queryRunner.query(`CREATE TABLE "application_flagged_set_applications_applications" ("application_flagged_set_id" uuid NOT NULL, "applications_id" uuid NOT NULL, CONSTRAINT "PK_ceffc85d4559c5de81c20081c5e" PRIMARY KEY ("application_flagged_set_id", "applications_id"))`); - await queryRunner.query(`CREATE INDEX "IDX_93f583f2d43fb21c5d7ceac57e" ON "application_flagged_set_applications_applications" ("application_flagged_set_id") `); - await queryRunner.query(`CREATE INDEX "IDX_bbae218ba0eff977157fad5ea3" ON "application_flagged_set_applications_applications" ("applications_id") `); - await queryRunner.query(`ALTER TABLE "application_flagged_set" ADD CONSTRAINT "FK_23c3b0688a74c8c2c59e1016bf0" FOREIGN KEY ("resolving_user_id_id") REFERENCES "user_accounts"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "application_flagged_set" ADD CONSTRAINT "FK_f2ace84eebd770f1387b47e5e45" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "application_flagged_set_applications_applications" ADD CONSTRAINT "FK_93f583f2d43fb21c5d7ceac57e7" FOREIGN KEY ("application_flagged_set_id") REFERENCES "application_flagged_set"("id") ON DELETE CASCADE ON UPDATE NO ACTION`); - await queryRunner.query(`ALTER TABLE "application_flagged_set_applications_applications" ADD CONSTRAINT "FK_bbae218ba0eff977157fad5ea31" FOREIGN KEY ("applications_id") REFERENCES "applications"("id") ON DELETE CASCADE ON UPDATE NO ACTION`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "application_flagged_set_applications_applications" DROP CONSTRAINT "FK_bbae218ba0eff977157fad5ea31"`); - await queryRunner.query(`ALTER TABLE "application_flagged_set_applications_applications" DROP CONSTRAINT "FK_93f583f2d43fb21c5d7ceac57e7"`); - await queryRunner.query(`ALTER TABLE "application_flagged_set" DROP CONSTRAINT "FK_f2ace84eebd770f1387b47e5e45"`); - await queryRunner.query(`ALTER TABLE "application_flagged_set" DROP CONSTRAINT "FK_23c3b0688a74c8c2c59e1016bf0"`); - await queryRunner.query(`DROP INDEX "IDX_bbae218ba0eff977157fad5ea3"`); - await queryRunner.query(`DROP INDEX "IDX_93f583f2d43fb21c5d7ceac57e"`); - await queryRunner.query(`DROP TABLE "application_flagged_set_applications_applications"`); - await queryRunner.query(`DROP TABLE "application_flagged_set"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TABLE "application_flagged_set" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "rule" character varying NOT NULL, "resolved" boolean NOT NULL, "resolved_time" TIMESTAMP WITH TIME ZONE, "status" character varying NOT NULL DEFAULT 'flagged', "resolving_user_id_id" uuid, "listing_id" uuid, CONSTRAINT "PK_81969e689800a802b75ffd883cc" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `CREATE TABLE "application_flagged_set_applications_applications" ("application_flagged_set_id" uuid NOT NULL, "applications_id" uuid NOT NULL, CONSTRAINT "PK_ceffc85d4559c5de81c20081c5e" PRIMARY KEY ("application_flagged_set_id", "applications_id"))` + ) + await queryRunner.query( + `CREATE INDEX "IDX_93f583f2d43fb21c5d7ceac57e" ON "application_flagged_set_applications_applications" ("application_flagged_set_id") ` + ) + await queryRunner.query( + `CREATE INDEX "IDX_bbae218ba0eff977157fad5ea3" ON "application_flagged_set_applications_applications" ("applications_id") ` + ) + await queryRunner.query( + `ALTER TABLE "application_flagged_set" ADD CONSTRAINT "FK_23c3b0688a74c8c2c59e1016bf0" FOREIGN KEY ("resolving_user_id_id") REFERENCES "user_accounts"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "application_flagged_set" ADD CONSTRAINT "FK_f2ace84eebd770f1387b47e5e45" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "application_flagged_set_applications_applications" ADD CONSTRAINT "FK_93f583f2d43fb21c5d7ceac57e7" FOREIGN KEY ("application_flagged_set_id") REFERENCES "application_flagged_set"("id") ON DELETE CASCADE ON UPDATE NO ACTION` + ) + await queryRunner.query( + `ALTER TABLE "application_flagged_set_applications_applications" ADD CONSTRAINT "FK_bbae218ba0eff977157fad5ea31" FOREIGN KEY ("applications_id") REFERENCES "applications"("id") ON DELETE CASCADE ON UPDATE NO ACTION` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "application_flagged_set_applications_applications" DROP CONSTRAINT "FK_bbae218ba0eff977157fad5ea31"` + ) + await queryRunner.query( + `ALTER TABLE "application_flagged_set_applications_applications" DROP CONSTRAINT "FK_93f583f2d43fb21c5d7ceac57e7"` + ) + await queryRunner.query( + `ALTER TABLE "application_flagged_set" DROP CONSTRAINT "FK_f2ace84eebd770f1387b47e5e45"` + ) + await queryRunner.query( + `ALTER TABLE "application_flagged_set" DROP CONSTRAINT "FK_23c3b0688a74c8c2c59e1016bf0"` + ) + await queryRunner.query(`DROP INDEX "IDX_bbae218ba0eff977157fad5ea3"`) + await queryRunner.query(`DROP INDEX "IDX_93f583f2d43fb21c5d7ceac57e"`) + await queryRunner.query(`DROP TABLE "application_flagged_set_applications_applications"`) + await queryRunner.query(`DROP TABLE "application_flagged_set"`) + } } diff --git a/backend/core/src/migration/1617096743504-add-afs-related-migrations.ts b/backend/core/src/migration/1617096743504-add-afs-related-migrations.ts index 1fe0d05980..416cba9f66 100644 --- a/backend/core/src/migration/1617096743504-add-afs-related-migrations.ts +++ b/backend/core/src/migration/1617096743504-add-afs-related-migrations.ts @@ -1,20 +1,31 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addAfsRelatedMigrations1617096743504 implements MigrationInterface { - name = 'addAfsRelatedMigrations1617096743504' + name = "addAfsRelatedMigrations1617096743504" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "application_flagged_set" DROP CONSTRAINT "FK_f2ace84eebd770f1387b47e5e45"`); - await queryRunner.query(`ALTER TABLE "application_flagged_set" ALTER COLUMN "listing_id" SET NOT NULL`); - await queryRunner.query(`COMMENT ON COLUMN "application_flagged_set"."listing_id" IS NULL`); - await queryRunner.query(`ALTER TABLE "application_flagged_set" ADD CONSTRAINT "FK_f2ace84eebd770f1387b47e5e45" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "application_flagged_set" DROP CONSTRAINT "FK_f2ace84eebd770f1387b47e5e45"`); - await queryRunner.query(`COMMENT ON COLUMN "application_flagged_set"."listing_id" IS NULL`); - await queryRunner.query(`ALTER TABLE "application_flagged_set" ALTER COLUMN "listing_id" DROP NOT NULL`); - await queryRunner.query(`ALTER TABLE "application_flagged_set" ADD CONSTRAINT "FK_f2ace84eebd770f1387b47e5e45" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "application_flagged_set" DROP CONSTRAINT "FK_f2ace84eebd770f1387b47e5e45"` + ) + await queryRunner.query( + `ALTER TABLE "application_flagged_set" ALTER COLUMN "listing_id" SET NOT NULL` + ) + await queryRunner.query(`COMMENT ON COLUMN "application_flagged_set"."listing_id" IS NULL`) + await queryRunner.query( + `ALTER TABLE "application_flagged_set" ADD CONSTRAINT "FK_f2ace84eebd770f1387b47e5e45" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "application_flagged_set" DROP CONSTRAINT "FK_f2ace84eebd770f1387b47e5e45"` + ) + await queryRunner.query(`COMMENT ON COLUMN "application_flagged_set"."listing_id" IS NULL`) + await queryRunner.query( + `ALTER TABLE "application_flagged_set" ALTER COLUMN "listing_id" DROP NOT NULL` + ) + await queryRunner.query( + `ALTER TABLE "application_flagged_set" ADD CONSTRAINT "FK_f2ace84eebd770f1387b47e5e45" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } } diff --git a/backend/core/src/migration/1617270725517-add-application-marked-as-duplicate.ts b/backend/core/src/migration/1617270725517-add-application-marked-as-duplicate.ts index 3f0276a6da..b96556af0c 100644 --- a/backend/core/src/migration/1617270725517-add-application-marked-as-duplicate.ts +++ b/backend/core/src/migration/1617270725517-add-application-marked-as-duplicate.ts @@ -1,14 +1,15 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addApplicationMarkedAsDuplicate1617270725517 implements MigrationInterface { - name = 'addApplicationMarkedAsDuplicate1617270725517' + name = "addApplicationMarkedAsDuplicate1617270725517" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "applications" ADD "marked_as_duplicate" boolean NOT NULL DEFAULT false`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "marked_as_duplicate"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "applications" ADD "marked_as_duplicate" boolean NOT NULL DEFAULT false` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "applications" DROP COLUMN "marked_as_duplicate"`) + } } diff --git a/backend/core/src/migration/1617271816594-remove-application-unused-resolved-status.ts b/backend/core/src/migration/1617271816594-remove-application-unused-resolved-status.ts index 90b7cccf33..9db613e3cb 100644 --- a/backend/core/src/migration/1617271816594-remove-application-unused-resolved-status.ts +++ b/backend/core/src/migration/1617271816594-remove-application-unused-resolved-status.ts @@ -1,22 +1,31 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class removeApplicationUnusedResolvedStatus1617271816594 implements MigrationInterface { - name = 'removeApplicationUnusedResolvedStatus1617271816594' + name = "removeApplicationUnusedResolvedStatus1617271816594" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "application_flagged_set" DROP CONSTRAINT "FK_23c3b0688a74c8c2c59e1016bf0"`); - await queryRunner.query(`ALTER TABLE "application_flagged_set" DROP COLUMN "resolved"`); - await queryRunner.query(`ALTER TABLE "application_flagged_set" DROP COLUMN "resolving_user_id_id"`); - await queryRunner.query(`ALTER TABLE "application_flagged_set" ADD "resolving_user_id" uuid`); - await queryRunner.query(`ALTER TABLE "application_flagged_set" ADD CONSTRAINT "FK_3aed12c210529ed798beee9d09e" FOREIGN KEY ("resolving_user_id") REFERENCES "user_accounts"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "application_flagged_set" DROP CONSTRAINT "FK_3aed12c210529ed798beee9d09e"`); - await queryRunner.query(`ALTER TABLE "application_flagged_set" DROP COLUMN "resolving_user_id"`); - await queryRunner.query(`ALTER TABLE "application_flagged_set" ADD "resolving_user_id_id" uuid`); - await queryRunner.query(`ALTER TABLE "application_flagged_set" ADD "resolved" boolean NOT NULL`); - await queryRunner.query(`ALTER TABLE "application_flagged_set" ADD CONSTRAINT "FK_23c3b0688a74c8c2c59e1016bf0" FOREIGN KEY ("resolving_user_id_id") REFERENCES "user_accounts"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "application_flagged_set" DROP CONSTRAINT "FK_23c3b0688a74c8c2c59e1016bf0"` + ) + await queryRunner.query(`ALTER TABLE "application_flagged_set" DROP COLUMN "resolved"`) + await queryRunner.query( + `ALTER TABLE "application_flagged_set" DROP COLUMN "resolving_user_id_id"` + ) + await queryRunner.query(`ALTER TABLE "application_flagged_set" ADD "resolving_user_id" uuid`) + await queryRunner.query( + `ALTER TABLE "application_flagged_set" ADD CONSTRAINT "FK_3aed12c210529ed798beee9d09e" FOREIGN KEY ("resolving_user_id") REFERENCES "user_accounts"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "application_flagged_set" DROP CONSTRAINT "FK_3aed12c210529ed798beee9d09e"` + ) + await queryRunner.query(`ALTER TABLE "application_flagged_set" DROP COLUMN "resolving_user_id"`) + await queryRunner.query(`ALTER TABLE "application_flagged_set" ADD "resolving_user_id_id" uuid`) + await queryRunner.query(`ALTER TABLE "application_flagged_set" ADD "resolved" boolean NOT NULL`) + await queryRunner.query( + `ALTER TABLE "application_flagged_set" ADD CONSTRAINT "FK_23c3b0688a74c8c2c59e1016bf0" FOREIGN KEY ("resolving_user_id_id") REFERENCES "user_accounts"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } } diff --git a/backend/core/src/migration/1618916649051-add-translations-table.ts b/backend/core/src/migration/1618916649051-add-translations-table.ts index f6f1bc2822..471be616a6 100644 --- a/backend/core/src/migration/1618916649051-add-translations-table.ts +++ b/backend/core/src/migration/1618916649051-add-translations-table.ts @@ -1,16 +1,19 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addTranslationsTable1618916649051 implements MigrationInterface { - name = 'addTranslationsTable1618916649051' + name = "addTranslationsTable1618916649051" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`CREATE TABLE "translations" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "county_code" character varying NOT NULL, "language" character varying NOT NULL, "key" text NOT NULL, "text" text NOT NULL, CONSTRAINT "PK_7aef875e43ab80d34a0cdd39c70" PRIMARY KEY ("id"))`); - await queryRunner.query(`CREATE UNIQUE INDEX "IDX_4c17bc3d8eefdb8702bb24a2c5" ON "translations" ("county_code", "language", "key") `); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`DROP INDEX "IDX_4c17bc3d8eefdb8702bb24a2c5"`); - await queryRunner.query(`DROP TABLE "translations"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TABLE "translations" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "county_code" character varying NOT NULL, "language" character varying NOT NULL, "key" text NOT NULL, "text" text NOT NULL, CONSTRAINT "PK_7aef875e43ab80d34a0cdd39c70" PRIMARY KEY ("id"))` + ) + await queryRunner.query( + `CREATE UNIQUE INDEX "IDX_4c17bc3d8eefdb8702bb24a2c5" ON "translations" ("county_code", "language", "key") ` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP INDEX "IDX_4c17bc3d8eefdb8702bb24a2c5"`) + await queryRunner.query(`DROP TABLE "translations"`) + } } diff --git a/backend/core/src/migration/1619094998058-alter-translations-table.ts b/backend/core/src/migration/1619094998058-alter-translations-table.ts index d3ab67c6f8..36bdbd4c13 100644 --- a/backend/core/src/migration/1619094998058-alter-translations-table.ts +++ b/backend/core/src/migration/1619094998058-alter-translations-table.ts @@ -1,22 +1,25 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class alterTranslationsTable1619094998058 implements MigrationInterface { - name = 'alterTranslationsTable1619094998058' + name = "alterTranslationsTable1619094998058" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`DROP INDEX "IDX_4c17bc3d8eefdb8702bb24a2c5"`); - await queryRunner.query(`ALTER TABLE "translations" DROP COLUMN "key"`); - await queryRunner.query(`ALTER TABLE "translations" DROP COLUMN "text"`); - await queryRunner.query(`ALTER TABLE "translations" ADD "translations" jsonb NOT NULL`); - await queryRunner.query(`CREATE UNIQUE INDEX "IDX_ada354174d7f8a8f3d56c39bba" ON "translations" ("county_code", "language") `); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`DROP INDEX "IDX_ada354174d7f8a8f3d56c39bba"`); - await queryRunner.query(`ALTER TABLE "translations" DROP COLUMN "translations"`); - await queryRunner.query(`ALTER TABLE "translations" ADD "text" text NOT NULL`); - await queryRunner.query(`ALTER TABLE "translations" ADD "key" text NOT NULL`); - await queryRunner.query(`CREATE UNIQUE INDEX "IDX_4c17bc3d8eefdb8702bb24a2c5" ON "translations" ("county_code", "language", "key") `); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP INDEX "IDX_4c17bc3d8eefdb8702bb24a2c5"`) + await queryRunner.query(`ALTER TABLE "translations" DROP COLUMN "key"`) + await queryRunner.query(`ALTER TABLE "translations" DROP COLUMN "text"`) + await queryRunner.query(`ALTER TABLE "translations" ADD "translations" jsonb NOT NULL`) + await queryRunner.query( + `CREATE UNIQUE INDEX "IDX_ada354174d7f8a8f3d56c39bba" ON "translations" ("county_code", "language") ` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP INDEX "IDX_ada354174d7f8a8f3d56c39bba"`) + await queryRunner.query(`ALTER TABLE "translations" DROP COLUMN "translations"`) + await queryRunner.query(`ALTER TABLE "translations" ADD "text" text NOT NULL`) + await queryRunner.query(`ALTER TABLE "translations" ADD "key" text NOT NULL`) + await queryRunner.query( + `CREATE UNIQUE INDEX "IDX_4c17bc3d8eefdb8702bb24a2c5" ON "translations" ("county_code", "language", "key") ` + ) + } } diff --git a/backend/core/src/migration/1619453621997-add-user-language.ts b/backend/core/src/migration/1619453621997-add-user-language.ts index 27632beb02..d8287f65b7 100644 --- a/backend/core/src/migration/1619453621997-add-user-language.ts +++ b/backend/core/src/migration/1619453621997-add-user-language.ts @@ -1,14 +1,13 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addUserLanguage1619453621997 implements MigrationInterface { - name = 'addUserLanguage1619453621997' + name = "addUserLanguage1619453621997" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "user_accounts" ADD "language" character varying`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "user_accounts" DROP COLUMN "language"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "user_accounts" ADD "language" character varying`) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "user_accounts" DROP COLUMN "language"`) + } } diff --git a/backend/core/src/migration/1619558199145-add-missing-listing-fields.ts b/backend/core/src/migration/1619558199145-add-missing-listing-fields.ts index c575a98585..c794bb8597 100644 --- a/backend/core/src/migration/1619558199145-add-missing-listing-fields.ts +++ b/backend/core/src/migration/1619558199145-add-missing-listing-fields.ts @@ -1,16 +1,15 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addMissingListingFields1619558199145 implements MigrationInterface { - name = 'addMissingListingFields1619558199145' + name = "addMissingListingFields1619558199145" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" ADD "special_notes" text`); - await queryRunner.query(`ALTER TABLE "property" ADD "services_offered" text`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "property" DROP COLUMN "services_offered"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "special_notes"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "listings" ADD "special_notes" text`) + await queryRunner.query(`ALTER TABLE "property" ADD "services_offered" text`) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "property" DROP COLUMN "services_offered"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "special_notes"`) + } } diff --git a/backend/core/src/migration/1620653590005-add-county-code-to-listing-and-user.ts b/backend/core/src/migration/1620653590005-add-county-code-to-listing-and-user.ts index c0263b1118..d19a5c8a97 100644 --- a/backend/core/src/migration/1620653590005-add-county-code-to-listing-and-user.ts +++ b/backend/core/src/migration/1620653590005-add-county-code-to-listing-and-user.ts @@ -9,9 +9,9 @@ export class addCountyCodeToListingAndUser1620653590005 implements MigrationInte `ALTER TABLE "listings" ADD "county_code" character varying NOT NULL DEFAULT 'Alameda'` ) const mappings = { - 'Alameda': CountyCode.alameda, - 'San Mateo': CountyCode.san_mateo, - 'San Jose': CountyCode.san_jose + Alameda: CountyCode.alameda, + "San Mateo": CountyCode.san_mateo, + "San Jose": CountyCode.san_jose, } for (const [dbBuildingAddressCountyValue, countyCode] of Object.entries(mappings)) { await queryRunner.query( diff --git a/backend/core/src/migration/1622194142757-update-extra-data-in-application-preferences.ts b/backend/core/src/migration/1622194142757-update-extra-data-in-application-preferences.ts index ae9777e739..b6d3e6f845 100644 --- a/backend/core/src/migration/1622194142757-update-extra-data-in-application-preferences.ts +++ b/backend/core/src/migration/1622194142757-update-extra-data-in-application-preferences.ts @@ -5,12 +5,15 @@ export class updateExtraDataInApplicationPreferences1622194142757 implements Mig name = "updateExtraDataInApplicationPreferences1622194142757" public async up(queryRunner: QueryRunner): Promise { - const result: Array<{ id: string, preferences: Array }> = await queryRunner.query("SELECT id, preferences from applications") + const result: Array<{ + id: string + preferences: Array + }> = await queryRunner.query("SELECT id, preferences from applications") // NOTE: Find every option in preferences where extraData is // either undefined or null and replace it with an empty array for (const item of result) { for (const preference of item.preferences) { - if ('options' in preference) { + if ("options" in preference) { for (const option of preference.options) { if (option.extraData === undefined || option.extraData === null) { option.extraData = [] @@ -18,12 +21,12 @@ export class updateExtraDataInApplicationPreferences1622194142757 implements Mig } } } - await queryRunner.query("UPDATE applications SET preferences = ($1) WHERE id = ($2)", [JSON.stringify(item.preferences), item.id]) + await queryRunner.query("UPDATE applications SET preferences = ($1) WHERE id = ($2)", [ + JSON.stringify(item.preferences), + item.id, + ]) } } - public async down(queryRunner: QueryRunner): Promise { - - } - + public async down(queryRunner: QueryRunner): Promise {} } diff --git a/backend/core/src/migration/1623247120126-add-assets-table.ts b/backend/core/src/migration/1623247120126-add-assets-table.ts index 053b9065c3..498ab97f51 100644 --- a/backend/core/src/migration/1623247120126-add-assets-table.ts +++ b/backend/core/src/migration/1623247120126-add-assets-table.ts @@ -1,18 +1,21 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addAssetsTable1623247120126 implements MigrationInterface { - name = 'addAssetsTable1623247120126' + name = "addAssetsTable1623247120126" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "assets" DROP CONSTRAINT "FK_8cb54e950245d30651b903a4c61"`); - await queryRunner.query(`DROP INDEX "IDX_ada354174d7f8a8f3d56c39bba"`); - await queryRunner.query(`ALTER TABLE "assets" DROP COLUMN "listing_id"`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "assets" ADD "listing_id" uuid`); - await queryRunner.query(`CREATE UNIQUE INDEX "IDX_ada354174d7f8a8f3d56c39bba" ON "translations" ("county_code", "language") `); - await queryRunner.query(`ALTER TABLE "assets" ADD CONSTRAINT "FK_8cb54e950245d30651b903a4c61" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "assets" DROP CONSTRAINT "FK_8cb54e950245d30651b903a4c61"`) + await queryRunner.query(`DROP INDEX "IDX_ada354174d7f8a8f3d56c39bba"`) + await queryRunner.query(`ALTER TABLE "assets" DROP COLUMN "listing_id"`) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "assets" ADD "listing_id" uuid`) + await queryRunner.query( + `CREATE UNIQUE INDEX "IDX_ada354174d7f8a8f3d56c39bba" ON "translations" ("county_code", "language") ` + ) + await queryRunner.query( + `ALTER TABLE "assets" ADD CONSTRAINT "FK_8cb54e950245d30651b903a4c61" FOREIGN KEY ("listing_id") REFERENCES "listings"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } } diff --git a/backend/core/src/migration/1623279600284-listing-status-enum-closed.ts b/backend/core/src/migration/1623279600284-listing-status-enum-closed.ts index 3f9e7e1e93..7943f5f540 100644 --- a/backend/core/src/migration/1623279600284-listing-status-enum-closed.ts +++ b/backend/core/src/migration/1623279600284-listing-status-enum-closed.ts @@ -1,24 +1,33 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class listingStatusEnumClosed1623279600284 implements MigrationInterface { - name = 'listingStatusEnumClosed1623279600284' + name = "listingStatusEnumClosed1623279600284" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TYPE "public"."listings_status_enum" RENAME TO "listings_status_enum_old"`); - await queryRunner.query(`CREATE TYPE "listings_status_enum" AS ENUM('active', 'pending', 'closed')`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "status" DROP DEFAULT`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "status" TYPE "listings_status_enum" USING "status"::"text"::"listings_status_enum"`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "status" SET DEFAULT 'pending'`); - await queryRunner.query(`DROP TYPE "listings_status_enum_old"`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`CREATE TYPE "listings_status_enum_old" AS ENUM('active', 'pending')`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "status" DROP DEFAULT`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "status" TYPE "listings_status_enum_old" USING "status"::"text"::"listings_status_enum_old"`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "status" SET DEFAULT 'pending'`); - await queryRunner.query(`DROP TYPE "listings_status_enum"`); - await queryRunner.query(`ALTER TYPE "listings_status_enum_old" RENAME TO "listings_status_enum"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TYPE "public"."listings_status_enum" RENAME TO "listings_status_enum_old"` + ) + await queryRunner.query( + `CREATE TYPE "listings_status_enum" AS ENUM('active', 'pending', 'closed')` + ) + await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "status" DROP DEFAULT`) + await queryRunner.query( + `ALTER TABLE "listings" ALTER COLUMN "status" TYPE "listings_status_enum" USING "status"::"text"::"listings_status_enum"` + ) + await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "status" SET DEFAULT 'pending'`) + await queryRunner.query(`DROP TYPE "listings_status_enum_old"`) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`CREATE TYPE "listings_status_enum_old" AS ENUM('active', 'pending')`) + await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "status" DROP DEFAULT`) + await queryRunner.query( + `ALTER TABLE "listings" ALTER COLUMN "status" TYPE "listings_status_enum_old" USING "status"::"text"::"listings_status_enum_old"` + ) + await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "status" SET DEFAULT 'pending'`) + await queryRunner.query(`DROP TYPE "listings_status_enum"`) + await queryRunner.query( + `ALTER TYPE "listings_status_enum_old" RENAME TO "listings_status_enum"` + ) + } } diff --git a/backend/core/src/migration/1624272587523-add-jurisdictions-table.ts b/backend/core/src/migration/1624272587523-add-jurisdictions-table.ts index 22cb149be2..bfde31ae7a 100644 --- a/backend/core/src/migration/1624272587523-add-jurisdictions-table.ts +++ b/backend/core/src/migration/1624272587523-add-jurisdictions-table.ts @@ -1,34 +1,54 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" import { CountyCode } from "../shared/types/county-code" export class addJurisdictionsTable1624272587523 implements MigrationInterface { - name = 'addJurisdictionsTable1624272587523' + name = "addJurisdictionsTable1624272587523" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`CREATE TABLE "jurisdictions" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "name" text NOT NULL, CONSTRAINT "PK_7cc0bed21c9e2b32866c1109ec5" PRIMARY KEY ("id"))`); - await queryRunner.query(`ALTER TABLE "listings" ADD "jurisdiction_id" uuid`); - await queryRunner.query(`ALTER TABLE "preferences" ALTER COLUMN "page" DROP NOT NULL`); - await queryRunner.query(`COMMENT ON COLUMN "preferences"."page" IS NULL`); - await queryRunner.query(`ALTER TABLE "preferences" ALTER COLUMN "page" DROP DEFAULT`); - await queryRunner.query(`CREATE UNIQUE INDEX "IDX_8317da96d5a775889e2631cc25" ON "translations" ("county_code", "language") `); - await queryRunner.query(`ALTER TABLE "listings" ADD CONSTRAINT "FK_ba0026e02ecfe91791aed1a4818" FOREIGN KEY ("jurisdiction_id") REFERENCES "jurisdictions"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - for(const jurisdictionName of [CountyCode.alameda, CountyCode.san_jose, CountyCode.san_mateo]) { - const jurisdiction = await queryRunner.query(`INSERT INTO "jurisdictions" (name) VALUES ($1)`, [jurisdictionName]); - const listingsMatchingJurisdiction = await queryRunner.query(`SELECT id from listings where county_code = ($1)`, [jurisdictionName]) - for (const listing of listingsMatchingJurisdiction) { - await queryRunner.query(`UPDATE listings SET jurisdiction_id = ($1) WHERE id = ($2)`, [jurisdiction.id, listing.id]) - } - } - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" DROP CONSTRAINT "FK_ba0026e02ecfe91791aed1a4818"`); - await queryRunner.query(`DROP INDEX "IDX_8317da96d5a775889e2631cc25"`); - await queryRunner.query(`ALTER TABLE "preferences" ALTER COLUMN "page" SET DEFAULT '1'`); - await queryRunner.query(`COMMENT ON COLUMN "preferences"."page" IS NULL`); - await queryRunner.query(`ALTER TABLE "preferences" ALTER COLUMN "page" SET NOT NULL`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "jurisdiction_id"`); - await queryRunner.query(`DROP TABLE "jurisdictions"`); + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TABLE "jurisdictions" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "name" text NOT NULL, CONSTRAINT "PK_7cc0bed21c9e2b32866c1109ec5" PRIMARY KEY ("id"))` + ) + await queryRunner.query(`ALTER TABLE "listings" ADD "jurisdiction_id" uuid`) + await queryRunner.query(`ALTER TABLE "preferences" ALTER COLUMN "page" DROP NOT NULL`) + await queryRunner.query(`COMMENT ON COLUMN "preferences"."page" IS NULL`) + await queryRunner.query(`ALTER TABLE "preferences" ALTER COLUMN "page" DROP DEFAULT`) + await queryRunner.query( + `CREATE UNIQUE INDEX "IDX_8317da96d5a775889e2631cc25" ON "translations" ("county_code", "language") ` + ) + await queryRunner.query( + `ALTER TABLE "listings" ADD CONSTRAINT "FK_ba0026e02ecfe91791aed1a4818" FOREIGN KEY ("jurisdiction_id") REFERENCES "jurisdictions"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + for (const jurisdictionName of [ + CountyCode.alameda, + CountyCode.san_jose, + CountyCode.san_mateo, + ]) { + const jurisdiction = await queryRunner.query( + `INSERT INTO "jurisdictions" (name) VALUES ($1)`, + [jurisdictionName] + ) + const listingsMatchingJurisdiction = await queryRunner.query( + `SELECT id from listings where county_code = ($1)`, + [jurisdictionName] + ) + for (const listing of listingsMatchingJurisdiction) { + await queryRunner.query(`UPDATE listings SET jurisdiction_id = ($1) WHERE id = ($2)`, [ + jurisdiction.id, + listing.id, + ]) + } } + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "listings" DROP CONSTRAINT "FK_ba0026e02ecfe91791aed1a4818"` + ) + await queryRunner.query(`DROP INDEX "IDX_8317da96d5a775889e2631cc25"`) + await queryRunner.query(`ALTER TABLE "preferences" ALTER COLUMN "page" SET DEFAULT '1'`) + await queryRunner.query(`COMMENT ON COLUMN "preferences"."page" IS NULL`) + await queryRunner.query(`ALTER TABLE "preferences" ALTER COLUMN "page" SET NOT NULL`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "jurisdiction_id"`) + await queryRunner.query(`DROP TABLE "jurisdictions"`) + } } diff --git a/backend/core/src/migration/1624359766509-add-reserved-community-types-table.ts b/backend/core/src/migration/1624359766509-add-reserved-community-types-table.ts index 646882de17..b68a3075b2 100644 --- a/backend/core/src/migration/1624359766509-add-reserved-community-types-table.ts +++ b/backend/core/src/migration/1624359766509-add-reserved-community-types-table.ts @@ -1,20 +1,25 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addReservedCommunityTypesTable1624359766509 implements MigrationInterface { - name = 'addReservedCommunityTypesTable1624359766509' + name = "addReservedCommunityTypesTable1624359766509" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`CREATE TABLE "reserved_community_types" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "name" text NOT NULL, "description" text, CONSTRAINT "PK_af3937276e7bb53c30159d6ca0b" PRIMARY KEY ("id"))`); - await queryRunner.query(`ALTER TABLE "listings" ADD "reserved_community_min_age" integer`); - await queryRunner.query(`ALTER TABLE "listings" ADD "reserved_community_type_id" uuid`); - await queryRunner.query(`ALTER TABLE "listings" ADD CONSTRAINT "FK_1f6fac73d27c81b656cc6100267" FOREIGN KEY ("reserved_community_type_id") REFERENCES "reserved_community_types"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" DROP CONSTRAINT "FK_1f6fac73d27c81b656cc6100267"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "reserved_community_type_id"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "reserved_community_min_age"`); - await queryRunner.query(`DROP TABLE "reserved_community_types"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TABLE "reserved_community_types" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "created_at" TIMESTAMP NOT NULL DEFAULT now(), "updated_at" TIMESTAMP NOT NULL DEFAULT now(), "name" text NOT NULL, "description" text, CONSTRAINT "PK_af3937276e7bb53c30159d6ca0b" PRIMARY KEY ("id"))` + ) + await queryRunner.query(`ALTER TABLE "listings" ADD "reserved_community_min_age" integer`) + await queryRunner.query(`ALTER TABLE "listings" ADD "reserved_community_type_id" uuid`) + await queryRunner.query( + `ALTER TABLE "listings" ADD CONSTRAINT "FK_1f6fac73d27c81b656cc6100267" FOREIGN KEY ("reserved_community_type_id") REFERENCES "reserved_community_types"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "listings" DROP CONSTRAINT "FK_1f6fac73d27c81b656cc6100267"` + ) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "reserved_community_type_id"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "reserved_community_min_age"`) + await queryRunner.query(`DROP TABLE "reserved_community_types"`) + } } diff --git a/backend/core/src/migration/1624542123483-seed-reserved-community-type.ts b/backend/core/src/migration/1624542123483-seed-reserved-community-type.ts index f488c43c94..01c3e21f35 100644 --- a/backend/core/src/migration/1624542123483-seed-reserved-community-type.ts +++ b/backend/core/src/migration/1624542123483-seed-reserved-community-type.ts @@ -1,15 +1,18 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class seedReservedCommunityType1624542123483 implements MigrationInterface { - - reservedCommunityTypes = ["specialNeeds", "senior"] - public async up(queryRunner: QueryRunner): Promise { - for (const reservedCommunityType of this.reservedCommunityTypes) { - await queryRunner.query(`INSERT INTO reserved_community_types (name) VALUES ($1)`, [reservedCommunityType]) - } + reservedCommunityTypes = ["specialNeeds", "senior"] + public async up(queryRunner: QueryRunner): Promise { + for (const reservedCommunityType of this.reservedCommunityTypes) { + await queryRunner.query(`INSERT INTO reserved_community_types (name) VALUES ($1)`, [ + reservedCommunityType, + ]) } + } - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`DELETE FROM reserved_community_types WHERE name = ANY($1)`, [this.reservedCommunityTypes]) - } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DELETE FROM reserved_community_types WHERE name = ANY($1)`, [ + this.reservedCommunityTypes, + ]) + } } diff --git a/backend/core/src/migration/1624624546037-add-image-relation-to-listing.ts b/backend/core/src/migration/1624624546037-add-image-relation-to-listing.ts index 1d9f88b159..8166803936 100644 --- a/backend/core/src/migration/1624624546037-add-image-relation-to-listing.ts +++ b/backend/core/src/migration/1624624546037-add-image-relation-to-listing.ts @@ -1,16 +1,19 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addImageRelationToListing1624624546037 implements MigrationInterface { - name = 'addImageRelationToListing1624624546037' + name = "addImageRelationToListing1624624546037" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" ADD "image_id" uuid`); - await queryRunner.query(`ALTER TABLE "listings" ADD CONSTRAINT "FK_ecc271b96bd18df0efe47b85186" FOREIGN KEY ("image_id") REFERENCES "assets"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" DROP CONSTRAINT "FK_ecc271b96bd18df0efe47b85186"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "image_id"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "listings" ADD "image_id" uuid`) + await queryRunner.query( + `ALTER TABLE "listings" ADD CONSTRAINT "FK_ecc271b96bd18df0efe47b85186" FOREIGN KEY ("image_id") REFERENCES "assets"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "listings" DROP CONSTRAINT "FK_ecc271b96bd18df0efe47b85186"` + ) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "image_id"`) + } } diff --git a/backend/core/src/migration/1624871726219-add-result-to-listing.ts b/backend/core/src/migration/1624871726219-add-result-to-listing.ts index f817627d6c..6eb26bfda1 100644 --- a/backend/core/src/migration/1624871726219-add-result-to-listing.ts +++ b/backend/core/src/migration/1624871726219-add-result-to-listing.ts @@ -1,16 +1,19 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addResultToListing1624871726219 implements MigrationInterface { - name = 'addResultToListing1624871726219' + name = "addResultToListing1624871726219" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" ADD "result_id" uuid`); - await queryRunner.query(`ALTER TABLE "listings" ADD CONSTRAINT "FK_3f7b2aedbfccd6297923943e311" FOREIGN KEY ("result_id") REFERENCES "assets"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" DROP CONSTRAINT "FK_3f7b2aedbfccd6297923943e311"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "result_id"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "listings" ADD "result_id" uuid`) + await queryRunner.query( + `ALTER TABLE "listings" ADD CONSTRAINT "FK_3f7b2aedbfccd6297923943e311" FOREIGN KEY ("result_id") REFERENCES "assets"("id") ON DELETE NO ACTION ON UPDATE NO ACTION` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "listings" DROP CONSTRAINT "FK_3f7b2aedbfccd6297923943e311"` + ) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "result_id"`) + } } diff --git a/backend/core/src/migration/1624873640959-add-result-link-and-waitlist-fields-to-listing.ts b/backend/core/src/migration/1624873640959-add-result-link-and-waitlist-fields-to-listing.ts index bbbc86dd47..2d04b7b725 100644 --- a/backend/core/src/migration/1624873640959-add-result-link-and-waitlist-fields-to-listing.ts +++ b/backend/core/src/migration/1624873640959-add-result-link-and-waitlist-fields-to-listing.ts @@ -1,22 +1,25 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addResultLinkAndWaitlistFieldsToListing1624873640959 implements MigrationInterface { - name = 'addResultLinkAndWaitlistFieldsToListing1624873640959' + name = "addResultLinkAndWaitlistFieldsToListing1624873640959" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" ADD "result_link" text`); - await queryRunner.query(`ALTER TABLE "listings" ADD "is_waitlist_open" boolean`); - await queryRunner.query(`ALTER TABLE "listings" ADD "waitlist_open_spots" integer`); - await queryRunner.query(`COMMENT ON COLUMN "listings"."display_waitlist_size" IS NULL`); - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "display_waitlist_size" DROP DEFAULT`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" ALTER COLUMN "display_waitlist_size" SET DEFAULT false`); - await queryRunner.query(`COMMENT ON COLUMN "listings"."display_waitlist_size" IS NULL`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "waitlist_open_spots"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "is_waitlist_open"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "result_link"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "listings" ADD "result_link" text`) + await queryRunner.query(`ALTER TABLE "listings" ADD "is_waitlist_open" boolean`) + await queryRunner.query(`ALTER TABLE "listings" ADD "waitlist_open_spots" integer`) + await queryRunner.query(`COMMENT ON COLUMN "listings"."display_waitlist_size" IS NULL`) + await queryRunner.query( + `ALTER TABLE "listings" ALTER COLUMN "display_waitlist_size" DROP DEFAULT` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "listings" ALTER COLUMN "display_waitlist_size" SET DEFAULT false` + ) + await queryRunner.query(`COMMENT ON COLUMN "listings"."display_waitlist_size" IS NULL`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "waitlist_open_spots"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "is_waitlist_open"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "result_link"`) + } } diff --git a/backend/core/src/migration/1624959910201-add-pick-up-and-drop-off-columns-to-listing.ts b/backend/core/src/migration/1624959910201-add-pick-up-and-drop-off-columns-to-listing.ts index 0be356583a..fed284baab 100644 --- a/backend/core/src/migration/1624959910201-add-pick-up-and-drop-off-columns-to-listing.ts +++ b/backend/core/src/migration/1624959910201-add-pick-up-and-drop-off-columns-to-listing.ts @@ -4,17 +4,27 @@ export class addPickUpAndDropOffColumnsToListing1624959910201 implements Migrati name = "addPickUpAndDropOffColumnsToListing1624959910201" public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`CREATE TYPE "listings_application_pick_up_address_type_enum" AS ENUM('leasingAgent', 'mailingAddress')`); - await queryRunner.query(`ALTER TABLE "listings" ADD "application_pick_up_address_type" "listings_application_pick_up_address_type_enum"`); + await queryRunner.query( + `CREATE TYPE "listings_application_pick_up_address_type_enum" AS ENUM('leasingAgent', 'mailingAddress')` + ) + await queryRunner.query( + `ALTER TABLE "listings" ADD "application_pick_up_address_type" "listings_application_pick_up_address_type_enum"` + ) - await queryRunner.query(`CREATE TYPE "listings_application_drop_off_address_type_enum" AS ENUM('leasingAgent', 'mailingAddress')`); - await queryRunner.query(`ALTER TABLE "listings" ADD "application_drop_off_address_type" "listings_application_drop_off_address_type_enum"`); + await queryRunner.query( + `CREATE TYPE "listings_application_drop_off_address_type_enum" AS ENUM('leasingAgent', 'mailingAddress')` + ) + await queryRunner.query( + `ALTER TABLE "listings" ADD "application_drop_off_address_type" "listings_application_drop_off_address_type_enum"` + ) } public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_drop_off_address_type"`); - await queryRunner.query(`DROP TYPE "listings_application_drop_off_address_type_enum"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_pick_up_address_type"`); - await queryRunner.query(`DROP TYPE "listings_application_pick_up_address_type_enum"`); + await queryRunner.query( + `ALTER TABLE "listings" DROP COLUMN "application_drop_off_address_type"` + ) + await queryRunner.query(`DROP TYPE "listings_application_drop_off_address_type_enum"`) + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_pick_up_address_type"`) + await queryRunner.query(`DROP TYPE "listings_application_pick_up_address_type_enum"`) } } diff --git a/backend/core/src/migration/1624985582782-application-drop-off-and-mailing-addresses.ts b/backend/core/src/migration/1624985582782-application-drop-off-and-mailing-addresses.ts index 9c7c0d8b62..0269e47a40 100644 --- a/backend/core/src/migration/1624985582782-application-drop-off-and-mailing-addresses.ts +++ b/backend/core/src/migration/1624985582782-application-drop-off-and-mailing-addresses.ts @@ -1,19 +1,23 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class applicationDropOffAndMailingAddresses1624985582782 implements MigrationInterface { - name = 'applicationDropOffAndMailingAddresses1624985582782' + name = "applicationDropOffAndMailingAddresses1624985582782" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" ADD "application_mailing_address" jsonb`); - await queryRunner.query(`ALTER TABLE "listings" ADD "application_drop_off_address_office_hours" text`); - await queryRunner.query(`ALTER TABLE "listings" ADD "application_drop_off_address" jsonb`); - - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_mailing_address"`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_drop_off_address_office_hours" text`); - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_drop_off_address" jsonb`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "listings" ADD "application_mailing_address" jsonb`) + await queryRunner.query( + `ALTER TABLE "listings" ADD "application_drop_off_address_office_hours" text` + ) + await queryRunner.query(`ALTER TABLE "listings" ADD "application_drop_off_address" jsonb`) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "application_mailing_address"`) + await queryRunner.query( + `ALTER TABLE "listings" DROP COLUMN "application_drop_off_address_office_hours" text` + ) + await queryRunner.query( + `ALTER TABLE "listings" DROP COLUMN "application_drop_off_address" jsonb` + ) + } } diff --git a/backend/core/src/migration/1625041988613-add-additional-notes-column-to-listing.ts b/backend/core/src/migration/1625041988613-add-additional-notes-column-to-listing.ts index 2331eb049e..21df72c2f7 100644 --- a/backend/core/src/migration/1625041988613-add-additional-notes-column-to-listing.ts +++ b/backend/core/src/migration/1625041988613-add-additional-notes-column-to-listing.ts @@ -1,14 +1,17 @@ -import {MigrationInterface, QueryRunner} from "typeorm"; +import { MigrationInterface, QueryRunner } from "typeorm" export class addAdditionalNotesColumnToListing1625041988613 implements MigrationInterface { - name = 'addAdditionalNotesColumnToListing1625041988613' + name = "addAdditionalNotesColumnToListing1625041988613" - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" ADD "additional_application_submission_notes" text`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "listings" DROP COLUMN "additional_application_submission_notes"`); - } + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "listings" ADD "additional_application_submission_notes" text` + ) + } + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "listings" DROP COLUMN "additional_application_submission_notes"` + ) + } } diff --git a/backend/core/tsconfig.build.json b/backend/core/tsconfig.build.json index 162e5207dd..765d0bfc14 100644 --- a/backend/core/tsconfig.build.json +++ b/backend/core/tsconfig.build.json @@ -1,4 +1,11 @@ { "extends": "./tsconfig.json", - "exclude": ["node_modules", "test", "__tests__", "dist", "**/*spec.ts", "generate-axios-client.ts"] + "exclude": [ + "node_modules", + "test", + "__tests__", + "dist", + "**/*spec.ts", + "generate-axios-client.ts" + ] } diff --git a/backend/core/types/src/backend-swagger.ts b/backend/core/types/src/backend-swagger.ts index f434e435bb..fd6ebbd97e 100644 --- a/backend/core/types/src/backend-swagger.ts +++ b/backend/core/types/src/backend-swagger.ts @@ -1,80 +1,89 @@ /** Generate by swagger-axios-codegen */ // tslint:disable /* eslint-disable */ -import axiosStatic, { AxiosInstance } from 'axios'; +import axiosStatic, { AxiosInstance } from "axios" export interface IRequestOptions { - headers?: any; - baseURL?: string; - responseType?: string; + headers?: any + baseURL?: string + responseType?: string } export interface IRequestConfig { - method?: any; - headers?: any; - url?: any; - data?: any; - params?: any; + method?: any + headers?: any + url?: any + data?: any + params?: any } // Add options interface export interface ServiceOptions { - axios?: AxiosInstance; + axios?: AxiosInstance } // Add default options -export const serviceOptions: ServiceOptions = {}; +export const serviceOptions: ServiceOptions = {} // Instance selector -export function axios(configs: IRequestConfig, resolve: (p: any) => void, reject: (p: any) => void): Promise { +export function axios( + configs: IRequestConfig, + resolve: (p: any) => void, + reject: (p: any) => void +): Promise { if (serviceOptions.axios) { return serviceOptions.axios .request(configs) - .then(res => { - resolve(res.data); + .then((res) => { + resolve(res.data) + }) + .catch((err) => { + reject(err) }) - .catch(err => { - reject(err); - }); } else { - throw new Error('please inject yourself instance like axios '); + throw new Error("please inject yourself instance like axios ") } } -export function getConfigs(method: string, contentType: string, url: string, options: any): IRequestConfig { - const configs: IRequestConfig = { ...options, method, url }; +export function getConfigs( + method: string, + contentType: string, + url: string, + options: any +): IRequestConfig { + const configs: IRequestConfig = { ...options, method, url } configs.headers = { ...options.headers, - 'Content-Type': contentType - }; - return configs; + "Content-Type": contentType, + } + return configs } -const basePath = ''; +const basePath = "" export interface IList extends Array {} export interface List extends Array {} export interface IDictionary { - [key: string]: TValue; + [key: string]: TValue } export interface Dictionary extends IDictionary {} export interface IListResult { - items?: T[]; + items?: T[] } export class ListResult implements IListResult { - items?: T[]; + items?: T[] } export interface IPagedResult extends IListResult { - totalCount?: number; - items?: T[]; + totalCount?: number + items?: T[] } export class PagedResult implements IPagedResult { - totalCount?: number; - items?: T[]; + totalCount?: number + items?: T[] } // customer definition @@ -86,15 +95,15 @@ export class AmiChartsService { */ list(options: IRequestOptions = {}): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/amiCharts'; + let url = basePath + "/amiCharts" - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Create amiChart @@ -102,20 +111,20 @@ export class AmiChartsService { create( params: { /** requestBody */ - body?: AmiChartCreate; + body?: AmiChartCreate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/amiCharts'; + let url = basePath + "/amiCharts" - const configs: IRequestConfig = getConfigs('post', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("post", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Update amiChart @@ -123,20 +132,20 @@ export class AmiChartsService { update( params: { /** requestBody */ - body?: AmiChartUpdate; + body?: AmiChartUpdate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/amiCharts/{amiChartId}'; + let url = basePath + "/amiCharts/{amiChartId}" - const configs: IRequestConfig = getConfigs('put', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("put", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Get amiChart by id @@ -144,21 +153,21 @@ export class AmiChartsService { retrieve( params: { /** */ - amiChartId: string; + amiChartId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/amiCharts/{amiChartId}'; - url = url.replace('{amiChartId}', params['amiChartId'] + ''); + let url = basePath + "/amiCharts/{amiChartId}" + url = url.replace("{amiChartId}", params["amiChartId"] + "") - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Delete amiChart by id @@ -166,21 +175,21 @@ export class AmiChartsService { delete( params: { /** */ - amiChartId: string; + amiChartId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/amiCharts/{amiChartId}'; - url = url.replace('{amiChartId}', params['amiChartId'] + ''); + let url = basePath + "/amiCharts/{amiChartId}" + url = url.replace("{amiChartId}", params["amiChartId"] + "") - const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("delete", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } } @@ -191,24 +200,28 @@ export class ApplicationFlaggedSetsService { list( params: { /** */ - page?: number; + page?: number /** */ - limit?: number; + limit?: number /** */ - listingId: string; + listingId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/applicationFlaggedSets'; + let url = basePath + "/applicationFlaggedSets" - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); - configs.params = { page: params['page'], limit: params['limit'], listingId: params['listingId'] }; - let data = null; - - configs.data = data; - axios(configs, resolve, reject); - }); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) + configs.params = { + page: params["page"], + limit: params["limit"], + listingId: params["listingId"], + } + let data = null + + configs.data = data + axios(configs, resolve, reject) + }) } /** * Retrieve application flagged set by id @@ -216,21 +229,21 @@ export class ApplicationFlaggedSetsService { retrieve( params: { /** */ - afsId: string; + afsId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/applicationFlaggedSets/{afsId}'; - url = url.replace('{afsId}', params['afsId'] + ''); + let url = basePath + "/applicationFlaggedSets/{afsId}" + url = url.replace("{afsId}", params["afsId"] + "") - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Resolve application flagged set @@ -238,20 +251,20 @@ export class ApplicationFlaggedSetsService { resolve( params: { /** requestBody */ - body?: ApplicationFlaggedSetResolve; + body?: ApplicationFlaggedSetResolve } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/applicationFlaggedSets/resolve'; + let url = basePath + "/applicationFlaggedSets/resolve" - const configs: IRequestConfig = getConfigs('post', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("post", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } } @@ -262,43 +275,43 @@ export class ApplicationsService { list( params: { /** */ - page?: number; + page?: number /** */ - limit?: number; + limit?: number /** */ - listingId?: string; + listingId?: string /** */ - search?: string; + search?: string /** */ - userId?: string; + userId?: string /** */ - orderBy?: string; + orderBy?: string /** */ - order?: string; + order?: string /** */ - markedAsDuplicate?: boolean; + markedAsDuplicate?: boolean } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/applications'; + let url = basePath + "/applications" - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) configs.params = { - page: params['page'], - limit: params['limit'], - listingId: params['listingId'], - search: params['search'], - userId: params['userId'], - orderBy: params['orderBy'], - order: params['order'], - markedAsDuplicate: params['markedAsDuplicate'] - }; - let data = null; - - configs.data = data; - axios(configs, resolve, reject); - }); + page: params["page"], + limit: params["limit"], + listingId: params["listingId"], + search: params["search"], + userId: params["userId"], + orderBy: params["orderBy"], + order: params["order"], + markedAsDuplicate: params["markedAsDuplicate"], + } + let data = null + + configs.data = data + axios(configs, resolve, reject) + }) } /** * Create application @@ -306,20 +319,20 @@ export class ApplicationsService { create( params: { /** requestBody */ - body?: ApplicationCreate; + body?: ApplicationCreate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/applications'; + let url = basePath + "/applications" - const configs: IRequestConfig = getConfigs('post', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("post", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * List applications as csv @@ -327,49 +340,49 @@ export class ApplicationsService { listAsCsv( params: { /** */ - page?: number; + page?: number /** */ - limit?: number; + limit?: number /** */ - listingId?: string; + listingId?: string /** */ - search?: string; + search?: string /** */ - userId?: string; + userId?: string /** */ - orderBy?: string; + orderBy?: string /** */ - order?: string; + order?: string /** */ - markedAsDuplicate?: boolean; + markedAsDuplicate?: boolean /** */ - includeHeaders?: boolean; + includeHeaders?: boolean /** */ - includeDemographics?: boolean; + includeDemographics?: boolean } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/applications/csv'; + let url = basePath + "/applications/csv" - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) configs.params = { - page: params['page'], - limit: params['limit'], - listingId: params['listingId'], - search: params['search'], - userId: params['userId'], - orderBy: params['orderBy'], - order: params['order'], - markedAsDuplicate: params['markedAsDuplicate'], - includeHeaders: params['includeHeaders'], - includeDemographics: params['includeDemographics'] - }; - let data = null; - - configs.data = data; - axios(configs, resolve, reject); - }); + page: params["page"], + limit: params["limit"], + listingId: params["listingId"], + search: params["search"], + userId: params["userId"], + orderBy: params["orderBy"], + order: params["order"], + markedAsDuplicate: params["markedAsDuplicate"], + includeHeaders: params["includeHeaders"], + includeDemographics: params["includeDemographics"], + } + let data = null + + configs.data = data + axios(configs, resolve, reject) + }) } /** * Get application by id @@ -377,21 +390,21 @@ export class ApplicationsService { retrieve( params: { /** */ - applicationId: string; + applicationId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/applications/{applicationId}'; - url = url.replace('{applicationId}', params['applicationId'] + ''); + let url = basePath + "/applications/{applicationId}" + url = url.replace("{applicationId}", params["applicationId"] + "") - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Update application by id @@ -399,23 +412,23 @@ export class ApplicationsService { update( params: { /** */ - applicationId: string; + applicationId: string /** requestBody */ - body?: ApplicationUpdate; + body?: ApplicationUpdate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/applications/{applicationId}'; - url = url.replace('{applicationId}', params['applicationId'] + ''); + let url = basePath + "/applications/{applicationId}" + url = url.replace("{applicationId}", params["applicationId"] + "") - const configs: IRequestConfig = getConfigs('put', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("put", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Delete application by id @@ -423,21 +436,21 @@ export class ApplicationsService { delete( params: { /** */ - applicationId: string; + applicationId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/applications/{applicationId}'; - url = url.replace('{applicationId}', params['applicationId'] + ''); + let url = basePath + "/applications/{applicationId}" + url = url.replace("{applicationId}", params["applicationId"] + "") - const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("delete", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Submit application @@ -445,20 +458,20 @@ export class ApplicationsService { submit( params: { /** requestBody */ - body?: ApplicationCreate; + body?: ApplicationCreate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/applications/submit'; + let url = basePath + "/applications/submit" - const configs: IRequestConfig = getConfigs('post', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("post", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } } @@ -469,20 +482,20 @@ export class AssetsService { create( params: { /** requestBody */ - body?: AssetCreate; + body?: AssetCreate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/assets'; + let url = basePath + "/assets" - const configs: IRequestConfig = getConfigs('post', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("post", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * List assets @@ -490,22 +503,22 @@ export class AssetsService { list( params: { /** */ - page?: number; + page?: number /** */ - limit?: number; + limit?: number } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/assets'; + let url = basePath + "/assets" - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); - configs.params = { page: params['page'], limit: params['limit'] }; - let data = null; + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) + configs.params = { page: params["page"], limit: params["limit"] } + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Create presigned upload metadata @@ -513,20 +526,20 @@ export class AssetsService { createPresignedUploadMetadata( params: { /** requestBody */ - body?: CreatePresignedUploadMetadata; + body?: CreatePresignedUploadMetadata } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/assets/presigned-upload-metadata'; + let url = basePath + "/assets/presigned-upload-metadata" - const configs: IRequestConfig = getConfigs('post', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("post", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Get asset by id @@ -534,21 +547,21 @@ export class AssetsService { retrieve( params: { /** */ - assetId: string; + assetId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/assets/{assetId}'; - url = url.replace('{assetId}', params['assetId'] + ''); + let url = basePath + "/assets/{assetId}" + url = url.replace("{assetId}", params["assetId"] + "") - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } } @@ -559,35 +572,35 @@ export class AuthService { login( params: { /** requestBody */ - body?: Login; + body?: Login } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/auth/login'; + let url = basePath + "/auth/login" - const configs: IRequestConfig = getConfigs('post', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("post", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Token */ token(options: IRequestOptions = {}): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/auth/token'; + let url = basePath + "/auth/token" - const configs: IRequestConfig = getConfigs('post', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("post", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } } @@ -597,15 +610,15 @@ export class JurisdictionsService { */ list(options: IRequestOptions = {}): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/jurisdictions'; + let url = basePath + "/jurisdictions" - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Create jurisdiction @@ -613,20 +626,20 @@ export class JurisdictionsService { create( params: { /** requestBody */ - body?: JurisdictionCreate; + body?: JurisdictionCreate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/jurisdictions'; + let url = basePath + "/jurisdictions" - const configs: IRequestConfig = getConfigs('post', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("post", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Update jurisdiction @@ -634,20 +647,20 @@ export class JurisdictionsService { update( params: { /** requestBody */ - body?: JurisdictionUpdate; + body?: JurisdictionUpdate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/jurisdictions/{jurisdictionId}'; + let url = basePath + "/jurisdictions/{jurisdictionId}" - const configs: IRequestConfig = getConfigs('put', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("put", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Get jurisdiction by id @@ -655,21 +668,21 @@ export class JurisdictionsService { retrieve( params: { /** */ - jurisdictionId: string; + jurisdictionId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/jurisdictions/{jurisdictionId}'; - url = url.replace('{jurisdictionId}', params['jurisdictionId'] + ''); + let url = basePath + "/jurisdictions/{jurisdictionId}" + url = url.replace("{jurisdictionId}", params["jurisdictionId"] + "") - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Delete jurisdiction by id @@ -677,21 +690,21 @@ export class JurisdictionsService { delete( params: { /** */ - jurisdictionId: string; + jurisdictionId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/jurisdictions/{jurisdictionId}'; - url = url.replace('{jurisdictionId}', params['jurisdictionId'] + ''); + let url = basePath + "/jurisdictions/{jurisdictionId}" + url = url.replace("{jurisdictionId}", params["jurisdictionId"] + "") - const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("delete", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } } @@ -702,22 +715,22 @@ export class ListingsService { list( params: { /** */ - jsonpath?: string; + jsonpath?: string /** */ - filter?: ListingFilterParams[]; + filter?: ListingFilterParams[] } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/listings'; + let url = basePath + "/listings" - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); - configs.params = { jsonpath: params['jsonpath'], filter: params['filter'] }; - let data = null; + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) + configs.params = { jsonpath: params["jsonpath"], filter: params["filter"] } + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Create listing @@ -725,20 +738,20 @@ export class ListingsService { create( params: { /** requestBody */ - body?: ListingCreate; + body?: ListingCreate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/listings'; + let url = basePath + "/listings" - const configs: IRequestConfig = getConfigs('post', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("post", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Get listing by id @@ -746,21 +759,21 @@ export class ListingsService { retrieve( params: { /** */ - listingId: string; + listingId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/listings/{listingId}'; - url = url.replace('{listingId}', params['listingId'] + ''); + let url = basePath + "/listings/{listingId}" + url = url.replace("{listingId}", params["listingId"] + "") - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Update listing by id @@ -768,23 +781,23 @@ export class ListingsService { update( params: { /** */ - listingId: string; + listingId: string /** requestBody */ - body?: ListingUpdate; + body?: ListingUpdate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/listings/{listingId}'; - url = url.replace('{listingId}', params['listingId'] + ''); + let url = basePath + "/listings/{listingId}" + url = url.replace("{listingId}", params["listingId"] + "") - const configs: IRequestConfig = getConfigs('put', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("put", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Delete listing by id @@ -792,21 +805,21 @@ export class ListingsService { delete( params: { /** */ - listingId: string; + listingId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/listings/{listingId}'; - url = url.replace('{listingId}', params['listingId'] + ''); + let url = basePath + "/listings/{listingId}" + url = url.replace("{listingId}", params["listingId"] + "") - const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("delete", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } } @@ -816,15 +829,15 @@ export class PreferencesService { */ list(options: IRequestOptions = {}): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/preferences'; + let url = basePath + "/preferences" - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Create preference @@ -832,20 +845,20 @@ export class PreferencesService { create( params: { /** requestBody */ - body?: PreferenceCreate; + body?: PreferenceCreate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/preferences'; + let url = basePath + "/preferences" - const configs: IRequestConfig = getConfigs('post', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("post", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Update preference @@ -853,20 +866,20 @@ export class PreferencesService { update( params: { /** requestBody */ - body?: PreferenceUpdate; + body?: PreferenceUpdate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/preferences/{preferenceId}'; + let url = basePath + "/preferences/{preferenceId}" - const configs: IRequestConfig = getConfigs('put', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("put", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Get preference by id @@ -874,21 +887,21 @@ export class PreferencesService { retrieve( params: { /** */ - preferenceId: string; + preferenceId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/preferences/{preferenceId}'; - url = url.replace('{preferenceId}', params['preferenceId'] + ''); + let url = basePath + "/preferences/{preferenceId}" + url = url.replace("{preferenceId}", params["preferenceId"] + "") - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Delete preference by id @@ -896,21 +909,21 @@ export class PreferencesService { delete( params: { /** */ - preferenceId: string; + preferenceId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/preferences/{preferenceId}'; - url = url.replace('{preferenceId}', params['preferenceId'] + ''); + let url = basePath + "/preferences/{preferenceId}" + url = url.replace("{preferenceId}", params["preferenceId"] + "") - const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("delete", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } } @@ -920,15 +933,15 @@ export class PropertiesService { */ list(options: IRequestOptions = {}): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/properties'; + let url = basePath + "/properties" - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Create property @@ -936,20 +949,20 @@ export class PropertiesService { create( params: { /** requestBody */ - body?: PropertyCreate; + body?: PropertyCreate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/properties'; + let url = basePath + "/properties" - const configs: IRequestConfig = getConfigs('post', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("post", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Update property @@ -957,20 +970,20 @@ export class PropertiesService { update( params: { /** requestBody */ - body?: PropertyUpdate; + body?: PropertyUpdate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/properties/{propertyId}'; + let url = basePath + "/properties/{propertyId}" - const configs: IRequestConfig = getConfigs('put', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("put", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Get property by id @@ -978,21 +991,21 @@ export class PropertiesService { retrieve( params: { /** */ - propertyId: string; + propertyId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/properties/{propertyId}'; - url = url.replace('{propertyId}', params['propertyId'] + ''); + let url = basePath + "/properties/{propertyId}" + url = url.replace("{propertyId}", params["propertyId"] + "") - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Delete property by id @@ -1000,21 +1013,21 @@ export class PropertiesService { delete( params: { /** */ - propertyId: string; + propertyId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/properties/{propertyId}'; - url = url.replace('{propertyId}', params['propertyId'] + ''); + let url = basePath + "/properties/{propertyId}" + url = url.replace("{propertyId}", params["propertyId"] + "") - const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("delete", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } } @@ -1024,15 +1037,15 @@ export class PropertyGroupsService { */ list(options: IRequestOptions = {}): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/propertyGroups'; + let url = basePath + "/propertyGroups" - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Create propertyGroup @@ -1040,20 +1053,20 @@ export class PropertyGroupsService { create( params: { /** requestBody */ - body?: PropertyGroupCreate; + body?: PropertyGroupCreate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/propertyGroups'; + let url = basePath + "/propertyGroups" - const configs: IRequestConfig = getConfigs('post', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("post", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Update propertyGroup @@ -1061,20 +1074,20 @@ export class PropertyGroupsService { update( params: { /** requestBody */ - body?: PropertyGroupUpdate; + body?: PropertyGroupUpdate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/propertyGroups/{propertyGroupId}'; + let url = basePath + "/propertyGroups/{propertyGroupId}" - const configs: IRequestConfig = getConfigs('put', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("put", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Get propertyGroup by id @@ -1082,21 +1095,21 @@ export class PropertyGroupsService { retrieve( params: { /** */ - propertyGroupId: string; + propertyGroupId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/propertyGroups/{propertyGroupId}'; - url = url.replace('{propertyGroupId}', params['propertyGroupId'] + ''); + let url = basePath + "/propertyGroups/{propertyGroupId}" + url = url.replace("{propertyGroupId}", params["propertyGroupId"] + "") - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Delete propertyGroup by id @@ -1104,21 +1117,21 @@ export class PropertyGroupsService { delete( params: { /** */ - propertyGroupId: string; + propertyGroupId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/propertyGroups/{propertyGroupId}'; - url = url.replace('{propertyGroupId}', params['propertyGroupId'] + ''); + let url = basePath + "/propertyGroups/{propertyGroupId}" + url = url.replace("{propertyGroupId}", params["propertyGroupId"] + "") - const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("delete", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } } @@ -1128,15 +1141,15 @@ export class ReservedCommunityTypesService { */ list(options: IRequestOptions = {}): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/reservedCommunityTypes'; + let url = basePath + "/reservedCommunityTypes" - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Create reservedCommunityType @@ -1144,20 +1157,20 @@ export class ReservedCommunityTypesService { create( params: { /** requestBody */ - body?: ReservedCommunityTypeCreate; + body?: ReservedCommunityTypeCreate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/reservedCommunityTypes'; + let url = basePath + "/reservedCommunityTypes" - const configs: IRequestConfig = getConfigs('post', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("post", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Update reservedCommunityType @@ -1165,20 +1178,20 @@ export class ReservedCommunityTypesService { update( params: { /** requestBody */ - body?: ReservedCommunityTypeUpdate; + body?: ReservedCommunityTypeUpdate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/reservedCommunityTypes/{reservedCommunityTypeId}'; + let url = basePath + "/reservedCommunityTypes/{reservedCommunityTypeId}" - const configs: IRequestConfig = getConfigs('put', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("put", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Get reservedCommunityType by id @@ -1186,21 +1199,21 @@ export class ReservedCommunityTypesService { retrieve( params: { /** */ - reservedCommunityTypeId: string; + reservedCommunityTypeId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/reservedCommunityTypes/{reservedCommunityTypeId}'; - url = url.replace('{reservedCommunityTypeId}', params['reservedCommunityTypeId'] + ''); + let url = basePath + "/reservedCommunityTypes/{reservedCommunityTypeId}" + url = url.replace("{reservedCommunityTypeId}", params["reservedCommunityTypeId"] + "") - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Delete reservedCommunityType by id @@ -1208,21 +1221,21 @@ export class ReservedCommunityTypesService { delete( params: { /** */ - reservedCommunityTypeId: string; + reservedCommunityTypeId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/reservedCommunityTypes/{reservedCommunityTypeId}'; - url = url.replace('{reservedCommunityTypeId}', params['reservedCommunityTypeId'] + ''); + let url = basePath + "/reservedCommunityTypes/{reservedCommunityTypeId}" + url = url.replace("{reservedCommunityTypeId}", params["reservedCommunityTypeId"] + "") - const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("delete", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } } @@ -1232,15 +1245,15 @@ export class TranslationsService { */ list(options: IRequestOptions = {}): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/translations'; + let url = basePath + "/translations" - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Create translation @@ -1248,20 +1261,20 @@ export class TranslationsService { create( params: { /** requestBody */ - body?: TranslationCreate; + body?: TranslationCreate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/translations'; + let url = basePath + "/translations" - const configs: IRequestConfig = getConfigs('post', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("post", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Update translation @@ -1269,20 +1282,20 @@ export class TranslationsService { update( params: { /** requestBody */ - body?: TranslationUpdate; + body?: TranslationUpdate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/translations/{translationId}'; + let url = basePath + "/translations/{translationId}" - const configs: IRequestConfig = getConfigs('put', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("put", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Get translation by id @@ -1290,21 +1303,21 @@ export class TranslationsService { retrieve( params: { /** */ - translationId: string; + translationId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/translations/{translationId}'; - url = url.replace('{translationId}', params['translationId'] + ''); + let url = basePath + "/translations/{translationId}" + url = url.replace("{translationId}", params["translationId"] + "") - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Delete translation by id @@ -1312,21 +1325,21 @@ export class TranslationsService { delete( params: { /** */ - translationId: string; + translationId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/translations/{translationId}'; - url = url.replace('{translationId}', params['translationId'] + ''); + let url = basePath + "/translations/{translationId}" + url = url.replace("{translationId}", params["translationId"] + "") - const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("delete", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } } @@ -1336,15 +1349,15 @@ export class UnitsService { */ list(options: IRequestOptions = {}): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/units'; + let url = basePath + "/units" - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Create unit @@ -1352,20 +1365,20 @@ export class UnitsService { create( params: { /** requestBody */ - body?: UnitCreate; + body?: UnitCreate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/units'; + let url = basePath + "/units" - const configs: IRequestConfig = getConfigs('post', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("post", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Update unit @@ -1373,20 +1386,20 @@ export class UnitsService { update( params: { /** requestBody */ - body?: UnitUpdate; + body?: UnitUpdate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/units/{unitId}'; + let url = basePath + "/units/{unitId}" - const configs: IRequestConfig = getConfigs('put', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("put", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Get unit by id @@ -1394,21 +1407,21 @@ export class UnitsService { retrieve( params: { /** */ - unitId: string; + unitId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/units/{unitId}'; - url = url.replace('{unitId}', params['unitId'] + ''); + let url = basePath + "/units/{unitId}" + url = url.replace("{unitId}", params["unitId"] + "") - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Delete unit by id @@ -1416,21 +1429,21 @@ export class UnitsService { delete( params: { /** */ - unitId: string; + unitId: string } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/units/{unitId}'; - url = url.replace('{unitId}', params['unitId'] + ''); + let url = basePath + "/units/{unitId}" + url = url.replace("{unitId}", params["unitId"] + "") - const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("delete", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } } @@ -1440,15 +1453,15 @@ export class UserService { */ userControllerProfile(options: IRequestOptions = {}): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/user'; + let url = basePath + "/user" - const configs: IRequestConfig = getConfigs('get', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("get", "application/json", url, options) - let data = null; + let data = null - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Create user @@ -1456,22 +1469,22 @@ export class UserService { create( params: { /** */ - noWelcomeEmail?: boolean; + noWelcomeEmail?: boolean /** requestBody */ - body?: UserCreate; + body?: UserCreate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/user'; + let url = basePath + "/user" - const configs: IRequestConfig = getConfigs('post', 'application/json', url, options); - configs.params = { noWelcomeEmail: params['noWelcomeEmail'] }; - let data = params.body; + const configs: IRequestConfig = getConfigs("post", "application/json", url, options) + configs.params = { noWelcomeEmail: params["noWelcomeEmail"] } + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Resend confirmation @@ -1479,20 +1492,20 @@ export class UserService { resendConfirmation( params: { /** requestBody */ - body?: Email; + body?: Email } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/user/resend-confirmation'; + let url = basePath + "/user/resend-confirmation" - const configs: IRequestConfig = getConfigs('post', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("post", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Confirm email @@ -1500,20 +1513,20 @@ export class UserService { confirm( params: { /** requestBody */ - body?: Confirm; + body?: Confirm } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/user/confirm'; + let url = basePath + "/user/confirm" - const configs: IRequestConfig = getConfigs('put', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("put", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Forgot Password @@ -1521,20 +1534,20 @@ export class UserService { forgotPassword( params: { /** requestBody */ - body?: ForgotPassword; + body?: ForgotPassword } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/user/forgot-password'; + let url = basePath + "/user/forgot-password" - const configs: IRequestConfig = getConfigs('put', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("put", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Update Password @@ -1542,20 +1555,20 @@ export class UserService { updatePassword( params: { /** requestBody */ - body?: UpdatePassword; + body?: UpdatePassword } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/user/update-password'; + let url = basePath + "/user/update-password" - const configs: IRequestConfig = getConfigs('put', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("put", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } /** * Update user @@ -1563,2942 +1576,2942 @@ export class UserService { update( params: { /** requestBody */ - body?: UserUpdate; + body?: UserUpdate } = {} as any, options: IRequestOptions = {} ): Promise { return new Promise((resolve, reject) => { - let url = basePath + '/user/{id}'; + let url = basePath + "/user/{id}" - const configs: IRequestConfig = getConfigs('put', 'application/json', url, options); + const configs: IRequestConfig = getConfigs("put", "application/json", url, options) - let data = params.body; + let data = params.body - configs.data = data; - axios(configs, resolve, reject); - }); + configs.data = data + axios(configs, resolve, reject) + }) } } export interface AmiChartItem { /** */ - percentOfAmi: number; + percentOfAmi: number /** */ - householdSize: number; + householdSize: number /** */ - income: number; + income: number } export interface AmiChart { /** */ - items: AmiChartItem[]; + items: AmiChartItem[] /** */ - id: string; + id: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date /** */ - name: string; + name: string } export interface AmiChartCreate { /** */ - items: AmiChartItem[]; + items: AmiChartItem[] /** */ - name: string; + name: string } export interface AmiChartUpdate { /** */ - id?: string; + id?: string /** */ - createdAt?: Date; + createdAt?: Date /** */ - updatedAt?: Date; + updatedAt?: Date /** */ - items: AmiChartItem[]; + items: AmiChartItem[] /** */ - name: string; + name: string } export interface Id { /** */ - id: string; + id: string } export interface Address { /** */ - id: string; + id: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date /** */ - placeName?: string; + placeName?: string /** */ - city?: string; + city?: string /** */ - county?: string; + county?: string /** */ - state?: string; + state?: string /** */ - street?: string; + street?: string /** */ - street2?: string; + street2?: string /** */ - zipCode?: string; + zipCode?: string /** */ - latitude?: number; + latitude?: number /** */ - longitude?: number; + longitude?: number } export interface Applicant { /** */ - address: Address; + address: Address /** */ - workAddress: Address; + workAddress: Address /** */ - id: string; + id: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date /** */ - firstName?: string; + firstName?: string /** */ - middleName?: string; + middleName?: string /** */ - lastName?: string; + lastName?: string /** */ - birthMonth?: string; + birthMonth?: string /** */ - birthDay?: string; + birthDay?: string /** */ - birthYear?: string; + birthYear?: string /** */ - emailAddress?: string; + emailAddress?: string /** */ - noEmail?: boolean; + noEmail?: boolean /** */ - phoneNumber?: string; + phoneNumber?: string /** */ - phoneNumberType?: string; + phoneNumberType?: string /** */ - noPhone?: boolean; + noPhone?: boolean /** */ - workInRegion?: string; + workInRegion?: string } export interface AlternateContact { /** */ - mailingAddress: Address; + mailingAddress: Address /** */ - id: string; + id: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date /** */ - type?: string; + type?: string /** */ - otherType?: string; + otherType?: string /** */ - firstName?: string; + firstName?: string /** */ - lastName?: string; + lastName?: string /** */ - agency?: string; + agency?: string /** */ - phoneNumber?: string; + phoneNumber?: string /** */ - emailAddress?: string; + emailAddress?: string } export interface Accessibility { /** */ - mobility?: boolean; + mobility?: boolean /** */ - vision?: boolean; + vision?: boolean /** */ - hearing?: boolean; + hearing?: boolean /** */ - id: string; + id: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date } export interface Demographics { /** */ - id: string; + id: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date /** */ - ethnicity?: string; + ethnicity?: string /** */ - gender?: string; + gender?: string /** */ - sexualOrientation?: string; + sexualOrientation?: string /** */ - howDidYouHear: string[]; + howDidYouHear: string[] /** */ - race?: string; + race?: string } export interface HouseholdMember { /** */ - address: Address; + address: Address /** */ - workAddress: Address; + workAddress: Address /** */ - id: string; + id: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date /** */ - orderId?: number; + orderId?: number /** */ - firstName?: string; + firstName?: string /** */ - middleName?: string; + middleName?: string /** */ - lastName?: string; + lastName?: string /** */ - birthMonth?: string; + birthMonth?: string /** */ - birthDay?: string; + birthDay?: string /** */ - birthYear?: string; + birthYear?: string /** */ - emailAddress?: string; + emailAddress?: string /** */ - noEmail?: boolean; + noEmail?: boolean /** */ - phoneNumber?: string; + phoneNumber?: string /** */ - phoneNumberType?: string; + phoneNumberType?: string /** */ - noPhone?: boolean; + noPhone?: boolean /** */ - sameAddress?: string; + sameAddress?: string /** */ - relationship?: string; + relationship?: string /** */ - workInRegion?: string; + workInRegion?: string } export interface ApplicationPreferenceOption { /** */ - key: string; + key: string /** */ - checked: boolean; + checked: boolean /** */ - extraData?: AllExtraDataTypes[]; + extraData?: AllExtraDataTypes[] } export interface ApplicationPreference { /** */ - key: string; + key: string /** */ - claimed: boolean; + claimed: boolean /** */ - options: ApplicationPreferenceOption[]; + options: ApplicationPreferenceOption[] } export interface Application { /** */ - incomePeriod?: IncomePeriod; + incomePeriod?: IncomePeriod /** */ - status: ApplicationStatus; + status: ApplicationStatus /** */ - language?: Language; + language?: Language /** */ - submissionType: ApplicationSubmissionType; + submissionType: ApplicationSubmissionType /** */ - applicant: Applicant; + applicant: Applicant /** */ - listing: Id; + listing: Id /** */ - user?: Id; + user?: Id /** */ - mailingAddress: Address; + mailingAddress: Address /** */ - alternateAddress: Address; + alternateAddress: Address /** */ - alternateContact: AlternateContact; + alternateContact: AlternateContact /** */ - accessibility: Accessibility; + accessibility: Accessibility /** */ - demographics: Demographics; + demographics: Demographics /** */ - householdMembers: HouseholdMember[]; + householdMembers: HouseholdMember[] /** */ - id: string; + id: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date /** */ - deletedAt?: Date; + deletedAt?: Date /** */ - appUrl?: string; + appUrl?: string /** */ - additionalPhone?: boolean; + additionalPhone?: boolean /** */ - additionalPhoneNumber?: string; + additionalPhoneNumber?: string /** */ - additionalPhoneNumberType?: string; + additionalPhoneNumberType?: string /** */ - contactPreferences: string[]; + contactPreferences: string[] /** */ - householdSize?: number; + householdSize?: number /** */ - housingStatus?: string; + housingStatus?: string /** */ - sendMailToMailingAddress?: boolean; + sendMailToMailingAddress?: boolean /** */ - incomeVouchers?: boolean; + incomeVouchers?: boolean /** */ - income?: string; + income?: string /** */ - preferredUnit: string[]; + preferredUnit: string[] /** */ - preferences: ApplicationPreference[]; + preferences: ApplicationPreference[] /** */ - acceptedTerms?: boolean; + acceptedTerms?: boolean /** */ - submissionDate?: Date; + submissionDate?: Date /** */ - markedAsDuplicate: boolean; + markedAsDuplicate: boolean } export interface ApplicationFlaggedSet { /** */ - resolvingUser: Id; + resolvingUser: Id /** */ - applications: Application[]; + applications: Application[] /** */ - listing: Id; + listing: Id /** */ - id: string; + id: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date /** */ - rule: string; + rule: string /** */ - resolvedTime?: Date; + resolvedTime?: Date /** */ - status: EnumApplicationFlaggedSetStatus; + status: EnumApplicationFlaggedSetStatus /** */ - listingId: string; + listingId: string } export interface ApplicationFlaggedSetPaginationMeta { /** */ - totalFlagged: number; + totalFlagged: number /** */ - currentPage: number; + currentPage: number /** */ - itemCount: number; + itemCount: number /** */ - itemsPerPage: number; + itemsPerPage: number /** */ - totalItems: number; + totalItems: number /** */ - totalPages: number; + totalPages: number } export interface PaginatedApplicationFlaggedSet { /** */ - items: ApplicationFlaggedSet[]; + items: ApplicationFlaggedSet[] /** */ - meta: ApplicationFlaggedSetPaginationMeta; + meta: ApplicationFlaggedSetPaginationMeta } export interface ApplicationFlaggedSetResolve { /** */ - afsId: string; + afsId: string /** */ - applications: Id[]; + applications: Id[] } export interface BooleanInput { /** */ - type: InputType; + type: InputType /** */ - key: string; + key: string /** */ - value: boolean; + value: boolean } export interface TextInput { /** */ - type: InputType; + type: InputType /** */ - key: string; + key: string /** */ - value: string; + value: string } export interface AddressCreate { /** */ - placeName?: string; + placeName?: string /** */ - city?: string; + city?: string /** */ - county?: string; + county?: string /** */ - state?: string; + state?: string /** */ - street?: string; + street?: string /** */ - street2?: string; + street2?: string /** */ - zipCode?: string; + zipCode?: string /** */ - latitude?: number; + latitude?: number /** */ - longitude?: number; + longitude?: number } export interface AddressInput { /** */ - type: InputType; + type: InputType /** */ - key: string; + key: string /** */ - value: AddressCreate; + value: AddressCreate } export interface PaginationMeta { /** */ - currentPage: number; + currentPage: number /** */ - itemCount: number; + itemCount: number /** */ - itemsPerPage: number; + itemsPerPage: number /** */ - totalItems: number; + totalItems: number /** */ - totalPages: number; + totalPages: number } export interface PaginatedApplication { /** */ - items: Application[]; + items: Application[] /** */ - meta: PaginationMeta; + meta: PaginationMeta } export interface ApplicantCreate { /** */ - address: AddressCreate; + address: AddressCreate /** */ - workAddress: AddressCreate; + workAddress: AddressCreate /** */ - firstName?: string; + firstName?: string /** */ - middleName?: string; + middleName?: string /** */ - lastName?: string; + lastName?: string /** */ - birthMonth?: string; + birthMonth?: string /** */ - birthDay?: string; + birthDay?: string /** */ - birthYear?: string; + birthYear?: string /** */ - emailAddress?: string; + emailAddress?: string /** */ - noEmail?: boolean; + noEmail?: boolean /** */ - phoneNumber?: string; + phoneNumber?: string /** */ - phoneNumberType?: string; + phoneNumberType?: string /** */ - noPhone?: boolean; + noPhone?: boolean /** */ - workInRegion?: string; + workInRegion?: string } export interface AlternateContactCreate { /** */ - mailingAddress: AddressCreate; + mailingAddress: AddressCreate /** */ - type?: string; + type?: string /** */ - otherType?: string; + otherType?: string /** */ - firstName?: string; + firstName?: string /** */ - lastName?: string; + lastName?: string /** */ - agency?: string; + agency?: string /** */ - phoneNumber?: string; + phoneNumber?: string /** */ - emailAddress?: string; + emailAddress?: string } export interface AccessibilityCreate { /** */ - mobility?: boolean; + mobility?: boolean /** */ - vision?: boolean; + vision?: boolean /** */ - hearing?: boolean; + hearing?: boolean } export interface DemographicsCreate { /** */ - ethnicity?: string; + ethnicity?: string /** */ - gender?: string; + gender?: string /** */ - sexualOrientation?: string; + sexualOrientation?: string /** */ - howDidYouHear: string[]; + howDidYouHear: string[] /** */ - race?: string; + race?: string } export interface HouseholdMemberCreate { /** */ - address: AddressCreate; + address: AddressCreate /** */ - workAddress: AddressCreate; + workAddress: AddressCreate /** */ - orderId?: number; + orderId?: number /** */ - firstName?: string; + firstName?: string /** */ - middleName?: string; + middleName?: string /** */ - lastName?: string; + lastName?: string /** */ - birthMonth?: string; + birthMonth?: string /** */ - birthDay?: string; + birthDay?: string /** */ - birthYear?: string; + birthYear?: string /** */ - emailAddress?: string; + emailAddress?: string /** */ - noEmail?: boolean; + noEmail?: boolean /** */ - phoneNumber?: string; + phoneNumber?: string /** */ - phoneNumberType?: string; + phoneNumberType?: string /** */ - noPhone?: boolean; + noPhone?: boolean /** */ - sameAddress?: string; + sameAddress?: string /** */ - relationship?: string; + relationship?: string /** */ - workInRegion?: string; + workInRegion?: string } export interface ApplicationCreate { /** */ - incomePeriod?: IncomePeriod; + incomePeriod?: IncomePeriod /** */ - status: ApplicationStatus; + status: ApplicationStatus /** */ - language?: Language; + language?: Language /** */ - submissionType: ApplicationSubmissionType; + submissionType: ApplicationSubmissionType /** */ - listing: Id; + listing: Id /** */ - applicant: ApplicantCreate; + applicant: ApplicantCreate /** */ - mailingAddress: AddressCreate; + mailingAddress: AddressCreate /** */ - alternateAddress: AddressCreate; + alternateAddress: AddressCreate /** */ - alternateContact: AlternateContactCreate; + alternateContact: AlternateContactCreate /** */ - accessibility: AccessibilityCreate; + accessibility: AccessibilityCreate /** */ - demographics: DemographicsCreate; + demographics: DemographicsCreate /** */ - householdMembers: HouseholdMemberCreate[]; + householdMembers: HouseholdMemberCreate[] /** */ - appUrl?: string; + appUrl?: string /** */ - additionalPhone?: boolean; + additionalPhone?: boolean /** */ - additionalPhoneNumber?: string; + additionalPhoneNumber?: string /** */ - additionalPhoneNumberType?: string; + additionalPhoneNumberType?: string /** */ - contactPreferences: string[]; + contactPreferences: string[] /** */ - householdSize?: number; + householdSize?: number /** */ - housingStatus?: string; + housingStatus?: string /** */ - sendMailToMailingAddress?: boolean; + sendMailToMailingAddress?: boolean /** */ - incomeVouchers?: boolean; + incomeVouchers?: boolean /** */ - income?: string; + income?: string /** */ - preferredUnit: string[]; + preferredUnit: string[] /** */ - preferences: ApplicationPreference[]; + preferences: ApplicationPreference[] /** */ - acceptedTerms?: boolean; + acceptedTerms?: boolean /** */ - submissionDate?: Date; + submissionDate?: Date } export interface AddressUpdate { /** */ - id?: string; + id?: string /** */ - createdAt?: Date; + createdAt?: Date /** */ - updatedAt?: Date; + updatedAt?: Date /** */ - placeName?: string; + placeName?: string /** */ - city?: string; + city?: string /** */ - county?: string; + county?: string /** */ - state?: string; + state?: string /** */ - street?: string; + street?: string /** */ - street2?: string; + street2?: string /** */ - zipCode?: string; + zipCode?: string /** */ - latitude?: number; + latitude?: number /** */ - longitude?: number; + longitude?: number } export interface ApplicantUpdate { /** */ - id?: string; + id?: string /** */ - createdAt?: Date; + createdAt?: Date /** */ - updatedAt?: Date; + updatedAt?: Date /** */ - address: AddressUpdate; + address: AddressUpdate /** */ - workAddress: AddressUpdate; + workAddress: AddressUpdate /** */ - firstName?: string; + firstName?: string /** */ - middleName?: string; + middleName?: string /** */ - lastName?: string; + lastName?: string /** */ - birthMonth?: string; + birthMonth?: string /** */ - birthDay?: string; + birthDay?: string /** */ - birthYear?: string; + birthYear?: string /** */ - emailAddress?: string; + emailAddress?: string /** */ - noEmail?: boolean; + noEmail?: boolean /** */ - phoneNumber?: string; + phoneNumber?: string /** */ - phoneNumberType?: string; + phoneNumberType?: string /** */ - noPhone?: boolean; + noPhone?: boolean /** */ - workInRegion?: string; + workInRegion?: string } export interface AlternateContactUpdate { /** */ - id?: string; + id?: string /** */ - createdAt?: Date; + createdAt?: Date /** */ - updatedAt?: Date; + updatedAt?: Date /** */ - mailingAddress: AddressUpdate; + mailingAddress: AddressUpdate /** */ - type?: string; + type?: string /** */ - otherType?: string; + otherType?: string /** */ - firstName?: string; + firstName?: string /** */ - lastName?: string; + lastName?: string /** */ - agency?: string; + agency?: string /** */ - phoneNumber?: string; + phoneNumber?: string /** */ - emailAddress?: string; + emailAddress?: string } export interface AccessibilityUpdate { /** */ - id?: string; + id?: string /** */ - createdAt?: Date; + createdAt?: Date /** */ - updatedAt?: Date; + updatedAt?: Date /** */ - mobility?: boolean; + mobility?: boolean /** */ - vision?: boolean; + vision?: boolean /** */ - hearing?: boolean; + hearing?: boolean } export interface DemographicsUpdate { /** */ - id?: string; + id?: string /** */ - createdAt?: Date; + createdAt?: Date /** */ - updatedAt?: Date; + updatedAt?: Date /** */ - ethnicity?: string; + ethnicity?: string /** */ - gender?: string; + gender?: string /** */ - sexualOrientation?: string; + sexualOrientation?: string /** */ - howDidYouHear: string[]; + howDidYouHear: string[] /** */ - race?: string; + race?: string } export interface HouseholdMemberUpdate { /** */ - id?: string; + id?: string /** */ - createdAt?: Date; + createdAt?: Date /** */ - updatedAt?: Date; + updatedAt?: Date /** */ - address: AddressUpdate; + address: AddressUpdate /** */ - workAddress: AddressUpdate; + workAddress: AddressUpdate /** */ - orderId?: number; + orderId?: number /** */ - firstName?: string; + firstName?: string /** */ - middleName?: string; + middleName?: string /** */ - lastName?: string; + lastName?: string /** */ - birthMonth?: string; + birthMonth?: string /** */ - birthDay?: string; + birthDay?: string /** */ - birthYear?: string; + birthYear?: string /** */ - emailAddress?: string; + emailAddress?: string /** */ - noEmail?: boolean; + noEmail?: boolean /** */ - phoneNumber?: string; + phoneNumber?: string /** */ - phoneNumberType?: string; + phoneNumberType?: string /** */ - noPhone?: boolean; + noPhone?: boolean /** */ - sameAddress?: string; + sameAddress?: string /** */ - relationship?: string; + relationship?: string /** */ - workInRegion?: string; + workInRegion?: string } export interface ApplicationUpdate { /** */ - incomePeriod?: IncomePeriod; + incomePeriod?: IncomePeriod /** */ - status: ApplicationStatus; + status: ApplicationStatus /** */ - language?: Language; + language?: Language /** */ - submissionType: ApplicationSubmissionType; + submissionType: ApplicationSubmissionType /** */ - id?: string; + id?: string /** */ - createdAt?: Date; + createdAt?: Date /** */ - updatedAt?: Date; + updatedAt?: Date /** */ - deletedAt?: Date; + deletedAt?: Date /** */ - listing: Id; + listing: Id /** */ - applicant: ApplicantUpdate; + applicant: ApplicantUpdate /** */ - mailingAddress: AddressUpdate; + mailingAddress: AddressUpdate /** */ - alternateAddress: AddressUpdate; + alternateAddress: AddressUpdate /** */ - alternateContact: AlternateContactUpdate; + alternateContact: AlternateContactUpdate /** */ - accessibility: AccessibilityUpdate; + accessibility: AccessibilityUpdate /** */ - demographics: DemographicsUpdate; + demographics: DemographicsUpdate /** */ - householdMembers: HouseholdMemberUpdate[]; + householdMembers: HouseholdMemberUpdate[] /** */ - appUrl?: string; + appUrl?: string /** */ - additionalPhone?: boolean; + additionalPhone?: boolean /** */ - additionalPhoneNumber?: string; + additionalPhoneNumber?: string /** */ - additionalPhoneNumberType?: string; + additionalPhoneNumberType?: string /** */ - contactPreferences: string[]; + contactPreferences: string[] /** */ - householdSize?: number; + householdSize?: number /** */ - housingStatus?: string; + housingStatus?: string /** */ - sendMailToMailingAddress?: boolean; + sendMailToMailingAddress?: boolean /** */ - incomeVouchers?: boolean; + incomeVouchers?: boolean /** */ - income?: string; + income?: string /** */ - preferredUnit: string[]; + preferredUnit: string[] /** */ - preferences: ApplicationPreference[]; + preferences: ApplicationPreference[] /** */ - acceptedTerms?: boolean; + acceptedTerms?: boolean /** */ - submissionDate?: Date; + submissionDate?: Date } export interface AssetCreate { /** */ - fileId: string; + fileId: string /** */ - label: string; + label: string } export interface Asset { /** */ - id: string; + id: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date /** */ - fileId: string; + fileId: string /** */ - label: string; + label: string } export interface CreatePresignedUploadMetadata { /** */ - parametersToSign: object; + parametersToSign: object } export interface CreatePresignedUploadMetadataResponse { /** */ - signature: string; + signature: string } export interface PaginatedAssets { /** */ - items: Asset[]; + items: Asset[] /** */ - meta: PaginationMeta; + meta: PaginationMeta } export interface Login { /** */ - email: string; + email: string /** */ - password: string; + password: string } export interface LoginResponse { /** */ - accessToken: string; + accessToken: string } export interface Jurisdiction { /** */ - id: string; + id: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date /** */ - name: string; + name: string } export interface JurisdictionCreate { /** */ - name: string; + name: string } export interface JurisdictionUpdate { /** */ - id?: string; + id?: string /** */ - createdAt?: Date; + createdAt?: Date /** */ - updatedAt?: Date; + updatedAt?: Date /** */ - name: string; + name: string } export interface ListingFilterParams { /** */ - $comparison: EnumListingFilterParamsComparison; + $comparison: EnumListingFilterParamsComparison /** */ - name?: string; + name?: string /** */ - status?: EnumListingFilterParamsStatus; + status?: EnumListingFilterParamsStatus } export interface MinMaxCurrency { /** */ - min: string; + min: string /** */ - max: string; + max: string } export interface MinMax { /** */ - min: number; + min: number /** */ - max: number; + max: number } export interface UnitSummary { /** */ - unitType: string; + unitType: string /** */ - minIncomeRange: MinMaxCurrency; + minIncomeRange: MinMaxCurrency /** */ - occupancyRange: MinMax; + occupancyRange: MinMax /** */ - rentAsPercentIncomeRange: MinMax; + rentAsPercentIncomeRange: MinMax /** */ - rentRange: MinMaxCurrency; + rentRange: MinMaxCurrency /** */ - totalAvailable: number; + totalAvailable: number /** */ - areaRange: MinMax; + areaRange: MinMax /** */ - floorRange?: MinMax; + floorRange?: MinMax } export interface UnitSummaryByReservedType { /** */ - reservedType: string; + reservedType: string /** */ - byUnitTypeAndRent: UnitSummary[]; + byUnitTypeAndRent: UnitSummary[] } export interface UnitSummaryByAMI { /** */ - percent: string; + percent: string /** */ - byNonReservedUnitType: UnitSummary[]; + byNonReservedUnitType: UnitSummary[] /** */ - byReservedType: UnitSummaryByReservedType[]; + byReservedType: UnitSummaryByReservedType[] } export interface HMI { /** */ - columns: object; + columns: object /** */ - rows: object[]; + rows: object[] } export interface UnitsSummarized { /** */ - unitTypes: string[]; + unitTypes: string[] /** */ - reservedTypes: string[]; + reservedTypes: string[] /** */ - priorityTypes: string[]; + priorityTypes: string[] /** */ - amiPercentages: string[]; + amiPercentages: string[] /** */ - byUnitTypeAndRent: UnitSummary[]; + byUnitTypeAndRent: UnitSummary[] /** */ - byUnitType: UnitSummary[]; + byUnitType: UnitSummary[] /** */ - byNonReservedUnitType: UnitSummary[]; + byNonReservedUnitType: UnitSummary[] /** */ - byReservedType: UnitSummaryByReservedType[]; + byReservedType: UnitSummaryByReservedType[] /** */ - byAMI: UnitSummaryByAMI[]; + byAMI: UnitSummaryByAMI[] /** */ - hmi: HMI; + hmi: HMI } export interface PreferenceLink { /** */ - title: string; + title: string /** */ - url: string; + url: string } export interface FormMetadataExtraData { /** */ - type: InputType; + type: InputType /** */ - key: string; + key: string } export interface FormMetadataOptions { /** */ - key: string; + key: string /** */ - extraData?: FormMetadataExtraData[]; + extraData?: FormMetadataExtraData[] /** */ - description: boolean; + description: boolean /** */ - exclusive: boolean; + exclusive: boolean } export interface FormMetadata { /** */ - key: string; + key: string /** */ - options: FormMetadataOptions[]; + options: FormMetadataOptions[] /** */ - hideGenericDecline: boolean; + hideGenericDecline: boolean /** */ - customSelectText: string; + customSelectText: string /** */ - hideFromListing: boolean; + hideFromListing: boolean } export interface Preference { /** */ - links: PreferenceLink[]; + links: PreferenceLink[] /** */ - id: string; + id: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date /** */ - ordinal: number; + ordinal: number /** */ - title: string; + title: string /** */ - subtitle: string; + subtitle: string /** */ - description: string; + description: string /** */ - formMetadata?: FormMetadata; + formMetadata?: FormMetadata /** */ - page: number; + page: number } export interface UserBasic { /** */ - language?: Language; + language?: Language /** */ - id: string; + id: string /** */ - confirmedAt?: Date; + confirmedAt?: Date /** */ - email: string; + email: string /** */ - firstName: string; + firstName: string /** */ - middleName?: string; + middleName?: string /** */ - lastName: string; + lastName: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date } export interface ReservedCommunityType { /** */ - id: string; + id: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date /** */ - name: string; + name: string /** */ - description?: string; + description?: string } export interface Unit { /** */ - amiChart: CombinedAmiChartTypes; + amiChart: CombinedAmiChartTypes /** */ - id: string; + id: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date /** */ - amiPercentage?: string; + amiPercentage?: string /** */ - annualIncomeMin?: string; + annualIncomeMin?: string /** */ - monthlyIncomeMin?: string; + monthlyIncomeMin?: string /** */ - floor?: number; + floor?: number /** */ - annualIncomeMax?: string; + annualIncomeMax?: string /** */ - maxOccupancy?: number; + maxOccupancy?: number /** */ - minOccupancy?: number; + minOccupancy?: number /** */ - monthlyRent?: string; + monthlyRent?: string /** */ - numBathrooms?: number; + numBathrooms?: number /** */ - numBedrooms?: number; + numBedrooms?: number /** */ - number?: string; + number?: string /** */ - priorityType?: string; + priorityType?: string /** */ - reservedType?: string; + reservedType?: string /** */ - sqFeet?: string; + sqFeet?: string /** */ - status?: string; + status?: string /** */ - unitType?: string; + unitType?: string /** */ - monthlyRentAsPercentOfIncome?: string; + monthlyRentAsPercentOfIncome?: string /** */ - bmrProgramChart?: boolean; + bmrProgramChart?: boolean } export interface ApplicationMethod { /** */ - type: ApplicationMethodType; + type: ApplicationMethodType /** */ - label: string; + label: string /** */ - externalReference: string; + externalReference: string /** */ - acceptsPostmarkedApplications: boolean; + acceptsPostmarkedApplications: boolean } export interface ListingEvent { /** */ - type: ListingEventType; + type: ListingEventType /** */ - startTime?: Date; + startTime?: Date /** */ - endTime?: Date; + endTime?: Date /** */ - url?: string; + url?: string /** */ - note?: string; + note?: string /** */ - label?: string; + label?: string } export interface WhatToExpect { /** */ - applicantsWillBeContacted: string; + applicantsWillBeContacted: string /** */ - allInfoWillBeVerified: string; + allInfoWillBeVerified: string /** */ - bePreparedIfChosen: string; + bePreparedIfChosen: string } export interface Listing { /** */ - applicationPickUpAddressType?: ListingApplicationAddressType; + applicationPickUpAddressType?: ListingApplicationAddressType /** */ - applicationDropOffAddressType?: ListingApplicationAddressType; + applicationDropOffAddressType?: ListingApplicationAddressType /** */ - applicationMailingAddress: CombinedApplicationAddressTypes; + applicationMailingAddress: CombinedApplicationAddressTypes /** */ - applicationDropOffAddress: CombinedApplicationAddressTypes; + applicationDropOffAddress: CombinedApplicationAddressTypes /** */ - applicationDropOffAddressOfficeHours: string; + applicationDropOffAddressOfficeHours: string /** */ - status: ListingStatus; + status: ListingStatus /** */ - urlSlug: string; + urlSlug: string /** */ - CSVFormattingType: CSVFormattingType; + CSVFormattingType: CSVFormattingType /** */ - countyCode: CountyCode; + countyCode: CountyCode /** */ - showWaitlist: boolean; + showWaitlist: boolean /** */ - unitsSummarized: UnitsSummarized; + unitsSummarized: UnitsSummarized /** */ - preferences: Preference[]; + preferences: Preference[] /** */ additionalApplicationSubmissionNotes?: string /** */ - applicationAddress: CombinedApplicationAddressTypes; + applicationAddress: CombinedApplicationAddressTypes /** */ - applicationPickUpAddress: CombinedApplicationPickUpAddressTypes; + applicationPickUpAddress: CombinedApplicationPickUpAddressTypes /** */ - image?: CombinedImageTypes; + image?: CombinedImageTypes /** */ - leasingAgentAddress: CombinedLeasingAgentAddressTypes; + leasingAgentAddress: CombinedLeasingAgentAddressTypes /** */ - leasingAgents?: UserBasic[]; + leasingAgents?: UserBasic[] /** */ - jurisdiction?: Jurisdiction; + jurisdiction?: Jurisdiction /** */ - reservedCommunityType?: ReservedCommunityType; + reservedCommunityType?: ReservedCommunityType /** */ - result?: CombinedResultTypes; + result?: CombinedResultTypes /** */ - units: Unit[]; + units: Unit[] /** */ - accessibility: string; + accessibility: string /** */ - amenities: string; + amenities: string /** */ - buildingAddress: Address; + buildingAddress: Address /** */ - buildingTotalUnits: number; + buildingTotalUnits: number /** */ - developer: string; + developer: string /** */ - householdSizeMax: number; + householdSizeMax: number /** */ - householdSizeMin: number; + householdSizeMin: number /** */ - neighborhood: string; + neighborhood: string /** */ - petPolicy: string; + petPolicy: string /** */ - smokingPolicy: string; + smokingPolicy: string /** */ - unitsAvailable: number; + unitsAvailable: number /** */ - unitAmenities: string; + unitAmenities: string /** */ - servicesOffered?: string; + servicesOffered?: string /** */ - yearBuilt: number; + yearBuilt: number /** */ - id: string; + id: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date /** */ - applicationMethods: ApplicationMethod[]; + applicationMethods: ApplicationMethod[] /** */ - assets: AssetCreate[]; + assets: AssetCreate[] /** */ - events: ListingEvent[]; + events: ListingEvent[] /** */ - applicationDueDate: Date; + applicationDueDate: Date /** */ applicationDueTime: Date /** */ - applicationOpenDate: Date; + applicationOpenDate: Date /** */ - applicationFee: string; + applicationFee: string /** */ - applicationOrganization: string; + applicationOrganization: string /** */ - applicationPickUpAddressOfficeHours: string; + applicationPickUpAddressOfficeHours: string /** */ - buildingSelectionCriteria: string; + buildingSelectionCriteria: string /** */ - costsNotIncluded: string; + costsNotIncluded: string /** */ - creditHistory: string; + creditHistory: string /** */ - criminalBackground: string; + criminalBackground: string /** */ - depositMin: string; + depositMin: string /** */ - depositMax: string; + depositMax: string /** */ - disableUnitsAccordion: boolean; + disableUnitsAccordion: boolean /** */ - leasingAgentEmail: string; + leasingAgentEmail: string /** */ - leasingAgentName: string; + leasingAgentName: string /** */ - leasingAgentOfficeHours: string; + leasingAgentOfficeHours: string /** */ - leasingAgentPhone: string; + leasingAgentPhone: string /** */ - leasingAgentTitle: string; + leasingAgentTitle: string /** */ - name: string; + name: string /** */ - postmarkedApplicationsReceivedByDate: Date; + postmarkedApplicationsReceivedByDate: Date /** */ - programRules: string; + programRules: string /** */ - rentalAssistance: string; + rentalAssistance: string /** */ - rentalHistory: string; + rentalHistory: string /** */ - requiredDocuments: string; + requiredDocuments: string /** */ - specialNotes?: string; + specialNotes?: string /** */ - waitlistCurrentSize: number; + waitlistCurrentSize: number /** */ - waitlistMaxSize: number; + waitlistMaxSize: number /** */ - whatToExpect: CombinedWhatToExpectTypes; + whatToExpect: CombinedWhatToExpectTypes /** */ - applicationConfig?: object; + applicationConfig?: object /** */ - applicationCount?: number; + applicationCount?: number /** */ - displayWaitlistSize: boolean; + displayWaitlistSize: boolean /** */ - reservedCommunityMinAge?: number; + reservedCommunityMinAge?: number /** */ - resultLink?: string; + resultLink?: string /** */ - isWaitlistOpen?: boolean; + isWaitlistOpen?: boolean /** */ - waitlistOpenSpots?: number; + waitlistOpenSpots?: number } export interface PreferenceCreate { /** */ - links: PreferenceLink[]; + links: PreferenceLink[] /** */ - ordinal: number; + ordinal: number /** */ - title: string; + title: string /** */ - subtitle: string; + subtitle: string /** */ - description: string; + description: string /** */ - formMetadata?: FormMetadata; + formMetadata?: FormMetadata /** */ - page: number; + page: number } export interface UnitCreate { /** */ - amiChart: CombinedAmiChartTypes; + amiChart: CombinedAmiChartTypes /** */ - amiPercentage?: string; + amiPercentage?: string /** */ - annualIncomeMin?: string; + annualIncomeMin?: string /** */ - monthlyIncomeMin?: string; + monthlyIncomeMin?: string /** */ - floor?: number; + floor?: number /** */ - annualIncomeMax?: string; + annualIncomeMax?: string /** */ - maxOccupancy?: number; + maxOccupancy?: number /** */ - minOccupancy?: number; + minOccupancy?: number /** */ - monthlyRent?: string; + monthlyRent?: string /** */ - numBathrooms?: number; + numBathrooms?: number /** */ - numBedrooms?: number; + numBedrooms?: number /** */ - number?: string; + number?: string /** */ - priorityType?: string; + priorityType?: string /** */ - reservedType?: string; + reservedType?: string /** */ - sqFeet?: string; + sqFeet?: string /** */ - status?: string; + status?: string /** */ - unitType?: string; + unitType?: string /** */ - monthlyRentAsPercentOfIncome?: string; + monthlyRentAsPercentOfIncome?: string /** */ - bmrProgramChart?: boolean; + bmrProgramChart?: boolean } export interface ListingCreate { /** */ - applicationPickUpAddressType?: ListingApplicationAddressType; + applicationPickUpAddressType?: ListingApplicationAddressType /** */ - applicationDropOffAddressType?: ListingApplicationAddressType; + applicationDropOffAddressType?: ListingApplicationAddressType /** */ - applicationMailingAddress: CombinedApplicationAddressTypes; + applicationMailingAddress: CombinedApplicationAddressTypes /** */ - applicationDropOffAddress: CombinedApplicationAddressTypes; + applicationDropOffAddress: CombinedApplicationAddressTypes /** */ - applicationDropOffAddressOfficeHours: string; + applicationDropOffAddressOfficeHours: string /** */ - status: ListingStatus; + status: ListingStatus /** */ - CSVFormattingType: CSVFormattingType; + CSVFormattingType: CSVFormattingType /** */ - countyCode: CountyCode; + countyCode: CountyCode /** */ - preferences: PreferenceCreate[]; + preferences: PreferenceCreate[] /** */ additionalApplicationSubmissionNotes?: string /** */ - applicationAddress: CombinedApplicationAddressTypes; + applicationAddress: CombinedApplicationAddressTypes /** */ - applicationPickUpAddress: CombinedApplicationPickUpAddressTypes; + applicationPickUpAddress: CombinedApplicationPickUpAddressTypes /** */ - image?: CombinedImageTypes; + image?: CombinedImageTypes /** */ - leasingAgentAddress: CombinedLeasingAgentAddressTypes; + leasingAgentAddress: CombinedLeasingAgentAddressTypes /** */ - leasingAgents?: Id[]; + leasingAgents?: Id[] /** */ - units: UnitCreate[]; + units: UnitCreate[] /** */ - accessibility: string; + accessibility: string /** */ - amenities: string; + amenities: string /** */ - buildingAddress: AddressCreate; + buildingAddress: AddressCreate /** */ - buildingTotalUnits: number; + buildingTotalUnits: number /** */ - developer: string; + developer: string /** */ - householdSizeMax: number; + householdSizeMax: number /** */ - householdSizeMin: number; + householdSizeMin: number /** */ - neighborhood: string; + neighborhood: string /** */ - petPolicy: string; + petPolicy: string /** */ - smokingPolicy: string; + smokingPolicy: string /** */ - unitsAvailable: number; + unitsAvailable: number /** */ - unitAmenities: string; + unitAmenities: string /** */ - servicesOffered?: string; + servicesOffered?: string /** */ - yearBuilt: number; + yearBuilt: number /** */ - jurisdiction?: Id; + jurisdiction?: Id /** */ - reservedCommunityType?: Id; + reservedCommunityType?: Id /** */ - result?: CombinedResultTypes; + result?: CombinedResultTypes /** */ - applicationMethods: ApplicationMethod[]; + applicationMethods: ApplicationMethod[] /** */ - assets: AssetCreate[]; + assets: AssetCreate[] /** */ - events: ListingEvent[]; + events: ListingEvent[] /** */ - applicationDueDate: Date; + applicationDueDate: Date /** */ applicationDueTime: Date /** */ - applicationOpenDate: Date; + applicationOpenDate: Date /** */ - applicationFee: string; + applicationFee: string /** */ - applicationOrganization: string; + applicationOrganization: string /** */ - applicationPickUpAddressOfficeHours: string; + applicationPickUpAddressOfficeHours: string /** */ - buildingSelectionCriteria: string; + buildingSelectionCriteria: string /** */ - costsNotIncluded: string; + costsNotIncluded: string /** */ - creditHistory: string; + creditHistory: string /** */ - criminalBackground: string; + criminalBackground: string /** */ - depositMin: string; + depositMin: string /** */ - depositMax: string; + depositMax: string /** */ - disableUnitsAccordion: boolean; + disableUnitsAccordion: boolean /** */ - leasingAgentEmail: string; + leasingAgentEmail: string /** */ - leasingAgentName: string; + leasingAgentName: string /** */ - leasingAgentOfficeHours: string; + leasingAgentOfficeHours: string /** */ - leasingAgentPhone: string; + leasingAgentPhone: string /** */ - leasingAgentTitle: string; + leasingAgentTitle: string /** */ - name: string; + name: string /** */ - postmarkedApplicationsReceivedByDate: Date; + postmarkedApplicationsReceivedByDate: Date /** */ - programRules: string; + programRules: string /** */ - rentalAssistance: string; + rentalAssistance: string /** */ - rentalHistory: string; + rentalHistory: string /** */ - requiredDocuments: string; + requiredDocuments: string /** */ - specialNotes?: string; + specialNotes?: string /** */ - waitlistCurrentSize: number; + waitlistCurrentSize: number /** */ - waitlistMaxSize: number; + waitlistMaxSize: number /** */ - whatToExpect: CombinedWhatToExpectTypes; + whatToExpect: CombinedWhatToExpectTypes /** */ - applicationConfig?: object; + applicationConfig?: object /** */ - displayWaitlistSize: boolean; + displayWaitlistSize: boolean /** */ - reservedCommunityMinAge?: number; + reservedCommunityMinAge?: number /** */ - resultLink?: string; + resultLink?: string /** */ - isWaitlistOpen?: boolean; + isWaitlistOpen?: boolean /** */ - waitlistOpenSpots?: number; + waitlistOpenSpots?: number } export interface PreferenceUpdate { /** */ - links: PreferenceLink[]; + links: PreferenceLink[] /** */ - ordinal: number; + ordinal: number /** */ - title: string; + title: string /** */ - subtitle: string; + subtitle: string /** */ - description: string; + description: string /** */ - formMetadata?: FormMetadata; + formMetadata?: FormMetadata /** */ - page: number; + page: number /** */ - id: string; + id: string } export interface AssetUpdate { /** */ - id?: string; + id?: string /** */ - createdAt?: Date; + createdAt?: Date /** */ - updatedAt?: Date; + updatedAt?: Date /** */ - fileId: string; + fileId: string /** */ - label: string; + label: string } export interface UnitUpdate { /** */ - amiChart: CombinedAmiChartTypes; + amiChart: CombinedAmiChartTypes /** */ - amiPercentage?: string; + amiPercentage?: string /** */ - annualIncomeMin?: string; + annualIncomeMin?: string /** */ - monthlyIncomeMin?: string; + monthlyIncomeMin?: string /** */ - floor?: number; + floor?: number /** */ - annualIncomeMax?: string; + annualIncomeMax?: string /** */ - maxOccupancy?: number; + maxOccupancy?: number /** */ - minOccupancy?: number; + minOccupancy?: number /** */ - monthlyRent?: string; + monthlyRent?: string /** */ - numBathrooms?: number; + numBathrooms?: number /** */ - numBedrooms?: number; + numBedrooms?: number /** */ - number?: string; + number?: string /** */ - priorityType?: string; + priorityType?: string /** */ - reservedType?: string; + reservedType?: string /** */ - sqFeet?: string; + sqFeet?: string /** */ - status?: string; + status?: string /** */ - unitType?: string; + unitType?: string /** */ - monthlyRentAsPercentOfIncome?: string; + monthlyRentAsPercentOfIncome?: string /** */ - bmrProgramChart?: boolean; + bmrProgramChart?: boolean /** */ - id: string; + id: string } export interface ListingUpdate { /** */ - applicationPickUpAddressType?: ListingApplicationAddressType; + applicationPickUpAddressType?: ListingApplicationAddressType /** */ - applicationDropOffAddressType?: ListingApplicationAddressType; + applicationDropOffAddressType?: ListingApplicationAddressType /** */ - applicationMailingAddress: CombinedApplicationAddressTypes; + applicationMailingAddress: CombinedApplicationAddressTypes /** */ - applicationDropOffAddress: CombinedApplicationAddressTypes; + applicationDropOffAddress: CombinedApplicationAddressTypes /** */ - applicationDropOffAddressOfficeHours: string; + applicationDropOffAddressOfficeHours: string /** */ - status: ListingStatus; + status: ListingStatus /** */ - CSVFormattingType: CSVFormattingType; + CSVFormattingType: CSVFormattingType /** */ - countyCode: CountyCode; + countyCode: CountyCode /** */ - id?: string; + id?: string /** */ - createdAt?: Date; + createdAt?: Date /** */ - updatedAt?: Date; + updatedAt?: Date /** */ - preferences: PreferenceUpdate[]; + preferences: PreferenceUpdate[] /** */ additionalApplicationSubmissionNotes?: string /** */ - applicationAddress: CombinedApplicationAddressTypes; + applicationAddress: CombinedApplicationAddressTypes /** */ - applicationPickUpAddress: CombinedApplicationPickUpAddressTypes; + applicationPickUpAddress: CombinedApplicationPickUpAddressTypes /** */ - image?: AssetUpdate; + image?: AssetUpdate /** */ - leasingAgentAddress: CombinedLeasingAgentAddressTypes; + leasingAgentAddress: CombinedLeasingAgentAddressTypes /** */ - leasingAgents?: Id[]; + leasingAgents?: Id[] /** */ - units: UnitUpdate[]; + units: UnitUpdate[] /** */ - accessibility: string; + accessibility: string /** */ - amenities: string; + amenities: string /** */ - buildingAddress: AddressUpdate; + buildingAddress: AddressUpdate /** */ - buildingTotalUnits: number; + buildingTotalUnits: number /** */ - developer: string; + developer: string /** */ - householdSizeMax: number; + householdSizeMax: number /** */ - householdSizeMin: number; + householdSizeMin: number /** */ - neighborhood: string; + neighborhood: string /** */ - petPolicy: string; + petPolicy: string /** */ - smokingPolicy: string; + smokingPolicy: string /** */ - unitsAvailable: number; + unitsAvailable: number /** */ - unitAmenities: string; + unitAmenities: string /** */ - servicesOffered?: string; + servicesOffered?: string /** */ - yearBuilt: number; + yearBuilt: number /** */ - jurisdiction?: Id; + jurisdiction?: Id /** */ - reservedCommunityType?: Id; + reservedCommunityType?: Id /** */ - result?: AssetUpdate; + result?: AssetUpdate /** */ - applicationMethods: ApplicationMethod[]; + applicationMethods: ApplicationMethod[] /** */ - assets: AssetCreate[]; + assets: AssetCreate[] /** */ - events: ListingEvent[]; + events: ListingEvent[] /** */ - applicationDueDate: Date; + applicationDueDate: Date /** */ applicationDueTime: Date /** */ - applicationOpenDate: Date; + applicationOpenDate: Date /** */ - applicationFee: string; + applicationFee: string /** */ - applicationOrganization: string; + applicationOrganization: string /** */ - applicationPickUpAddressOfficeHours: string; + applicationPickUpAddressOfficeHours: string /** */ - buildingSelectionCriteria: string; + buildingSelectionCriteria: string /** */ - costsNotIncluded: string; + costsNotIncluded: string /** */ - creditHistory: string; + creditHistory: string /** */ - criminalBackground: string; + criminalBackground: string /** */ - depositMin: string; + depositMin: string /** */ - depositMax: string; + depositMax: string /** */ - disableUnitsAccordion: boolean; + disableUnitsAccordion: boolean /** */ - leasingAgentEmail: string; + leasingAgentEmail: string /** */ - leasingAgentName: string; + leasingAgentName: string /** */ - leasingAgentOfficeHours: string; + leasingAgentOfficeHours: string /** */ - leasingAgentPhone: string; + leasingAgentPhone: string /** */ - leasingAgentTitle: string; + leasingAgentTitle: string /** */ - name: string; + name: string /** */ - postmarkedApplicationsReceivedByDate: Date; + postmarkedApplicationsReceivedByDate: Date /** */ - programRules: string; + programRules: string /** */ - rentalAssistance: string; + rentalAssistance: string /** */ - rentalHistory: string; + rentalHistory: string /** */ - requiredDocuments: string; + requiredDocuments: string /** */ - specialNotes?: string; + specialNotes?: string /** */ - waitlistCurrentSize: number; + waitlistCurrentSize: number /** */ - waitlistMaxSize: number; + waitlistMaxSize: number /** */ - whatToExpect: CombinedWhatToExpectTypes; + whatToExpect: CombinedWhatToExpectTypes /** */ - applicationConfig?: object; + applicationConfig?: object /** */ - displayWaitlistSize: boolean; + displayWaitlistSize: boolean /** */ - reservedCommunityMinAge?: number; + reservedCommunityMinAge?: number /** */ - resultLink?: string; + resultLink?: string /** */ - isWaitlistOpen?: boolean; + isWaitlistOpen?: boolean /** */ - waitlistOpenSpots?: number; + waitlistOpenSpots?: number } export interface Property { /** */ - unitsSummarized: UnitsSummarized; + unitsSummarized: UnitsSummarized /** */ - units: Unit[]; + units: Unit[] /** */ - buildingAddress: Address; + buildingAddress: Address /** */ - id: string; + id: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date /** */ - accessibility: string; + accessibility: string /** */ - amenities: string; + amenities: string /** */ - buildingTotalUnits: number; + buildingTotalUnits: number /** */ - developer: string; + developer: string /** */ - householdSizeMax: number; + householdSizeMax: number /** */ - householdSizeMin: number; + householdSizeMin: number /** */ - neighborhood: string; + neighborhood: string /** */ - petPolicy: string; + petPolicy: string /** */ - smokingPolicy: string; + smokingPolicy: string /** */ - unitsAvailable: number; + unitsAvailable: number /** */ - unitAmenities: string; + unitAmenities: string /** */ - servicesOffered?: string; + servicesOffered?: string /** */ - yearBuilt: number; + yearBuilt: number } export interface PropertyCreate { /** */ - buildingAddress: AddressUpdate; + buildingAddress: AddressUpdate /** */ - units: UnitCreate[]; + units: UnitCreate[] /** */ - accessibility: string; + accessibility: string /** */ - amenities: string; + amenities: string /** */ - buildingTotalUnits: number; + buildingTotalUnits: number /** */ - developer: string; + developer: string /** */ - householdSizeMax: number; + householdSizeMax: number /** */ - householdSizeMin: number; + householdSizeMin: number /** */ - neighborhood: string; + neighborhood: string /** */ - petPolicy: string; + petPolicy: string /** */ - smokingPolicy: string; + smokingPolicy: string /** */ - unitsAvailable: number; + unitsAvailable: number /** */ - unitAmenities: string; + unitAmenities: string /** */ - servicesOffered?: string; + servicesOffered?: string /** */ - yearBuilt: number; + yearBuilt: number } export interface PropertyUpdate { /** */ - id?: string; + id?: string /** */ - createdAt?: Date; + createdAt?: Date /** */ - updatedAt?: Date; + updatedAt?: Date /** */ - buildingAddress: AddressUpdate; + buildingAddress: AddressUpdate /** */ - units: UnitUpdate[]; + units: UnitUpdate[] /** */ - accessibility: string; + accessibility: string /** */ - amenities: string; + amenities: string /** */ - buildingTotalUnits: number; + buildingTotalUnits: number /** */ - developer: string; + developer: string /** */ - householdSizeMax: number; + householdSizeMax: number /** */ - householdSizeMin: number; + householdSizeMin: number /** */ - neighborhood: string; + neighborhood: string /** */ - petPolicy: string; + petPolicy: string /** */ - smokingPolicy: string; + smokingPolicy: string /** */ - unitsAvailable: number; + unitsAvailable: number /** */ - unitAmenities: string; + unitAmenities: string /** */ - servicesOffered?: string; + servicesOffered?: string /** */ - yearBuilt: number; + yearBuilt: number } export interface PropertyGroup { /** */ - properties: Id[]; + properties: Id[] /** */ - id: string; + id: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date /** */ - name: string; + name: string } export interface PropertyGroupCreate { /** */ - name: string; + name: string /** */ - properties: Id[]; + properties: Id[] } export interface PropertyGroupUpdate { /** */ - name: string; + name: string /** */ - properties: Id[]; + properties: Id[] /** */ - id: string; + id: string } export interface ReservedCommunityTypeCreate { /** */ - name: string; + name: string /** */ - description?: string; + description?: string } export interface ReservedCommunityTypeUpdate { /** */ - name: string; + name: string /** */ - description?: string; + description?: string /** */ - id: string; + id: string } export interface Translation { /** */ - countyCode: CountyCode; + countyCode: CountyCode /** */ - language: Language; + language: Language /** */ - id: string; + id: string /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date /** */ - translations: object; + translations: object } export interface TranslationCreate { /** */ - countyCode: CountyCode; + countyCode: CountyCode /** */ - language: Language; + language: Language /** */ - translations: object; + translations: object } export interface TranslationUpdate { /** */ - countyCode: CountyCode; + countyCode: CountyCode /** */ - language: Language; + language: Language /** */ - id?: string; + id?: string /** */ - createdAt?: Date; + createdAt?: Date /** */ - updatedAt?: Date; + updatedAt?: Date /** */ - translations: object; + translations: object } export interface User { /** */ - roles: UserRole[]; + roles: UserRole[] /** */ - language?: Language; + language?: Language /** */ - leasingAgentInListings?: Id[]; + leasingAgentInListings?: Id[] /** */ - id: string; + id: string /** */ - confirmedAt?: Date; + confirmedAt?: Date /** */ - email: string; + email: string /** */ - firstName: string; + firstName: string /** */ - middleName?: string; + middleName?: string /** */ - lastName: string; + lastName: string /** */ - dob: Date; + dob: Date /** */ - createdAt: Date; + createdAt: Date /** */ - updatedAt: Date; + updatedAt: Date } export interface UserCreate { /** */ - language?: Language; + language?: Language /** */ - password: string; + password: string /** */ - passwordConfirmation: string; + passwordConfirmation: string /** */ - emailConfirmation: string; + emailConfirmation: string /** */ - appUrl?: string; + appUrl?: string /** */ - email: string; + email: string /** */ - firstName: string; + firstName: string /** */ - middleName?: string; + middleName?: string /** */ - lastName: string; + lastName: string /** */ - dob: Date; + dob: Date } export interface Email { /** */ - email: string; + email: string /** */ - appUrl?: string; + appUrl?: string } export interface Status { /** */ - status: string; + status: string } export interface Confirm { /** */ - token: string; + token: string } export interface ForgotPassword { /** */ - email: string; + email: string /** */ - appUrl?: string; + appUrl?: string } export interface ForgotPasswordResponse { /** */ - message: string; + message: string } export interface UpdatePassword { /** */ - password: string; + password: string /** */ - passwordConfirmation: string; + passwordConfirmation: string /** */ - token: string; + token: string } export interface UserUpdate { /** */ - language?: Language; + language?: Language /** */ - id?: string; + id?: string /** */ - createdAt?: Date; + createdAt?: Date /** */ - updatedAt?: Date; + updatedAt?: Date /** */ - password?: string; + password?: string /** */ - currentPassword?: string; + currentPassword?: string /** */ - confirmedAt?: Date; + confirmedAt?: Date /** */ - email: string; + email: string /** */ - firstName: string; + firstName: string /** */ - middleName?: string; + middleName?: string /** */ - lastName: string; + lastName: string /** */ - dob: Date; + dob: Date } export enum IncomePeriod { - 'perMonth' = 'perMonth', - 'perYear' = 'perYear' + "perMonth" = "perMonth", + "perYear" = "perYear", } export enum ApplicationStatus { - 'draft' = 'draft', - 'submitted' = 'submitted', - 'removed' = 'removed' + "draft" = "draft", + "submitted" = "submitted", + "removed" = "removed", } export enum Language { - 'en' = 'en', - 'es' = 'es', - 'vi' = 'vi', - 'zh' = 'zh' + "en" = "en", + "es" = "es", + "vi" = "vi", + "zh" = "zh", } export enum ApplicationSubmissionType { - 'paper' = 'paper', - 'electronical' = 'electronical' + "paper" = "paper", + "electronical" = "electronical", } -export type AllExtraDataTypes = BooleanInput | TextInput | AddressInput; +export type AllExtraDataTypes = BooleanInput | TextInput | AddressInput export enum EnumApplicationFlaggedSetStatus { - 'flagged' = 'flagged', - 'resolved' = 'resolved' + "flagged" = "flagged", + "resolved" = "resolved", } export enum InputType { - 'boolean' = 'boolean', - 'text' = 'text', - 'address' = 'address', - 'hhMemberSelect' = 'hhMemberSelect' + "boolean" = "boolean", + "text" = "text", + "address" = "address", + "hhMemberSelect" = "hhMemberSelect", } export enum EnumListingFilterParamsComparison { - '=' = '=', - '<>' = '<>' + "=" = "=", + "<>" = "<>", } export enum EnumListingFilterParamsStatus { - 'active' = 'active', - 'pending' = 'pending', - 'closed' = 'closed' + "active" = "active", + "pending" = "pending", + "closed" = "closed", } export enum ListingApplicationAddressType { - 'leasingAgent' = 'leasingAgent', - 'mailingAddress' = 'mailingAddress' + "leasingAgent" = "leasingAgent", + "mailingAddress" = "mailingAddress", } export enum ListingStatus { - 'active' = 'active', - 'pending' = 'pending', - 'closed' = 'closed' + "active" = "active", + "pending" = "pending", + "closed" = "closed", } export enum CSVFormattingType { - 'basic' = 'basic', - 'withDisplaceeNameAndAddress' = 'withDisplaceeNameAndAddress', - 'ohaFormat' = 'ohaFormat' + "basic" = "basic", + "withDisplaceeNameAndAddress" = "withDisplaceeNameAndAddress", + "ohaFormat" = "ohaFormat", } export enum CountyCode { - 'Alameda' = 'Alameda', - 'San Mateo' = 'San Mateo', - 'San Jose' = 'San Jose' + "Alameda" = "Alameda", + "San Mateo" = "San Mateo", + "San Jose" = "San Jose", } -export type CombinedAmiChartTypes = (AmiChart & any) | null; +export type CombinedAmiChartTypes = (AmiChart & any) | null export enum ApplicationMethodType { - 'Internal' = 'Internal', - 'FileDownload' = 'FileDownload', - 'ExternalLink' = 'ExternalLink', + "Internal" = "Internal", + "FileDownload" = "FileDownload", + "ExternalLink" = "ExternalLink", "PaperPickup" = "PaperPickup", } export enum ListingEventType { - 'openHouse' = 'openHouse', - 'publicLottery' = 'publicLottery', - 'lotteryResults' = 'lotteryResults' -} -export type CombinedApplicationAddressTypes = (AddressUpdate & any) | null; -export type CombinedApplicationPickUpAddressTypes = (AddressUpdate & any) | null; -export type CombinedImageTypes = (AssetCreate & any) | null; -export type CombinedLeasingAgentAddressTypes = (AddressUpdate & any) | null; -export type CombinedResultTypes = (AssetCreate & any) | null; -export type CombinedWhatToExpectTypes = (WhatToExpect & any) | null; + "openHouse" = "openHouse", + "publicLottery" = "publicLottery", + "lotteryResults" = "lotteryResults", +} +export type CombinedApplicationAddressTypes = (AddressUpdate & any) | null +export type CombinedApplicationPickUpAddressTypes = (AddressUpdate & any) | null +export type CombinedImageTypes = (AssetCreate & any) | null +export type CombinedLeasingAgentAddressTypes = (AddressUpdate & any) | null +export type CombinedResultTypes = (AssetCreate & any) | null +export type CombinedWhatToExpectTypes = (WhatToExpect & any) | null export enum UserRole { - 'user' = 'user', - 'admin' = 'admin' + "user" = "user", + "admin" = "admin", } diff --git a/backend/proxy/README.md b/backend/proxy/README.md index 07530327c3..50e5cafed3 100644 --- a/backend/proxy/README.md +++ b/backend/proxy/README.md @@ -1,14 +1,14 @@ ### Rationale -We want to serve different versions of the API under different paths e.g. `/v2`, `/v3` but not necessarily reflect that convention in the code. +We want to serve different versions of the API under different paths e.g. `/v2`, `/v3` but not necessarily reflect that convention in the code. To achieve that an NGINX proxy has been created and set up as an entrypoint to the entire API. It provides path level routing e.g. `/v2` will be routed to a different heroku APP then `/`. ### Setup - Based on [this tutorial](https://dashboard.heroku.com/apps/bloom-reference-backend-proxy/deploy/heroku-container). All values are for `bloom-reference-backend-proxy` and each environment requires it's own proxy. #### Install the Heroku CLI + Download and install the Heroku CLI. If you haven't already, log in to your Heroku account and follow the prompts to create a new SSH public key. @@ -16,7 +16,9 @@ If you haven't already, log in to your Heroku account and follow the prompts to ``` $ heroku login ``` + #### Log in to Container Registry + You must have Docker set up locally to continue. You should see output when you run this command. ``` diff --git a/cypress.json b/cypress.json index 9e26dfeeb6..0967ef424b 100644 --- a/cypress.json +++ b/cypress.json @@ -1 +1 @@ -{} \ No newline at end of file +{} diff --git a/docs/DeployServicesHeroku.md b/docs/DeployServicesHeroku.md index bb330274bf..0cf5b31f83 100644 --- a/docs/DeployServicesHeroku.md +++ b/docs/DeployServicesHeroku.md @@ -8,4 +8,4 @@ Since the Bloom repository uses a monorepo layout, all Heroku services must use ## Procfile -## Environment Variables \ No newline at end of file +## Environment Variables diff --git a/docs/Styling.md b/docs/Styling.md index 85b934edb9..7a4d82d31a 100644 --- a/docs/Styling.md +++ b/docs/Styling.md @@ -14,4 +14,4 @@ The responsive navbar component is provided from the [Bulma CSS framework](https ## CSS Naming Conventions -## Build Process \ No newline at end of file +## Build Process diff --git a/docs/pull_request_template.md b/docs/pull_request_template.md index 06f6da3e81..bcac2e9b32 100644 --- a/docs/pull_request_template.md +++ b/docs/pull_request_template.md @@ -3,6 +3,7 @@ ## Issue Addresses # (issue) + - [ ] This change addresses the issue in full - [ ] This change addresses only certain aspects of the issue - [ ] This change is a dependency for another issue @@ -25,6 +26,7 @@ Please include a summary of the change and which issue is addressed. Please also ## How Can This Be Tested/Reviewed? Please describe the tests that you ran to verify your changes. Provide instructions so we can review. Please also list any relevant details for your test configuration + - [ ] Desktop View - [ ] Mobile View - [ ] Test A diff --git a/lerna.json b/lerna.json index be201cbc9c..d907a9874e 100644 --- a/lerna.json +++ b/lerna.json @@ -1,10 +1,5 @@ { - "packages": [ - "sites/public", - "sites/partners", - "backend/core", - "ui-components" - ], + "packages": ["sites/public", "sites/partners", "backend/core", "ui-components"], "version": "1.0.3", "npmClient": "yarn", "useWorkspaces": true diff --git a/sites/partners/cypress.json b/sites/partners/cypress.json index fe77d2fdc9..c8deb906b1 100644 --- a/sites/partners/cypress.json +++ b/sites/partners/cypress.json @@ -3,4 +3,3 @@ "defaultCommandTimeout": 10000, "projectId": "bloom-partners-reference" } - diff --git a/sites/partners/cypress/tsconfig.json b/sites/partners/cypress/tsconfig.json index 97263e6f79..5c9a5d0285 100644 --- a/sites/partners/cypress/tsconfig.json +++ b/sites/partners/cypress/tsconfig.json @@ -1,5 +1,5 @@ { -// "extends": "../tsconfig.json", + // "extends": "../tsconfig.json", "compilerOptions": { "types": ["cypress"], "isolatedModules": false, @@ -8,8 +8,5 @@ "experimentalDecorators": true, "esModuleInterop": true }, - "include": [ - "./**/*.ts", - "../../../node_modules/cypress/types/cypress-global-vars.d.ts" - ] + "include": ["./**/*.ts", "../../../node_modules/cypress/types/cypress-global-vars.d.ts"] } diff --git a/sites/public/CHANGELOG.md b/sites/public/CHANGELOG.md index 629642ba47..ec953d7e96 100644 --- a/sites/public/CHANGELOG.md +++ b/sites/public/CHANGELOG.md @@ -7,29 +7,16 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline **Note:** Version bump only for package @bloom-housing/public-reference - - - - ## [0.2.2](https://github.com/bloom-housing/bloom/compare/v0.2.1...v0.2.2) (2020-06-05) **Note:** Version bump only for package @bloom-housing/public-reference - - - - ## [0.2.1](https://github.com/bloom-housing/bloom/compare/v0.2.0...v0.2.1) (2020-06-05) **Note:** Version bump only for package @bloom-housing/public-reference - - - - ## [0.0.9](https://github.com/bloom-housing/bloom/compare/v0.0.2...v0.0.9) (2020-04-21) - ### Reverts -* Revert "Getting layout component ready for Google Analytics" ([7ca55ec](https://github.com/bloom-housing/bloom/commit/7ca55ec94c1f377a8e40645f9cc61780b7c1cefa)) +- Revert "Getting layout component ready for Google Analytics" ([7ca55ec](https://github.com/bloom-housing/bloom/commit/7ca55ec94c1f377a8e40645f9cc61780b7c1cefa)) diff --git a/sites/public/cypress/fixtures/applicationConfigBlank.json b/sites/public/cypress/fixtures/applicationConfigBlank.json index ed288fa2a3..97c59c2a3b 100644 --- a/sites/public/cypress/fixtures/applicationConfigBlank.json +++ b/sites/public/cypress/fixtures/applicationConfigBlank.json @@ -1,95 +1,95 @@ { - "loaded":false, - "completedSections":0, - "applicant":{ - "firstName":"", - "middleName":"", - "lastName":"", - "birthMonth":0, - "birthDay":0, - "birthYear":0, - "emailAddress":"", - "noEmail":false, - "phoneNumber":"", - "phoneNumberType":"", - "noPhone":false, - "workInRegion":null, - "address":{ - "street":"", - "street2":"", - "city":"", - "state":"", - "zipCode":"", - "county":"", - "latitude":null, - "longitude":null - }, - "workAddress":{ - "street":"", - "street2":"", - "city":"", - "state":"", - "zipCode":"", - "county":"", - "latitude":null, - "longitude":null - } + "loaded": false, + "completedSections": 0, + "applicant": { + "firstName": "", + "middleName": "", + "lastName": "", + "birthMonth": 0, + "birthDay": 0, + "birthYear": 0, + "emailAddress": "", + "noEmail": false, + "phoneNumber": "", + "phoneNumberType": "", + "noPhone": false, + "workInRegion": null, + "address": { + "street": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "county": "", + "latitude": null, + "longitude": null + }, + "workAddress": { + "street": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "", + "county": "", + "latitude": null, + "longitude": null + } }, - "additionalPhone":false, - "additionalPhoneNumber":"", - "additionalPhoneNumberType":"", - "contactPreferences":[], - "householdSize":0, - "housingStatus":"", - "sendMailToMailingAddress":false, - "mailingAddress":{ - "street":"", - "street2":"", - "city":"", - "state":"", - "zipCode":"" + "additionalPhone": false, + "additionalPhoneNumber": "", + "additionalPhoneNumberType": "", + "contactPreferences": [], + "householdSize": 0, + "housingStatus": "", + "sendMailToMailingAddress": false, + "mailingAddress": { + "street": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "" }, - "alternateAddress":{ - "street":"", - "street2":"", - "city":"", - "state":"", - "zipCode":"" + "alternateAddress": { + "street": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "" }, - "alternateContact":{ - "type":"", - "otherType":"", - "firstName":"", - "lastName":"", - "agency":"", - "phoneNumber":"", - "emailAddress":"", - "mailingAddress":{ - "street":"", - "city":"", - "state":"", - "zipCode":"" - } + "alternateContact": { + "type": "", + "otherType": "", + "firstName": "", + "lastName": "", + "agency": "", + "phoneNumber": "", + "emailAddress": "", + "mailingAddress": { + "street": "", + "city": "", + "state": "", + "zipCode": "" + } }, - "accessibility":{ - "mobility":null, - "vision":null, - "hearing":null + "accessibility": { + "mobility": null, + "vision": null, + "hearing": null }, - "incomeVouchers":null, - "income":null, - "incomePeriod":null, - "householdMembers":[], - "preferredUnit":[], - "demographics":{ - "race": "", - "ethnicity":"", - "gender":"", - "sexualOrientation":"", - "howDidYouHear":"" + "incomeVouchers": null, + "income": null, + "incomePeriod": null, + "householdMembers": [], + "preferredUnit": [], + "demographics": { + "race": "", + "ethnicity": "", + "gender": "", + "sexualOrientation": "", + "howDidYouHear": "" }, - "preferences":[], - "confirmationId":"", + "preferences": [], + "confirmationId": "", "status": "", "submissionType": "", "language": "" diff --git a/sites/public/cypress/fixtures/applicationConfigFilled.json b/sites/public/cypress/fixtures/applicationConfigFilled.json index 9b64f6777e..11c28eaa05 100644 --- a/sites/public/cypress/fixtures/applicationConfigFilled.json +++ b/sites/public/cypress/fixtures/applicationConfigFilled.json @@ -1,152 +1,143 @@ { - "loaded":false, - "completedSections":4, - "applicant":{ - "phoneNumber":"(444) 444-4444", - "noPhone":false, - "phoneNumberType":"work", - "workInRegion":"yes", - "address":{ - "street":"Street", - "street2":"Unit", - "city":"City", - "state":"AL", - "zipCode":"90210", - "county":"", - "latitude":null, - "longitude":null - }, - "workAddress":{ - "street":"Work Street", - "street2":"Work Unit", - "city":"Work City", - "state":"AL", - "zipCode":"90221", - "county":"", - "latitude":null, - "longitude":null - }, - "firstName":"First Name", - "middleName":"Middle Name", - "lastName":"Last Name", - "birthMonth":"07", - "birthDay":"17", - "birthYear":"1996", - "emailAddress":"test@bloom.com", - "noEmail":false + "loaded": false, + "completedSections": 4, + "applicant": { + "phoneNumber": "(444) 444-4444", + "noPhone": false, + "phoneNumberType": "work", + "workInRegion": "yes", + "address": { + "street": "Street", + "street2": "Unit", + "city": "City", + "state": "AL", + "zipCode": "90210", + "county": "", + "latitude": null, + "longitude": null + }, + "workAddress": { + "street": "Work Street", + "street2": "Work Unit", + "city": "Work City", + "state": "AL", + "zipCode": "90221", + "county": "", + "latitude": null, + "longitude": null + }, + "firstName": "First Name", + "middleName": "Middle Name", + "lastName": "Last Name", + "birthMonth": "07", + "birthDay": "17", + "birthYear": "1996", + "emailAddress": "test@bloom.com", + "noEmail": false }, - "additionalPhone":true, - "additionalPhoneNumber":"(555) 555-5555", - "additionalPhoneNumberType":"home", - "contactPreferences":[ - "email" - ], - "householdSize":2, - "housingStatus":"", - "sendMailToMailingAddress":true, - "mailingAddress":{ - "street":"Mailing Street", - "street2":"Mailing Unit", - "city":"Mailing City", - "state":"AK", - "zipCode":"90220" + "additionalPhone": true, + "additionalPhoneNumber": "(555) 555-5555", + "additionalPhoneNumberType": "home", + "contactPreferences": ["email"], + "householdSize": 2, + "housingStatus": "", + "sendMailToMailingAddress": true, + "mailingAddress": { + "street": "Mailing Street", + "street2": "Mailing Unit", + "city": "Mailing City", + "state": "AK", + "zipCode": "90220" }, - "alternateAddress":{ - "street":"", - "street2":"", - "city":"", - "state":"", - "zipCode":"" + "alternateAddress": { + "street": "", + "street2": "", + "city": "", + "state": "", + "zipCode": "" }, - "alternateContact":{ - "type":"caseManager", - "firstName":"Alternate Name", - "lastName":"Alternate Last Name", - "agency":"Agency Name", - "phoneNumber":"(666) 666-6666", - "emailAddress":"test2@bloom.com", - "mailingAddress":{ - "street":"Contact Street", - "city":"Contact City", - "state":"AK", - "zipCode":"90222" - } + "alternateContact": { + "type": "caseManager", + "firstName": "Alternate Name", + "lastName": "Alternate Last Name", + "agency": "Agency Name", + "phoneNumber": "(666) 666-6666", + "emailAddress": "test2@bloom.com", + "mailingAddress": { + "street": "Contact Street", + "city": "Contact City", + "state": "AK", + "zipCode": "90222" + } }, - "accessibility":{ - "mobility":true, - "vision":false, - "hearing":false + "accessibility": { + "mobility": true, + "vision": false, + "hearing": false }, - "incomeVouchers":false, - "income":"3000.00", - "incomePeriod":"perMonth", - "householdMembers":[ - { - "orderId": 0, - "firstName":"Member Name", - "middleName":"Member Middle Name", - "lastName":"Member Last Name", - "birthMonth":"07", - "birthDay":"17", - "birthYear":"1996", - "emailAddress":"", - "noEmail":null, - "phoneNumber":"", - "phoneNumberType":"", - "noPhone":null, - "address":{ - "street":"Member Steet", - "street2":"Member Unit", - "city":"Member City", - "state":"AZ", - "zipCode":"90223" - }, - "workAddress":{ - "street":"Member Work Street", - "street2":"Member Work Unit", - "city":"Member Work City", - "state":"AR", - "zipCode":"90224" - }, - "sameAddress":"no", - "relationship":"spouse", - "workInRegion":"yes" - } + "incomeVouchers": false, + "income": "3000.00", + "incomePeriod": "perMonth", + "householdMembers": [ + { + "orderId": 0, + "firstName": "Member Name", + "middleName": "Member Middle Name", + "lastName": "Member Last Name", + "birthMonth": "07", + "birthDay": "17", + "birthYear": "1996", + "emailAddress": "", + "noEmail": null, + "phoneNumber": "", + "phoneNumberType": "", + "noPhone": null, + "address": { + "street": "Member Steet", + "street2": "Member Unit", + "city": "Member City", + "state": "AZ", + "zipCode": "90223" + }, + "workAddress": { + "street": "Member Work Street", + "street2": "Member Work Unit", + "city": "Member Work City", + "state": "AR", + "zipCode": "90224" + }, + "sameAddress": "no", + "relationship": "spouse", + "workInRegion": "yes" + } ], - "preferredUnit":[ - "studio", - "oneBedroom", - "twoBedroom" - ], - "demographics":{ - "race": "white", - "ethnicity":"hispanicLatino", - "gender":"female", - "sexualOrientation":"bisexual", - "howDidYouHear":[ - "alamedaCountyHCDWebsite", - "developerWebsite" - ] + "preferredUnit": ["studio", "oneBedroom", "twoBedroom"], + "demographics": { + "race": "white", + "ethnicity": "hispanicLatino", + "gender": "female", + "sexualOrientation": "bisexual", + "howDidYouHear": ["alamedaCountyHCDWebsite", "developerWebsite"] }, "preferences": [ - { - "key": "liveWork", - "claimed": true, - "options": [ - { - "key": "live", - "checked": true, - "extraData": [] - }, - { - "key": "work", - "checked": true, - "extraData": [] - } - ] - } + { + "key": "liveWork", + "claimed": true, + "options": [ + { + "key": "live", + "checked": true, + "extraData": [] + }, + { + "key": "work", + "checked": true, + "extraData": [] + } + ] + } ], - "confirmationId":"", + "confirmationId": "", "status": "submitted", "submissionType": "electronical", "language": "en" diff --git a/sites/public/cypress/fixtures/applications/ada.json b/sites/public/cypress/fixtures/applications/ada.json index 601e4bf92d..57a45d72a3 100644 --- a/sites/public/cypress/fixtures/applications/ada.json +++ b/sites/public/cypress/fixtures/applications/ada.json @@ -2,4 +2,4 @@ "mobility": true, "vision": true, "hearing": true -} \ No newline at end of file +} diff --git a/sites/public/cypress/fixtures/applications/address.json b/sites/public/cypress/fixtures/applications/address.json index beda303a00..66acb154da 100644 --- a/sites/public/cypress/fixtures/applications/address.json +++ b/sites/public/cypress/fixtures/applications/address.json @@ -22,4 +22,4 @@ "workAddressState": "AL", "workAddressZipCode": "90210", "workInRegion": "yes" -} \ No newline at end of file +} diff --git a/sites/public/cypress/fixtures/applications/alternate-contact-contact.json b/sites/public/cypress/fixtures/applications/alternate-contact-contact.json index 09a858cae2..4fdc55e746 100644 --- a/sites/public/cypress/fixtures/applications/alternate-contact-contact.json +++ b/sites/public/cypress/fixtures/applications/alternate-contact-contact.json @@ -6,4 +6,4 @@ "mailingAddress.city": "Los Angeles", "mailingAddress.state": "CA", "mailingAddress.zipCode": "90003" -} \ No newline at end of file +} diff --git a/sites/public/cypress/fixtures/applications/alternate-contact-name.json b/sites/public/cypress/fixtures/applications/alternate-contact-name.json index 2085dd9eab..d6711eb8d3 100644 --- a/sites/public/cypress/fixtures/applications/alternate-contact-name.json +++ b/sites/public/cypress/fixtures/applications/alternate-contact-name.json @@ -2,4 +2,4 @@ "firstName": "Dominik", "lastName": "LastName", "agency": "Agency Name" -} \ No newline at end of file +} diff --git a/sites/public/cypress/fixtures/applications/alternate-contact-type.json b/sites/public/cypress/fixtures/applications/alternate-contact-type.json index c2b7995e65..0079ebcb02 100644 --- a/sites/public/cypress/fixtures/applications/alternate-contact-type.json +++ b/sites/public/cypress/fixtures/applications/alternate-contact-type.json @@ -1,4 +1,4 @@ { "typeOther": "other", "otherType": "Test" -} \ No newline at end of file +} diff --git a/sites/public/cypress/fixtures/applications/demographics.json b/sites/public/cypress/fixtures/applications/demographics.json index 42c37efd28..0278c65fbf 100644 --- a/sites/public/cypress/fixtures/applications/demographics.json +++ b/sites/public/cypress/fixtures/applications/demographics.json @@ -4,4 +4,4 @@ "gender": "male", "sexualOrientation": "straightHeterosexual", "howDidYouHear": ["alamedaCountyHCDWebsite", "developerWebsite"] -} \ No newline at end of file +} diff --git a/sites/public/cypress/fixtures/applications/income.json b/sites/public/cypress/fixtures/applications/income.json index 524292a484..92118d852a 100644 --- a/sites/public/cypress/fixtures/applications/income.json +++ b/sites/public/cypress/fixtures/applications/income.json @@ -5,4 +5,4 @@ "incomeHigher": "30000000.00", "incomeTooLowErrorText": "Your household income is too low.", "incomeTooHighErrorText": "Your household income is too high." -} \ No newline at end of file +} diff --git a/sites/public/cypress/fixtures/applications/member.json b/sites/public/cypress/fixtures/applications/member.json index f5a3103fff..be308640ad 100644 --- a/sites/public/cypress/fixtures/applications/member.json +++ b/sites/public/cypress/fixtures/applications/member.json @@ -16,4 +16,4 @@ "workAddress.city": "Warsaw", "workAddress.state": "AL", "workAddress.zipCode": "90210" -} \ No newline at end of file +} diff --git a/sites/public/cypress/fixtures/applications/name.json b/sites/public/cypress/fixtures/applications/name.json index 6dab7b4e32..e2681480e3 100644 --- a/sites/public/cypress/fixtures/applications/name.json +++ b/sites/public/cypress/fixtures/applications/name.json @@ -6,4 +6,4 @@ "applicant.birthDay": "17", "applicant.birthYear": "1996", "applicant.emailAddress": "test@bloom.com" -} \ No newline at end of file +} diff --git a/sites/public/cypress/fixtures/applications/preferencesAll.json b/sites/public/cypress/fixtures/applications/preferencesAll.json index 1228296b47..0ee1d0d864 100644 --- a/sites/public/cypress/fixtures/applications/preferencesAll.json +++ b/sites/public/cypress/fixtures/applications/preferencesAll.json @@ -7,4 +7,4 @@ "state": "California", "zipCode": "94016" } -} \ No newline at end of file +} diff --git a/sites/public/cypress/fixtures/applications/summary.json b/sites/public/cypress/fixtures/applications/summary.json index dd985857b1..7f4ec639f7 100644 --- a/sites/public/cypress/fixtures/applications/summary.json +++ b/sites/public/cypress/fixtures/applications/summary.json @@ -55,4 +55,4 @@ "region": "Live in", "work": "Work in" } -} \ No newline at end of file +} diff --git a/sites/public/cypress/fixtures/listing.json b/sites/public/cypress/fixtures/listing.json index 454a210f56..606f320e38 100644 --- a/sites/public/cypress/fixtures/listing.json +++ b/sites/public/cypress/fixtures/listing.json @@ -1,1440 +1,1414 @@ { - "id":"06436559-e84c-4f75-881a-13765f480b39", - "createdAt":"2019-07-08T22:37:19.565Z", - "updatedAt":"2019-07-09T21:35:11.142Z", - "accessibility":"There is a total of 5 ADA units in the complex, all others are adaptable. Exterior Wheelchair ramp (front entry)", - "amenities":"Community Room, Laundry Room, Assigned Parking, Bike Storage, Roof Top Garden, Part-time Resident Service Coordinator", - "applicationDueDate":"2019-12-31T15:22:57.000-07:00", - "applicationOpenDate":null, - "applicationFee":"30.0", - "applicationOrganization":"98 Archer Street", - "applicationAddress":{ - "city":"San Jose", - "state":"CA", - "street":"98 Archer Street", - "zipCode":"95112", - "latitude":37.36537, - "longitude":-121.91071 - }, - "blankPaperApplicationCanBePickedUp":true, - "buildingAddress":{ - "city":"San Jose", - "state":"CA", - "street":"98 Archer Street", - "zipCode":"95112", - "latitude":37.36537, - "longitude":-121.91071 - }, - "buildingTotalUnits":"35", - "buildingSelectionCriteria":"Tenant Selection Criteria will be available to all applicants upon request.", - "costsNotIncluded":"Resident responsible for PG&E, internet and phone. Owner pays for water, trash, and sewage. Residents encouraged to obtain renter's insurance but this is not a requirement. Rent is due by the 5th of each month. Late fee $35 and returned check fee is $35 additional.", - "creditHistory":"Applications will be rated on a score system for housing. An applicant's score may be impacted by negative tenant peformance information provided to the credit reporting agency. All applicants are expected have a passing acore of 70 points out of 100 to be considered for housing. Applicants with no credit history will receive a maximum of 80 points to fairly outweigh positive and/or negative trades as would an applicant with established credit history. Refer to Tenant Selection Criteria or Qualification Criteria for details related to the qualification process. ", - "criminalBackground":"A criminal background investigation will be obtained on each applicant. As criminal background checks are done county by county and will be ran for all counties in which the applicant lived, Applicants will be disqualified for tenancy if they have been convicted of a felony or misdemeanor. Refer to Tenant Selection Criteria or Qualification Criteria for details related to the qualification process. ", - "depositMin":"1140.0", - "depositMax":null, - "developer":"Charities Housing ", - "disableUnitsAccordion":null, - "householdSizeMax":null, - "householdSizeMin":null, - "imageUrl":"https://regional-dahlia-staging.s3-us-west-1.amazonaws.com/listings/archer/archer-studios.jpg", - "leasingAgentAddress":{ - "city":"San Jose", - "state":"CA", - "street":"98 Archer Street", - "zipCode":"95112", - "latitude":37.36537, - "longitude":-121.91071 - }, - "leasingAgentEmail":"mbaca@charitieshousing.org", - "leasingAgentName":"Marisela Baca", - "leasingAgentOfficeHours":"Monday, Tuesday & Friday, 9:00AM - 5:00PM", - "leasingAgentPhone":"(408) 217-8562", - "leasingAgentTitle":"", - "name":"Archer Studios", - "neighborhood":"Rosemary Gardens Park", - "petPolicy":"No pets allowed. Accommodation animals may be granted to persons with disabilities via a reasonable accommodation request.", - "postmarkedApplicationsReceivedByDate":"2019-12-05", - "programRules":"Applicants must adhere to minimum & maximum income limits. Tenant Selection Criteria applies.", - "rentalAssistance":null, - "rentalHistory":"Two years of rental history will be verified with all applicable landlords. Household family members and/or personal friends are not acceptable landlord references. Two professional character references may be used in lieu of rental history for applicants with no prior rental history. An unlawful detainer report will be processed thourhg the U.D. Registry, Inc. Applicants will be disqualified if they have any evictions filing within the last 7 years. Refer to Tenant Selection Criteria or Qualification Criteria for details related to the qualification process.", - "requiredDocuments":"Completed application and government issued IDs", - "smokingPolicy":"Non-smoking building", - "unitsAvailable":"0", - "unitAmenities":"Dishwasher", - "waitlistCurrentSize":"300", - "waitlistMaxSize":"300", - "whatToExpect":null, - "yearBuilt":"2012", - "status":"pending", - "unitsSummarized":{ - "unitTypes":[ - "studio" - ], - "reservedTypes":[ - "senior" - ], - "priorityTypes":[ - - ], - "amiPercentages":[ - "30.0", - "45.0" - ], - "byUnitType":[ - { - "unitType":"studio", - "totalAvailable":0, - "minIncomeRange":{ - "min":"$1,438", - "max":"$2,208" + "id": "06436559-e84c-4f75-881a-13765f480b39", + "createdAt": "2019-07-08T22:37:19.565Z", + "updatedAt": "2019-07-09T21:35:11.142Z", + "accessibility": "There is a total of 5 ADA units in the complex, all others are adaptable. Exterior Wheelchair ramp (front entry)", + "amenities": "Community Room, Laundry Room, Assigned Parking, Bike Storage, Roof Top Garden, Part-time Resident Service Coordinator", + "applicationDueDate": "2019-12-31T15:22:57.000-07:00", + "applicationOpenDate": null, + "applicationFee": "30.0", + "applicationOrganization": "98 Archer Street", + "applicationAddress": { + "city": "San Jose", + "state": "CA", + "street": "98 Archer Street", + "zipCode": "95112", + "latitude": 37.36537, + "longitude": -121.91071 + }, + "blankPaperApplicationCanBePickedUp": true, + "buildingAddress": { + "city": "San Jose", + "state": "CA", + "street": "98 Archer Street", + "zipCode": "95112", + "latitude": 37.36537, + "longitude": -121.91071 + }, + "buildingTotalUnits": "35", + "buildingSelectionCriteria": "Tenant Selection Criteria will be available to all applicants upon request.", + "costsNotIncluded": "Resident responsible for PG&E, internet and phone. Owner pays for water, trash, and sewage. Residents encouraged to obtain renter's insurance but this is not a requirement. Rent is due by the 5th of each month. Late fee $35 and returned check fee is $35 additional.", + "creditHistory": "Applications will be rated on a score system for housing. An applicant's score may be impacted by negative tenant peformance information provided to the credit reporting agency. All applicants are expected have a passing acore of 70 points out of 100 to be considered for housing. Applicants with no credit history will receive a maximum of 80 points to fairly outweigh positive and/or negative trades as would an applicant with established credit history. Refer to Tenant Selection Criteria or Qualification Criteria for details related to the qualification process. ", + "criminalBackground": "A criminal background investigation will be obtained on each applicant. As criminal background checks are done county by county and will be ran for all counties in which the applicant lived, Applicants will be disqualified for tenancy if they have been convicted of a felony or misdemeanor. Refer to Tenant Selection Criteria or Qualification Criteria for details related to the qualification process. ", + "depositMin": "1140.0", + "depositMax": null, + "developer": "Charities Housing ", + "disableUnitsAccordion": null, + "householdSizeMax": null, + "householdSizeMin": null, + "imageUrl": "https://regional-dahlia-staging.s3-us-west-1.amazonaws.com/listings/archer/archer-studios.jpg", + "leasingAgentAddress": { + "city": "San Jose", + "state": "CA", + "street": "98 Archer Street", + "zipCode": "95112", + "latitude": 37.36537, + "longitude": -121.91071 + }, + "leasingAgentEmail": "mbaca@charitieshousing.org", + "leasingAgentName": "Marisela Baca", + "leasingAgentOfficeHours": "Monday, Tuesday & Friday, 9:00AM - 5:00PM", + "leasingAgentPhone": "(408) 217-8562", + "leasingAgentTitle": "", + "name": "Archer Studios", + "neighborhood": "Rosemary Gardens Park", + "petPolicy": "No pets allowed. Accommodation animals may be granted to persons with disabilities via a reasonable accommodation request.", + "postmarkedApplicationsReceivedByDate": "2019-12-05", + "programRules": "Applicants must adhere to minimum & maximum income limits. Tenant Selection Criteria applies.", + "rentalAssistance": null, + "rentalHistory": "Two years of rental history will be verified with all applicable landlords. Household family members and/or personal friends are not acceptable landlord references. Two professional character references may be used in lieu of rental history for applicants with no prior rental history. An unlawful detainer report will be processed thourhg the U.D. Registry, Inc. Applicants will be disqualified if they have any evictions filing within the last 7 years. Refer to Tenant Selection Criteria or Qualification Criteria for details related to the qualification process.", + "requiredDocuments": "Completed application and government issued IDs", + "smokingPolicy": "Non-smoking building", + "unitsAvailable": "0", + "unitAmenities": "Dishwasher", + "waitlistCurrentSize": "300", + "waitlistMaxSize": "300", + "whatToExpect": null, + "yearBuilt": "2012", + "status": "pending", + "unitsSummarized": { + "unitTypes": ["studio"], + "reservedTypes": ["senior"], + "priorityTypes": [], + "amiPercentages": ["30.0", "45.0"], + "byUnitType": [ + { + "unitType": "studio", + "totalAvailable": 0, + "minIncomeRange": { + "min": "$1,438", + "max": "$2,208" + }, + "occupancyRange": { + "min": 1, + "max": 2 + }, + "rentAsPercentIncomeRange": { + "min": null, + "max": null + }, + "rentRange": { + "min": "$719", + "max": "$1,104" + }, + "floorRange": { + "min": 2, + "max": 3 + }, + "areaRange": { + "min": 285, + "max": 285 + } + } + ], + "byNonReservedUnitType": [ + { + "unitType": "studio", + "totalAvailable": 0, + "minIncomeRange": { + "min": "$1,438", + "max": "$2,208" + }, + "occupancyRange": { + "min": 1, + "max": 2 + }, + "rentAsPercentIncomeRange": { + "min": null, + "max": null + }, + "rentRange": { + "min": "$719", + "max": "$1,104" + }, + "floorRange": { + "min": 2, + "max": 3 + }, + "areaRange": { + "min": 285, + "max": 285 + } + } + ], + "byReservedType": [ + { + "reservedType": "senior", + "byUnitType": [ + { + "unitType": "studio", + "totalAvailable": 0, + "minIncomeRange": { + "min": "$2,208", + "max": "$2,208" }, - "occupancyRange":{ - "min":1, - "max":2 + "occupancyRange": { + "min": 1, + "max": 2 }, - "rentAsPercentIncomeRange":{ - "min":null, - "max":null + "rentAsPercentIncomeRange": { + "min": null, + "max": null }, - "rentRange":{ - "min":"$719", - "max":"$1,104" + "rentRange": { + "min": "$1,104", + "max": "$1,104" }, - "floorRange":{ - "min":2, - "max":3 + "floorRange": { + "min": 2, + "max": 2 }, - "areaRange":{ - "min":285, - "max":285 + "areaRange": { + "min": 285, + "max": 285 } - } - ], - "byNonReservedUnitType":[ - { - "unitType":"studio", - "totalAvailable":0, - "minIncomeRange":{ - "min":"$1,438", - "max":"$2,208" - }, - "occupancyRange":{ - "min":1, - "max":2 + } + ] + } + ], + "byAMI": [ + { + "percent": "30.0", + "byNonReservedUnitType": [ + { + "unitType": "studio", + "totalAvailable": 0, + "minIncomeRange": { + "min": "$1,438", + "max": "$1,438" }, - "rentAsPercentIncomeRange":{ - "min":null, - "max":null + "occupancyRange": { + "min": 1, + "max": 2 }, - "rentRange":{ - "min":"$719", - "max":"$1,104" + "rentAsPercentIncomeRange": { + "min": null, + "max": null }, - "floorRange":{ - "min":2, - "max":3 + "rentRange": { + "min": "$719", + "max": "$719" }, - "areaRange":{ - "min":285, - "max":285 - } - } - ], - "byReservedType":[ - { - "reservedType":"senior", - "byUnitType":[ - { - "unitType":"studio", - "totalAvailable":0, - "minIncomeRange":{ - "min":"$2,208", - "max":"$2,208" - }, - "occupancyRange":{ - "min":1, - "max":2 - }, - "rentAsPercentIncomeRange":{ - "min":null, - "max":null - }, - "rentRange":{ - "min":"$1,104", - "max":"$1,104" - }, - "floorRange":{ - "min":2, - "max":2 - }, - "areaRange":{ - "min":285, - "max":285 - } - } - ] - } - ], - "byAMI":[ - { - "percent":"30.0", - "byNonReservedUnitType":[ - { - "unitType":"studio", - "totalAvailable":0, - "minIncomeRange":{ - "min":"$1,438", - "max":"$1,438" - }, - "occupancyRange":{ - "min":1, - "max":2 - }, - "rentAsPercentIncomeRange":{ - "min":null, - "max":null - }, - "rentRange":{ - "min":"$719", - "max":"$719" - }, - "floorRange":{ - "min":2, - "max":3 - }, - "areaRange":{ - "min":285, - "max":285 - } - } - ], - "byReservedType":[ - - ] - }, - { - "percent":"45.0", - "byNonReservedUnitType":[ - { - "unitType":"studio", - "totalAvailable":0, - "minIncomeRange":{ - "min":"$2,208", - "max":"$2,208" - }, - "occupancyRange":{ - "min":1, - "max":2 - }, - "rentAsPercentIncomeRange":{ - "min":null, - "max":null - }, - "rentRange":{ - "min":"$1,104", - "max":"$1,104" - }, - "floorRange":{ - "min":2, - "max":3 - }, - "areaRange":{ - "min":285, - "max":285 - } - } - ], - "byReservedType":[ - { - "reservedType":"senior", - "byUnitType":[ - { - "unitType":"studio", - "totalAvailable":0, - "minIncomeRange":{ - "min":"$2,208", - "max":"$2,208" - }, - "occupancyRange":{ - "min":1, - "max":2 - }, - "rentAsPercentIncomeRange":{ - "min":null, - "max":null - }, - "rentRange":{ - "min":"$1,104", - "max":"$1,104" - }, - "floorRange":{ - "min":2, - "max":2 - }, - "areaRange":{ - "min":285, - "max":285 - } - } - ] - } - ] - } - ], - "hmi":{ - "columns":{ - "householdSize":"Household Size", - "ami30":"30% AMI Units", - "ami45":"45% AMI Units" - }, - "rows":[ - { - "householdSize":1, - "ami30":"$30,750", - "ami45":"$46,125" + "floorRange": { + "min": 2, + "max": 3 }, - { - "householdSize":2, - "ami30":"$35,130", - "ami45":"$52,695" + "areaRange": { + "min": 285, + "max": 285 } - ] - } - }, - "urlSlug":"archer_studios_98_archer_street_san_jose_ca", - "applicationMethods":[ - - ], - "assets":[ - - ], - "preferences": [ - { - "id": "e095a124-3d95-4f71-a9e2-4e93aac00bfa", - "createdAt": "2021-04-24T10:31:17.607Z", - "updatedAt": "2021-04-24T10:31:17.607Z", - "ordinal": 1, - "page": 1, - "title": "Live or Work in Hayward", - "subtitle": "", - "description": "At least one member of my household lives in City of Hayward. At least one member of my household works in the City of Hayward", - "links": [], - "formMetadata": { - "key": "liveWork", - "options": [ - { - "key": "live", - "extraData": [] - }, - { - "key": "work", - "extraData": [] - } - ] } + ], + "byReservedType": [] }, { - "id": "8b46a50c-c321-4506-ad71-a80245ef4602", - "createdAt": "2021-04-24T10:31:17.607Z", - "updatedAt": "2021-04-24T10:31:17.607Z", - "ordinal": 2, - "page": 1, - "title": "Displaced Tenant Housing Preference", - "subtitle": "", - "description": "At least one member of my household was displaced from a residential property due to redevelopment activity by the Hayward Housing Authority, the Redevelopment Agency or the City of Hayward.", - "links": [], - "formMetadata": { - "key": "displacedTenant", - "options": [ - { - "key": "general", - "extraData": [ - { - "type": "hhMemberSelect", - "key": "name" - }, - { - "type": "address", - "key": "address" - } - ] - }, - { - "key": "missionCorridor", - "extraData": [ - { - "type": "hhMemberSelect", - "key": "name" - }, - { - "type": "address", - "key": "address" - } - ] - } - ] + "percent": "45.0", + "byNonReservedUnitType": [ + { + "unitType": "studio", + "totalAvailable": 0, + "minIncomeRange": { + "min": "$2,208", + "max": "$2,208" + }, + "occupancyRange": { + "min": 1, + "max": 2 + }, + "rentAsPercentIncomeRange": { + "min": null, + "max": null + }, + "rentRange": { + "min": "$1,104", + "max": "$1,104" + }, + "floorRange": { + "min": 2, + "max": 3 + }, + "areaRange": { + "min": 285, + "max": 285 + } + } + ], + "byReservedType": [ + { + "reservedType": "senior", + "byUnitType": [ + { + "unitType": "studio", + "totalAvailable": 0, + "minIncomeRange": { + "min": "$2,208", + "max": "$2,208" + }, + "occupancyRange": { + "min": 1, + "max": 2 + }, + "rentAsPercentIncomeRange": { + "min": null, + "max": null + }, + "rentRange": { + "min": "$1,104", + "max": "$1,104" + }, + "floorRange": { + "min": 2, + "max": 2 + }, + "areaRange": { + "min": 285, + "max": 285 + } + } + ] } + ] } ], - "units":[ - { - "id":"fab3456e-9af8-46ae-a59e-3de6608bf5a2", - "createdAt":"2019-08-14T22:56:06.593Z", - "updatedAt":"2019-08-14T23:06:59.254Z", - "amiPercentage":"30.0", - "annualIncomeMin":"17256.0", - "monthlyIncomeMin":"1438.0", - "floor":3, - "annualIncomeMax":"30750.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"719.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"f505a681-d6be-40a1-971b-29649f68d21a", - "createdAt":"2019-08-14T22:56:06.606Z", - "updatedAt":"2019-08-14T23:06:59.260Z", - "amiPercentage":"30.0", - "annualIncomeMin":"17256.0", - "monthlyIncomeMin":"1438.0", - "floor":3, - "annualIncomeMax":"30750.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"719.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"dce72e59-f16f-4533-92b6-500c5b5b9f96", - "createdAt":"2019-08-14T22:56:06.612Z", - "updatedAt":"2019-08-14T23:06:59.267Z", - "amiPercentage":"30.0", - "annualIncomeMin":"17256.0", - "monthlyIncomeMin":"1438.0", - "floor":3, - "annualIncomeMax":"30750.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"719.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"118bfa58-03a3-46e3-9cd6-51cba1b46f45", - "createdAt":"2019-08-14T22:52:08.790Z", - "updatedAt":"2019-08-14T23:06:59.060Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":2, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"3effd0c9-77cf-46d5-bfe5-b9ee14b914c6", - "createdAt":"2019-08-14T22:52:08.796Z", - "updatedAt":"2019-08-14T23:06:59.067Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":2, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":"senior", - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"b4c79274-099e-45d0-8ea9-46e7cc31475f", - "createdAt":"2019-08-14T22:52:08.802Z", - "updatedAt":"2019-08-14T23:06:59.074Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":2, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"ee0a7fea-c24e-4276-95c2-01da342a244f", - "createdAt":"2019-08-14T22:52:08.807Z", - "updatedAt":"2019-08-14T23:06:59.080Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":2, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"b8daabcd-c1dc-4b3d-a28c-2027f441a955", - "createdAt":"2019-08-14T22:52:08.813Z", - "updatedAt":"2019-08-14T23:06:59.086Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":2, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"ccf5f022-5179-4689-a0a9-978c0bda651e", - "createdAt":"2019-08-14T22:52:08.819Z", - "updatedAt":"2019-08-14T23:06:59.093Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":2, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"1b63bd84-f31f-404a-aeed-36c75518e702", - "createdAt":"2019-08-14T22:53:09.921Z", - "updatedAt":"2019-08-14T23:06:59.099Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":3, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"2b5235a9-72af-42cd-ae61-ad5b5be9d2f3", - "createdAt":"2019-08-14T22:53:09.927Z", - "updatedAt":"2019-08-14T23:06:59.105Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":3, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"21a4c6c1-b0f6-40a9-9c44-089362217b8a", - "createdAt":"2019-08-14T22:53:09.933Z", - "updatedAt":"2019-08-14T23:06:59.111Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":3, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"9ce2fbfc-79f4-4690-9ecc-0c02a11a2188", - "createdAt":"2019-08-14T22:53:09.938Z", - "updatedAt":"2019-08-14T23:06:59.118Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":3, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"8f4284ae-b771-4155-8baa-a3fc80c04c9e", - "createdAt":"2019-08-14T22:53:09.944Z", - "updatedAt":"2019-08-14T23:06:59.124Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":3, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"a5e8d305-9e54-42f3-b176-16651d6326d6", - "createdAt":"2019-08-14T22:53:09.950Z", - "updatedAt":"2019-08-14T23:06:59.130Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":3, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"9a467456-88a4-40f9-bb2c-69cb2f77a41c", - "createdAt":"2019-08-14T22:53:09.955Z", - "updatedAt":"2019-08-14T23:06:59.136Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":3, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"bd7978ed-0483-4692-8bb2-29671264b1a7", - "createdAt":"2019-08-14T22:53:09.960Z", - "updatedAt":"2019-08-14T23:06:59.142Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":3, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"95a436e5-559c-471b-abca-eef2916c85cb", - "createdAt":"2019-08-14T22:53:09.965Z", - "updatedAt":"2019-08-14T23:06:59.148Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":3, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"2a961fae-d68f-405e-a5f1-0caac408310f", - "createdAt":"2019-08-14T22:53:09.970Z", - "updatedAt":"2019-08-14T23:06:59.155Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":3, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"55da1173-6ac7-4d42-ad9e-c7c0cea43b1f", - "createdAt":"2019-07-09T21:20:05.783Z", - "updatedAt":"2019-08-14T23:05:43.913Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":2, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"d0e4cbfa-e397-4a0f-aeb3-f2556e78c09c", - "createdAt":"2019-08-14T22:53:09.982Z", - "updatedAt":"2019-08-14T23:06:59.015Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":3, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null - }, - { - "id":"361d84bd-1b33-41eb-aa39-d58d21a62ea4", - "createdAt":"2019-08-14T22:52:08.758Z", - "updatedAt":"2019-08-14T23:06:59.023Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":2, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "hmi": { + "columns": { + "householdSize": "Household Size", + "ami30": "30% AMI Units", + "ami45": "45% AMI Units" }, + "rows": [ + { + "householdSize": 1, + "ami30": "$30,750", + "ami45": "$46,125" + }, + { + "householdSize": 2, + "ami30": "$35,130", + "ami45": "$52,695" + } + ] + } + }, + "urlSlug": "archer_studios_98_archer_street_san_jose_ca", + "applicationMethods": [], + "assets": [], + "preferences": [ + { + "id": "e095a124-3d95-4f71-a9e2-4e93aac00bfa", + "createdAt": "2021-04-24T10:31:17.607Z", + "updatedAt": "2021-04-24T10:31:17.607Z", + "ordinal": 1, + "page": 1, + "title": "Live or Work in Hayward", + "subtitle": "", + "description": "At least one member of my household lives in City of Hayward. At least one member of my household works in the City of Hayward", + "links": [], + "formMetadata": { + "key": "liveWork", + "options": [ + { + "key": "live", + "extraData": [] + }, + { + "key": "work", + "extraData": [] + } + ] + } + }, + { + "id": "8b46a50c-c321-4506-ad71-a80245ef4602", + "createdAt": "2021-04-24T10:31:17.607Z", + "updatedAt": "2021-04-24T10:31:17.607Z", + "ordinal": 2, + "page": 1, + "title": "Displaced Tenant Housing Preference", + "subtitle": "", + "description": "At least one member of my household was displaced from a residential property due to redevelopment activity by the Hayward Housing Authority, the Redevelopment Agency or the City of Hayward.", + "links": [], + "formMetadata": { + "key": "displacedTenant", + "options": [ + { + "key": "general", + "extraData": [ + { + "type": "hhMemberSelect", + "key": "name" + }, + { + "type": "address", + "key": "address" + } + ] + }, + { + "key": "missionCorridor", + "extraData": [ + { + "type": "hhMemberSelect", + "key": "name" + }, + { + "type": "address", + "key": "address" + } + ] + } + ] + } + } + ], + "units": [ + { + "id": "fab3456e-9af8-46ae-a59e-3de6608bf5a2", + "createdAt": "2019-08-14T22:56:06.593Z", + "updatedAt": "2019-08-14T23:06:59.254Z", + "amiPercentage": "30.0", + "annualIncomeMin": "17256.0", + "monthlyIncomeMin": "1438.0", + "floor": 3, + "annualIncomeMax": "30750.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "719.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "f505a681-d6be-40a1-971b-29649f68d21a", + "createdAt": "2019-08-14T22:56:06.606Z", + "updatedAt": "2019-08-14T23:06:59.260Z", + "amiPercentage": "30.0", + "annualIncomeMin": "17256.0", + "monthlyIncomeMin": "1438.0", + "floor": 3, + "annualIncomeMax": "30750.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "719.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "dce72e59-f16f-4533-92b6-500c5b5b9f96", + "createdAt": "2019-08-14T22:56:06.612Z", + "updatedAt": "2019-08-14T23:06:59.267Z", + "amiPercentage": "30.0", + "annualIncomeMin": "17256.0", + "monthlyIncomeMin": "1438.0", + "floor": 3, + "annualIncomeMax": "30750.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "719.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "118bfa58-03a3-46e3-9cd6-51cba1b46f45", + "createdAt": "2019-08-14T22:52:08.790Z", + "updatedAt": "2019-08-14T23:06:59.060Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 2, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "3effd0c9-77cf-46d5-bfe5-b9ee14b914c6", + "createdAt": "2019-08-14T22:52:08.796Z", + "updatedAt": "2019-08-14T23:06:59.067Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 2, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": "senior", + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "b4c79274-099e-45d0-8ea9-46e7cc31475f", + "createdAt": "2019-08-14T22:52:08.802Z", + "updatedAt": "2019-08-14T23:06:59.074Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 2, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "ee0a7fea-c24e-4276-95c2-01da342a244f", + "createdAt": "2019-08-14T22:52:08.807Z", + "updatedAt": "2019-08-14T23:06:59.080Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 2, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "b8daabcd-c1dc-4b3d-a28c-2027f441a955", + "createdAt": "2019-08-14T22:52:08.813Z", + "updatedAt": "2019-08-14T23:06:59.086Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 2, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "ccf5f022-5179-4689-a0a9-978c0bda651e", + "createdAt": "2019-08-14T22:52:08.819Z", + "updatedAt": "2019-08-14T23:06:59.093Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 2, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "1b63bd84-f31f-404a-aeed-36c75518e702", + "createdAt": "2019-08-14T22:53:09.921Z", + "updatedAt": "2019-08-14T23:06:59.099Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 3, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "2b5235a9-72af-42cd-ae61-ad5b5be9d2f3", + "createdAt": "2019-08-14T22:53:09.927Z", + "updatedAt": "2019-08-14T23:06:59.105Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 3, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "21a4c6c1-b0f6-40a9-9c44-089362217b8a", + "createdAt": "2019-08-14T22:53:09.933Z", + "updatedAt": "2019-08-14T23:06:59.111Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 3, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "9ce2fbfc-79f4-4690-9ecc-0c02a11a2188", + "createdAt": "2019-08-14T22:53:09.938Z", + "updatedAt": "2019-08-14T23:06:59.118Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 3, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "8f4284ae-b771-4155-8baa-a3fc80c04c9e", + "createdAt": "2019-08-14T22:53:09.944Z", + "updatedAt": "2019-08-14T23:06:59.124Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 3, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "a5e8d305-9e54-42f3-b176-16651d6326d6", + "createdAt": "2019-08-14T22:53:09.950Z", + "updatedAt": "2019-08-14T23:06:59.130Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 3, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "9a467456-88a4-40f9-bb2c-69cb2f77a41c", + "createdAt": "2019-08-14T22:53:09.955Z", + "updatedAt": "2019-08-14T23:06:59.136Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 3, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "bd7978ed-0483-4692-8bb2-29671264b1a7", + "createdAt": "2019-08-14T22:53:09.960Z", + "updatedAt": "2019-08-14T23:06:59.142Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 3, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "95a436e5-559c-471b-abca-eef2916c85cb", + "createdAt": "2019-08-14T22:53:09.965Z", + "updatedAt": "2019-08-14T23:06:59.148Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 3, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "2a961fae-d68f-405e-a5f1-0caac408310f", + "createdAt": "2019-08-14T22:53:09.970Z", + "updatedAt": "2019-08-14T23:06:59.155Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 3, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "55da1173-6ac7-4d42-ad9e-c7c0cea43b1f", + "createdAt": "2019-07-09T21:20:05.783Z", + "updatedAt": "2019-08-14T23:05:43.913Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 2, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "d0e4cbfa-e397-4a0f-aeb3-f2556e78c09c", + "createdAt": "2019-08-14T22:53:09.982Z", + "updatedAt": "2019-08-14T23:06:59.015Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 3, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "361d84bd-1b33-41eb-aa39-d58d21a62ea4", + "createdAt": "2019-08-14T22:52:08.758Z", + "updatedAt": "2019-08-14T23:06:59.023Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 2, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "f748a7a8-a3bf-44ce-b358-64107c80414d", + "createdAt": "2019-08-14T22:52:08.766Z", + "updatedAt": "2019-08-14T23:06:59.031Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 2, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "e7d97fbb-5a97-4e2c-adab-9bcffc031484", + "createdAt": "2019-08-14T22:52:08.771Z", + "updatedAt": "2019-08-14T23:06:59.039Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 2, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "331fb66f-6fc0-4987-b1b2-95efb87a492d", + "createdAt": "2019-08-14T22:52:08.777Z", + "updatedAt": "2019-08-14T23:06:59.046Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 2, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "e59721c1-32e0-4255-8412-174e7e2da691", + "createdAt": "2019-08-14T22:52:08.783Z", + "updatedAt": "2019-08-14T23:06:59.053Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 2, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "82f72a45-607f-4b31-a01d-175a2a37d2f5", + "createdAt": "2019-08-14T22:53:09.976Z", + "updatedAt": "2019-08-14T23:06:59.161Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 3, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "b1d4a618-675e-483a-aa58-12aa1e3b32e2", + "createdAt": "2019-08-14T22:53:09.976Z", + "updatedAt": "2019-08-14T23:06:59.167Z", + "amiPercentage": "45.0", + "annualIncomeMin": "26496.0", + "monthlyIncomeMin": "2208.0", + "floor": 3, + "annualIncomeMax": "46125.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "1104.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "7af08604-e4b0-4581-a06e-f4359f5a8ce8", + "createdAt": "2019-07-09T21:24:14.122Z", + "updatedAt": "2019-08-14T23:06:59.173Z", + "amiPercentage": "30.0", + "annualIncomeMin": "17256.0", + "monthlyIncomeMin": "1438.0", + "floor": 2, + "annualIncomeMax": "30750.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "719.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "1cd55712-7890-4fd5-aabe-4e94d3e29294", + "createdAt": "2019-08-14T22:55:22.950Z", + "updatedAt": "2019-08-14T23:06:59.179Z", + "amiPercentage": "30.0", + "annualIncomeMin": "17256.0", + "monthlyIncomeMin": "1438.0", + "floor": 2, + "annualIncomeMax": "30750.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "719.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "c171386e-c624-436e-96cf-9e0a49d75116", + "createdAt": "2019-08-14T22:55:22.956Z", + "updatedAt": "2019-08-14T23:06:59.186Z", + "amiPercentage": "30.0", + "annualIncomeMin": "17256.0", + "monthlyIncomeMin": "1438.0", + "floor": 2, + "annualIncomeMax": "30750.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "719.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "54ee1aec-3941-4bd7-9fd4-1fca0f532b91", + "createdAt": "2019-08-14T22:55:22.961Z", + "updatedAt": "2019-08-14T23:06:59.192Z", + "amiPercentage": "30.0", + "annualIncomeMin": "17256.0", + "monthlyIncomeMin": "1438.0", + "floor": 2, + "annualIncomeMax": "30750.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "719.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "7212e3d3-b181-4f2f-b86d-2af11a99ece2", + "createdAt": "2019-08-14T22:55:22.967Z", + "updatedAt": "2019-08-14T23:06:59.198Z", + "amiPercentage": "30.0", + "annualIncomeMin": "17256.0", + "monthlyIncomeMin": "1438.0", + "floor": 2, + "annualIncomeMax": "30750.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "719.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "59b1264c-9f0f-46fe-8567-d1668c3cfa6b", + "createdAt": "2019-08-14T22:55:22.972Z", + "updatedAt": "2019-08-14T23:06:59.204Z", + "amiPercentage": "30.0", + "annualIncomeMin": "17256.0", + "monthlyIncomeMin": "1438.0", + "floor": 2, + "annualIncomeMax": "30750.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "719.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "32665f0d-04e9-4f01-a0e0-c87880564d2b", + "createdAt": "2019-08-14T22:55:22.978Z", + "updatedAt": "2019-08-14T23:06:59.210Z", + "amiPercentage": "30.0", + "annualIncomeMin": "17256.0", + "monthlyIncomeMin": "1438.0", + "floor": 2, + "annualIncomeMax": "30750.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "719.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "c6c1dc70-8900-40bd-9f5a-2936c03fd2ab", + "createdAt": "2019-08-14T22:55:22.984Z", + "updatedAt": "2019-08-14T23:06:59.216Z", + "amiPercentage": "30.0", + "annualIncomeMin": "17256.0", + "monthlyIncomeMin": "1438.0", + "floor": 2, + "annualIncomeMax": "30750.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "719.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "fe53b33d-058f-4145-9c31-7f5762420471", + "createdAt": "2019-08-14T22:56:06.563Z", + "updatedAt": "2019-08-14T23:06:59.222Z", + "amiPercentage": "30.0", + "annualIncomeMin": "17256.0", + "monthlyIncomeMin": "1438.0", + "floor": 3, + "annualIncomeMax": "30750.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "719.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "c49fc978-1400-4512-b4c6-a20fbc41de45", + "createdAt": "2019-08-14T22:56:06.570Z", + "updatedAt": "2019-08-14T23:06:59.229Z", + "amiPercentage": "30.0", + "annualIncomeMin": "17256.0", + "monthlyIncomeMin": "1438.0", + "floor": 3, + "annualIncomeMax": "30750.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "719.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "d0158261-04d2-4749-87e2-84343df2898c", + "createdAt": "2019-08-14T22:56:06.575Z", + "updatedAt": "2019-08-14T23:06:59.235Z", + "amiPercentage": "30.0", + "annualIncomeMin": "17256.0", + "monthlyIncomeMin": "1438.0", + "floor": 3, + "annualIncomeMax": "30750.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "719.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "1b619d8d-5910-4595-be5b-464bf236aff7", + "createdAt": "2019-08-14T22:56:06.580Z", + "updatedAt": "2019-08-14T23:06:59.241Z", + "amiPercentage": "30.0", + "annualIncomeMin": "17256.0", + "monthlyIncomeMin": "1438.0", + "floor": 3, + "annualIncomeMax": "30750.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "719.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + }, + { + "id": "bed5f71e-1508-4f06-80ea-50d502e23349", + "createdAt": "2019-08-14T22:56:06.587Z", + "updatedAt": "2019-08-14T23:06:59.247Z", + "amiPercentage": "30.0", + "annualIncomeMin": "17256.0", + "monthlyIncomeMin": "1438.0", + "floor": 3, + "annualIncomeMax": "30750.0", + "maxOccupancy": 2, + "minOccupancy": 1, + "monthlyRent": "719.0", + "numBathrooms": null, + "numBedrooms": null, + "number": null, + "priorityType": null, + "reservedType": null, + "sqFeet": "285.00", + "status": "occupied", + "unitType": "studio", + "amiChartId": 4, + "monthlyRentAsPercentOfIncome": null, + "bmrProgramChart": null + } + ], + "events": [], + "applicationConfig": { + "sections": ["you", "household", "income", "preferences", "review"], + "languages": ["en", "zh"], + "steps": [ { - "id":"f748a7a8-a3bf-44ce-b358-64107c80414d", - "createdAt":"2019-08-14T22:52:08.766Z", - "updatedAt":"2019-08-14T23:06:59.031Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":2, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "chooseLanguage" }, { - "id":"e7d97fbb-5a97-4e2c-adab-9bcffc031484", - "createdAt":"2019-08-14T22:52:08.771Z", - "updatedAt":"2019-08-14T23:06:59.039Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":2, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "whatToExpect" }, { - "id":"331fb66f-6fc0-4987-b1b2-95efb87a492d", - "createdAt":"2019-08-14T22:52:08.777Z", - "updatedAt":"2019-08-14T23:06:59.046Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":2, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "primaryApplicantName" }, { - "id":"e59721c1-32e0-4255-8412-174e7e2da691", - "createdAt":"2019-08-14T22:52:08.783Z", - "updatedAt":"2019-08-14T23:06:59.053Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":2, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "primaryApplicantAddress" }, { - "id":"82f72a45-607f-4b31-a01d-175a2a37d2f5", - "createdAt":"2019-08-14T22:53:09.976Z", - "updatedAt":"2019-08-14T23:06:59.161Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":3, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "alternateContactType" }, { - "id":"b1d4a618-675e-483a-aa58-12aa1e3b32e2", - "createdAt":"2019-08-14T22:53:09.976Z", - "updatedAt":"2019-08-14T23:06:59.167Z", - "amiPercentage":"45.0", - "annualIncomeMin":"26496.0", - "monthlyIncomeMin":"2208.0", - "floor":3, - "annualIncomeMax":"46125.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"1104.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "alternateContactName" }, { - "id":"7af08604-e4b0-4581-a06e-f4359f5a8ce8", - "createdAt":"2019-07-09T21:24:14.122Z", - "updatedAt":"2019-08-14T23:06:59.173Z", - "amiPercentage":"30.0", - "annualIncomeMin":"17256.0", - "monthlyIncomeMin":"1438.0", - "floor":2, - "annualIncomeMax":"30750.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"719.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "alternateContactInfo" }, { - "id":"1cd55712-7890-4fd5-aabe-4e94d3e29294", - "createdAt":"2019-08-14T22:55:22.950Z", - "updatedAt":"2019-08-14T23:06:59.179Z", - "amiPercentage":"30.0", - "annualIncomeMin":"17256.0", - "monthlyIncomeMin":"1438.0", - "floor":2, - "annualIncomeMax":"30750.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"719.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "liveAlone" }, { - "id":"c171386e-c624-436e-96cf-9e0a49d75116", - "createdAt":"2019-08-14T22:55:22.956Z", - "updatedAt":"2019-08-14T23:06:59.186Z", - "amiPercentage":"30.0", - "annualIncomeMin":"17256.0", - "monthlyIncomeMin":"1438.0", - "floor":2, - "annualIncomeMax":"30750.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"719.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "householdMemberInfo" }, { - "id":"54ee1aec-3941-4bd7-9fd4-1fca0f532b91", - "createdAt":"2019-08-14T22:55:22.961Z", - "updatedAt":"2019-08-14T23:06:59.192Z", - "amiPercentage":"30.0", - "annualIncomeMin":"17256.0", - "monthlyIncomeMin":"1438.0", - "floor":2, - "annualIncomeMax":"30750.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"719.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "addMembers" }, { - "id":"7212e3d3-b181-4f2f-b86d-2af11a99ece2", - "createdAt":"2019-08-14T22:55:22.967Z", - "updatedAt":"2019-08-14T23:06:59.198Z", - "amiPercentage":"30.0", - "annualIncomeMin":"17256.0", - "monthlyIncomeMin":"1438.0", - "floor":2, - "annualIncomeMax":"30750.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"719.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "preferredUnitSize" }, { - "id":"59b1264c-9f0f-46fe-8567-d1668c3cfa6b", - "createdAt":"2019-08-14T22:55:22.972Z", - "updatedAt":"2019-08-14T23:06:59.204Z", - "amiPercentage":"30.0", - "annualIncomeMin":"17256.0", - "monthlyIncomeMin":"1438.0", - "floor":2, - "annualIncomeMax":"30750.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"719.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "adaHouseholdMembers" }, { - "id":"32665f0d-04e9-4f01-a0e0-c87880564d2b", - "createdAt":"2019-08-14T22:55:22.978Z", - "updatedAt":"2019-08-14T23:06:59.210Z", - "amiPercentage":"30.0", - "annualIncomeMin":"17256.0", - "monthlyIncomeMin":"1438.0", - "floor":2, - "annualIncomeMax":"30750.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"719.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "vouchersSubsidies" }, { - "id":"c6c1dc70-8900-40bd-9f5a-2936c03fd2ab", - "createdAt":"2019-08-14T22:55:22.984Z", - "updatedAt":"2019-08-14T23:06:59.216Z", - "amiPercentage":"30.0", - "annualIncomeMin":"17256.0", - "monthlyIncomeMin":"1438.0", - "floor":2, - "annualIncomeMax":"30750.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"719.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "income" }, { - "id":"fe53b33d-058f-4145-9c31-7f5762420471", - "createdAt":"2019-08-14T22:56:06.563Z", - "updatedAt":"2019-08-14T23:06:59.222Z", - "amiPercentage":"30.0", - "annualIncomeMin":"17256.0", - "monthlyIncomeMin":"1438.0", - "floor":3, - "annualIncomeMax":"30750.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"719.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "preferencesAll" }, { - "id":"c49fc978-1400-4512-b4c6-a20fbc41de45", - "createdAt":"2019-08-14T22:56:06.570Z", - "updatedAt":"2019-08-14T23:06:59.229Z", - "amiPercentage":"30.0", - "annualIncomeMin":"17256.0", - "monthlyIncomeMin":"1438.0", - "floor":3, - "annualIncomeMax":"30750.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"719.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "generalPool" }, { - "id":"d0158261-04d2-4749-87e2-84343df2898c", - "createdAt":"2019-08-14T22:56:06.575Z", - "updatedAt":"2019-08-14T23:06:59.235Z", - "amiPercentage":"30.0", - "annualIncomeMin":"17256.0", - "monthlyIncomeMin":"1438.0", - "floor":3, - "annualIncomeMax":"30750.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"719.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "demographics" }, { - "id":"1b619d8d-5910-4595-be5b-464bf236aff7", - "createdAt":"2019-08-14T22:56:06.580Z", - "updatedAt":"2019-08-14T23:06:59.241Z", - "amiPercentage":"30.0", - "annualIncomeMin":"17256.0", - "monthlyIncomeMin":"1438.0", - "floor":3, - "annualIncomeMax":"30750.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"719.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "summary" }, { - "id":"bed5f71e-1508-4f06-80ea-50d502e23349", - "createdAt":"2019-08-14T22:56:06.587Z", - "updatedAt":"2019-08-14T23:06:59.247Z", - "amiPercentage":"30.0", - "annualIncomeMin":"17256.0", - "monthlyIncomeMin":"1438.0", - "floor":3, - "annualIncomeMax":"30750.0", - "maxOccupancy":2, - "minOccupancy":1, - "monthlyRent":"719.0", - "numBathrooms":null, - "numBedrooms":null, - "number":null, - "priorityType":null, - "reservedType":null, - "sqFeet":"285.00", - "status":"occupied", - "unitType":"studio", - "amiChartId":4, - "monthlyRentAsPercentOfIncome":null, - "bmrProgramChart":null + "name": "terms" } - ], - "events":[ - - ], - "applicationConfig":{ - "sections":[ - "you", - "household", - "income", - "preferences", - "review" - ], - "languages":[ - "en", - "zh" - ], - "steps":[ - { - "name":"chooseLanguage" - }, - { - "name":"whatToExpect" - }, - { - "name":"primaryApplicantName" - }, - { - "name":"primaryApplicantAddress" - }, - { - "name":"alternateContactType" - }, - { - "name":"alternateContactName" - }, - { - "name":"alternateContactInfo" - }, - { - "name":"liveAlone" - }, - { - "name":"householdMemberInfo" - }, - { - "name":"addMembers" - }, - { - "name":"preferredUnitSize" - }, - { - "name":"adaHouseholdMembers" - }, - { - "name":"vouchersSubsidies" - }, - { - "name":"income" - }, - { - "name":"preferencesAll" - }, - { - "name":"generalPool" - }, - { - "name":"demographics" - }, - { - "name":"summary" - }, - { - "name":"terms" - } - ] - } -} \ No newline at end of file + ] + } +} diff --git a/sites/public/cypress/fixtures/listingConfig.json b/sites/public/cypress/fixtures/listingConfig.json index 5f7bc8ab7f..63b8fe3fa1 100644 --- a/sites/public/cypress/fixtures/listingConfig.json +++ b/sites/public/cypress/fixtures/listingConfig.json @@ -1,74 +1,65 @@ { - "applicationConfig":{ - "sections":[ - "you", - "household", - "income", - "preferences", - "review" - ], - "languages":[ - "en", - "zh" - ], - "steps":[ - { - "name":"chooseLanguage" - }, - { - "name":"whatToExpect" - }, - { - "name":"primaryApplicantName" - }, - { - "name":"primaryApplicantAddress" - }, - { - "name":"alternateContactType" - }, - { - "name":"alternateContactName" - }, - { - "name":"alternateContactInfo" - }, - { - "name":"liveAlone" - }, - { - "name":"householdMemberInfo" - }, - { - "name":"addMembers" - }, - { - "name":"preferredUnitSize" - }, - { - "name":"adaHouseholdMembers" - }, - { - "name":"vouchersSubsidies" - }, - { - "name":"income" - }, - { - "name":"preferencesAll" - }, - { - "name":"generalPool" - }, - { - "name":"demographics" - }, - { - "name":"summary" - }, - { - "name":"terms" - } + "applicationConfig": { + "sections": ["you", "household", "income", "preferences", "review"], + "languages": ["en", "zh"], + "steps": [ + { + "name": "chooseLanguage" + }, + { + "name": "whatToExpect" + }, + { + "name": "primaryApplicantName" + }, + { + "name": "primaryApplicantAddress" + }, + { + "name": "alternateContactType" + }, + { + "name": "alternateContactName" + }, + { + "name": "alternateContactInfo" + }, + { + "name": "liveAlone" + }, + { + "name": "householdMemberInfo" + }, + { + "name": "addMembers" + }, + { + "name": "preferredUnitSize" + }, + { + "name": "adaHouseholdMembers" + }, + { + "name": "vouchersSubsidies" + }, + { + "name": "income" + }, + { + "name": "preferencesAll" + }, + { + "name": "generalPool" + }, + { + "name": "demographics" + }, + { + "name": "summary" + }, + { + "name": "terms" + } ] - } -} \ No newline at end of file + } +} diff --git a/ui-components/.storybook/preview-body.html b/ui-components/.storybook/preview-body.html index 032319af58..aee48afd8b 100644 --- a/ui-components/.storybook/preview-body.html +++ b/ui-components/.storybook/preview-body.html @@ -1,3 +1,3 @@
-
\ No newline at end of file + diff --git a/ui-components/.storybook/preview-head.html b/ui-components/.storybook/preview-head.html index 56955b37e7..5d732c8b09 100644 --- a/ui-components/.storybook/preview-head.html +++ b/ui-components/.storybook/preview-head.html @@ -5,4 +5,4 @@ background: initial; font-size: 1.1em; } - \ No newline at end of file + diff --git a/ui-components/CHANGELOG.md b/ui-components/CHANGELOG.md index 2b7a9a1dc6..b386f1721d 100644 --- a/ui-components/CHANGELOG.md +++ b/ui-components/CHANGELOG.md @@ -7,26 +7,14 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline **Note:** Version bump only for package @bloom-housing/ui-components - - - - ## [0.2.2](https://github.com/bloom-housing/bloom/compare/v0.2.1...v0.2.2) (2020-06-05) **Note:** Version bump only for package @bloom-housing/ui-components - - - - ## [0.2.1](https://github.com/bloom-housing/bloom/compare/v0.2.0...v0.2.1) (2020-06-05) **Note:** Version bump only for package @bloom-housing/ui-components - - - - ## [0.0.9](https://github.com/bloom-housing/bloom/compare/v0.0.2...v0.0.9) (2020-04-21) **Note:** Version bump only for package @bloom-housing/ui-components diff --git a/ui-components/__tests__/actions/ExpandableContent.test.tsx b/ui-components/__tests__/actions/ExpandableContent.test.tsx index 20e31986ee..8ee6e7b754 100644 --- a/ui-components/__tests__/actions/ExpandableContent.test.tsx +++ b/ui-components/__tests__/actions/ExpandableContent.test.tsx @@ -6,13 +6,11 @@ import { ExpandableContent } from "../../src/actions/ExpandableContent" afterEach(cleanup) describe("", () => { - const INNER_CONTENT_CLASS = 'inner-content' + const INNER_CONTENT_CLASS = "inner-content" const content =
Sample content
it("renders content after button click", () => { - const { getByText, queryByTestId } = render( - {content} - ) + const { getByText, queryByTestId } = render({content}) // Expand the content const expandButton = getByText("read more") @@ -24,9 +22,7 @@ describe("", () => { }) it("collapses content after button click", () => { - const { getByText, queryByTestId } = render( - {content} - ) + const { getByText, queryByTestId } = render({content}) // Expand the content const expandButton = getByText("read more") @@ -41,4 +37,4 @@ describe("", () => { // Check if content not exists expect(queryByTestId(INNER_CONTENT_CLASS)).not.toBeInTheDocument() }) -}) \ No newline at end of file +}) diff --git a/ui-components/src/blocks/DashBlocks.scss b/ui-components/src/blocks/DashBlocks.scss index 0122d7eeff..69bd9cfd81 100644 --- a/ui-components/src/blocks/DashBlocks.scss +++ b/ui-components/src/blocks/DashBlocks.scss @@ -53,4 +53,4 @@ .dash-item__name { @apply text-2xl; @apply mb-3; -} \ No newline at end of file +} diff --git a/ui-components/src/footers/SiteFooter.scss b/ui-components/src/footers/SiteFooter.scss index f0c69670a0..13455b3fcd 100644 --- a/ui-components/src/footers/SiteFooter.scss +++ b/ui-components/src/footers/SiteFooter.scss @@ -13,7 +13,7 @@ footer.site-footer { a { @apply text-white; } - + p { @apply mb-5; } @@ -25,4 +25,4 @@ footer.site-footer { & > .footer-row:last-of-type { @apply pt-0; } -} \ No newline at end of file +} diff --git a/ui-components/src/global/accordion.scss b/ui-components/src/global/accordion.scss index 9f1d73b649..f1e04395db 100644 --- a/ui-components/src/global/accordion.scss +++ b/ui-components/src/global/accordion.scss @@ -1,4 +1,4 @@ .accordion__panel { @apply p-4; @apply border-b; -} \ No newline at end of file +} diff --git a/ui-components/src/global/custom_counter.scss b/ui-components/src/global/custom_counter.scss index d364f0ef09..5e06cb649e 100644 --- a/ui-components/src/global/custom_counter.scss +++ b/ui-components/src/global/custom_counter.scss @@ -47,4 +47,4 @@ .custom-counter__subtitle { @apply text-gray-700; @apply text-tiny; -} \ No newline at end of file +} diff --git a/ui-components/src/global/homepage.scss b/ui-components/src/global/homepage.scss index 6fa0ad5f53..512c8c414e 100644 --- a/ui-components/src/global/homepage.scss +++ b/ui-components/src/global/homepage.scss @@ -5,4 +5,4 @@ @screen md { @apply text-lg; } -} \ No newline at end of file +} diff --git a/ui-components/src/global/mixins.scss b/ui-components/src/global/mixins.scss index 9c4a100a4b..da41d9f1ea 100644 --- a/ui-components/src/global/mixins.scss +++ b/ui-components/src/global/mixins.scss @@ -171,4 +171,4 @@ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; -} \ No newline at end of file +} diff --git a/ui-components/src/global/vendor/ag_grid.scss b/ui-components/src/global/vendor/ag_grid.scss index e64d456ffe..72dcd2502a 100644 --- a/ui-components/src/global/vendor/ag_grid.scss +++ b/ui-components/src/global/vendor/ag_grid.scss @@ -1,14 +1,16 @@ - // AG Grid @import "~ag-grid-community/src/styles/ag-grid.scss"; @import "~ag-grid-community/src/styles/ag-theme-alpine/sass/ag-theme-alpine-mixin"; -.ag-theme-alpine.ag-theme-bloom { // would like to remove the local theme class - @include ag-theme-alpine(( - // use theme parameters where possible - header-height: 83px, - row-height: 58px - )); +.ag-theme-alpine.ag-theme-bloom { + // would like to remove the local theme class + @include ag-theme-alpine( + ( + // use theme parameters where possible + header-height: 83px, + row-height: 58px + ) + ); .ag-row { height: ag-param(row-height); @@ -96,7 +98,7 @@ ::-webkit-scrollbar-track { @apply bg-gray-100; - -webkit-box-shadow: inset 0 0 1px rgba(0,0,0,0.7); + -webkit-box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.7); } } @@ -134,9 +136,8 @@ } .data-pager__previous { - } .data-pager__control-group { margin-left: auto; -} \ No newline at end of file +} diff --git a/ui-components/src/headers/Hero.scss b/ui-components/src/headers/Hero.scss index f0a0d5ccc3..37cfcbac9e 100644 --- a/ui-components/src/headers/Hero.scss +++ b/ui-components/src/headers/Hero.scss @@ -15,7 +15,8 @@ } } -.hero__button, .with_secondary a { +.hero__button, +.with_secondary a { width: 100%; } diff --git a/ui-components/src/icons/HeaderBadge.scss b/ui-components/src/icons/HeaderBadge.scss index dfe58b5afb..1155c70548 100644 --- a/ui-components/src/icons/HeaderBadge.scss +++ b/ui-components/src/icons/HeaderBadge.scss @@ -26,4 +26,4 @@ @apply w-12; } } -} \ No newline at end of file +} diff --git a/ui-components/src/lists/PreferencesList.scss b/ui-components/src/lists/PreferencesList.scss index 8d5a28c068..fc48c7483c 100644 --- a/ui-components/src/lists/PreferencesList.scss +++ b/ui-components/src/lists/PreferencesList.scss @@ -2,7 +2,7 @@ .info-card__title { @apply mb-0; @apply ml-4; - + @screen md { @apply ml-2; } @@ -69,4 +69,4 @@ span { @apply mr-4; } -} \ No newline at end of file +} diff --git a/ui-components/src/locales/vi.json b/ui-components/src/locales/vi.json index a4b0f49792..3d5be15e6b 100644 --- a/ui-components/src/locales/vi.json +++ b/ui-components/src/locales/vi.json @@ -1,746 +1,746 @@ -{ - "account": { - "accountSettings": "Thiết lập Tài khoản", - "accountSettingsSubtitle": "Thiết lập Tài khoản, email và mật khẩu", - "createAccount": "Tạo Tài khoản", - "haveAnAccount": "Quý vị đã có một tài khoản chưa?", - "myApplications": "Đơn ghi danh của tôi", - "myApplicationsSubtitle": "Xem ngày rút thăm và danh sách các bất động sản mà quý vị đã ghi danh" - }, - "application": { - "form": { - "general": { - "saveAndReturn": "Lưu và quay lại để xem", - "saveAndFinishLater": "Lưu và hoàn thành sau" - }, - "options": { - "relationship": { - "spouse": "Vợ/Chồng", - "registeredDomesticPartner": "Bạn tình Sống Chung Đã đăng ký", - "parent": "Cha/mẹ", - "child": "Trẻ em", - "sibling": "Anh chị em", - "cousin": "Anh chị em họ", - "aunt": "Cô/dì", - "uncle": "Chú/bác", - "nephew": "Cháu trai", - "niece": "Cháu gái", - "grandparent": "Ông/bà", - "greatGrandparent": "Cụ ông/cụ bà", - "inLaw": "Bố/mẹ chồng/vợ", - "friend": "Bạn", - "other": "Khác" - } - } - }, - "chooseLanguage": { - "letsGetStarted": "Hãy bắt đầu làm đơn ghi danh của quý vị", - "chooseYourLanguage": "Lựa chọn Ngôn ngữ của Quý vị", - "signInSaveTime": "Việc đăng nhập có thể giúp quý vị tiết kiệm thời gian bằng cách bắt đầu với các thông tin chi tiết về đơn ghi danh gần đây nhất của quý vị và cho phép quý vị kiểm tra trạng thái của đơn ghi danh này bất kỳ lúc nào." - }, - "autofill": { - "saveTime": "Tiết kiệm thời gian bằng cách sử dụng các chi tiết từ đơn lần trước của quý vị", - "prefillYourApplication": "Chúng tôi sẽ điền trước đơn của quý vị với những thông tin chi tiết sau, và quý vị có thể cập nhật các thông tin đó trong quá trình làm đơn.", - "start": "Bắt đầu với Những Chi tiết Này", - "reset": "Thiết lập lại và bắt đầu từ đầu" - }, - "start": { - "whatToExpect": { - "title": "Dưới đây là những điều sẽ xảy ra trong đơn ghi danh này.", - "info1": "Trước tiên, chúng tôi sẽ hỏi về quý vị và những người quý vị dự định sống cùng. Sau đó, chúng tôi sẽ hỏi về thu nhập của quý vị. Cuối cùng, chúng tôi sẽ xem liệu quý vị có hội đủ điều kiện cho bất kỳ lựa chọn ưu tiên rút thăm nhà ở giá phải chăng nào không.", - "info2": "Xin lưu ý rằng mỗi thành viên trong hộ gia đình chỉ có thể có tên xuất hiện trên một đơn ghi danh cho mỗi danh sách.", - "info3": "Mọi tuyên bố sai sự thật sẽ khiến đơn ghi danh của quý vị bị loại bỏ." - } - }, - "name": { - "title": "Tên của quý vị là gì?", - "yourName": "Tên Quý vị", - "firstName": "Tên", - "middleNameOptional": "Tên Đệm (không bắt buộc)", - "lastName": "Họ", - "yourDateOfBirth": "Ngày sinh của Quý vị", - "yourEmailAddress": "Địa chỉ Email của Quý vị", - "emailPrivacy": "Chúng tôi sẽ chỉ sử dụng địa chỉ email của quý vị để liên lạc với quý vị về việc ghi danh của quý vị.", - "noEmailAddress": "Tôi không có địa chỉ email" - }, - "contact": { - "title": "Cảm ơn %{firstName}. Bây giờ chúng tôi cần biết cách để liên lạc với quý vị.", - "yourPhoneNumber": "Số Điện thoại của Quý vị", - "phoneNumberTypes": { - "prompt": "Kiểu số điện thoại này là gì?", - "work": "Sở làm", - "home": "Nhà riêng", - "cell": "Di động" - }, - "noPhoneNumber": "Tôi không có số điện thoạii", - "additionalPhoneNumber": "Tôi có thêm một số điện thoại", - "address": "Địa chỉ", - "addressWhereYouCurrentlyLive": "Chúng tôi cần địa chỉ nơi quý vị hiện đang sinh sống. Nếu quý vị là người vô gia cư, hãy nhập địa chỉ nơi tạm trú hoặc địa chỉ gần nơi quý vị ở.", - "streetAddress": "Địa chỉ Đường phố", - "apt": "Số Căn hộ hoặc Căn nhà", - "cityName": "Tên Thành phố", - "contactPreference": "Quý vị muốn được liên lạc theo phương thức nào hơn?", - "preferredContactType": "Loại Liên lạc Ưu tiên", - "state": "Tiểu bang", - "zip": "Mã Zip", - "zipCode": "Số zipcode", - "sendMailToMailingAddress": "Gửi thư của tôi đến một địa chỉ khác", - "mailingAddress": "Địa chỉ Nhận thư", - "provideAMailingAddress": "Cung cấp địa chỉ nơi quý vị có thể nhận các thông tin cập nhật và tài liệu về đơn ghi danh của mình.", - "doYouWorkIn": "Quý vị có làm việc tại không?", - "doYouWorkInDescription": "Chưa xác định", - "workAddress": "Địa chỉ Sở Làm" - }, - "alternateContact": { - "type": { - "title": "Quý vị có muốn ủy quyền cho ai khác để chúng tôi liên lạc nếu chúng tôi không thể liên lạc với quý vị không?", - "description": "Bằng cách cung cấp người liên lạc thay thế, quý vị cho phép chúng tôi thảo luận thông tin về đơn ghi danh của quý vị với họ.", - "label": "Người liên lạc Thay thế", - "options": { - "familyMember": "Thành viên gia đình", - "friend": "Bạn", - "caseManager": "Quản lý hồ sơ hoặc cố vấn gia cư", - "other": "Khác", - "noContact": "Tôi không có người liên lạc thay thế" - }, - "otherTypeFormPlaceholder": "Mối quan hệ của quý vị là gì?", - "otherTypeValidationErrorMessage": "Vui lòng nhập kiểu quan hệ", - "validationErrorMessage": "Vui lòng chọn một người liên lạc thay thế" - }, - "name": { - "title": "Người liên lạc thay thế của quý vị là ai?", - "alternateContactFormLabel": "Tên người liên lạc thay thế", - "caseManagerAgencyFormLabel": "Quản lý hồ sơ hoặc cố vấn nhà ở của quý vị công tác tại đâu?", - "caseManagerAgencyFormPlaceHolder": "Cơ quan", - "caseManagerAgencyValidationErrorMessage": "Hãy nhập vào một cơ quan" - }, - "contact": { - "title": "Hãy cho chúng tôi biết cách để liên lạc với người liên lạc thay thế của quý vị", - "description": "Chúng tôi sẽ chỉ sử dụng thông tin này để liên lạc với họ về đơn ghi danh của quý vị.", - "phoneNumberFormLabel": "Số điện thoại của người liên lạc", - "emailAddressFormLabel": "Địa chỉ email của người liên lạc", - "contactMailingAddressLabel": "Địa chỉ thư bưu điện của người liên lạc", - "contactMailingAddressHelperText": "Chọn một địa chỉ nơi họ có thể nhận các thông tin cập nhật và tài liệu về đơn ghi danh của quý vị" - } - }, - "household": { - "assistanceUrl": "https://exygy.com/", - "dontQualifyHeader": "Thật đáng tiếc, có vẻ như quý vị không đủ điều kiện cho danh sách nhà này.", - "dontQualifyInfo": "Vui lòng thực hiện các thay đổi nếu quý vị cho rằng mình có thể đã nhầm lẫn. Lưu ý rằng nếu quý vị giả mạo bất kỳ thông tin nào trong đơn ghi danh của mình, quý vị sẽ bị loại. Nếu thông tin quý vị đã nhập là chính xác, chúng tôi đề nghị quý vị nên kiểm tra lại trong tương lai khi có thêm các bất động sản.", - "addMembers": { - "addHouseholdMember": "+ Thêm Thành viên Hộ Gia đình", - "done": "Thêm xong thành viên", - "title": "Hãy cho chúng tôi biết về hộ gia đình của quý vị." - }, - "householdMember": "Thành viên Hộ Gia đình", - "householdMembers": "Các Thành viên Hộ Gia đình", - "liveAlone": { - "title": "Tiếp theo, chúng tôi muốn biết về những người khác sẽ sống trong căn nhà cùng quý vị", - "willLiveAlone": "Tôi sẽ sống một mình", - "liveWithOtherPeople": "Những người khác sẽ sống cùng tôi" - }, - "preferredUnit": { - "preferredUnitType": "Loại Căn nhà Ưa thích", - "title": "Kích thước căn nhà mà quý vị quan tâm là gì?", - "subTitle": "Loại căn nhà quý vị đã chọn sẽ tùy thuộc vào tình trạng sẵn có.", - "optionsLabel": "Đánh dấu tất cả các lựa chọn phù hợp:", - "options": { - "studio": "Một phòng kiểu studio", - "oneBedroom": "1 Phòng ngủ", - "twoBedroom": "2 Phòng ngủ", - "threeBedroom": "3 Phòng ngủ", - "moreThanThreeBedroom": "3 Phòng ngủ trở lên" - } - }, - "member": { - "cancelAddingThisPerson": "Hủy bỏ việc thêm người này", - "deleteThisPerson": "Xóa người này", - "dateOfBirth": "Ngày sinh", - "name": "Tên của thành viên hộ gia đình", - "haveSameAddress": "Họ có cùng địa chỉ với quý vị không?", - "whatIsTheirRelationship": "Quan hệ của người đó với quý vị là gì?", - "saveHouseholdMember": "Lưu thành viên hộ gia đình", - "subTitle": "Quý vị sẽ có cơ hội thêm nhiều thành viên hộ gia đình hơn trong màn hình tiếp theo", - "title": "Hãy cho chúng tôi biết về người này", - "updateHouseholdMember": "Cập nhật Thành viên Hộ Gia đình", - "whatReletionship": "Quan hệ của người đó với quý vị là gì", - "workInRegion": "Họ có làm việc tại không?", - "workInRegionNote": "Điều này có nghĩa là họ hiện đang làm việc tại ít nhất 75% số giờ làm việc của họ." - }, - "membersInfo": { - "title": "Trước khi thêm người khác, hãy đảm bảo rằng họ không có tên trên bất kỳ đơn ghi danh nào khác cho danh sách nhà này." - }, - "primaryApplicant": "Người nộp đơn Chính" - }, - "ada": { - "label": "Các Căn nhà Dễ tiếp cập của ADA", - "title": "Quý vị hoặc bất kỳ ai trong gia đình quý vị có cần bất kỳ tính năng trợ năng của ADA nào sau đây không?", - "subTitle": "Nếu quý vị được chọn cho một căn nhà, khu nhà sẽ làm việc để đáp ứng nhu cầu của quý vị trong khả năng tốt nhất của họ. Nếu đơn ghi danh của quý vị được chọn, hãy chuẩn bị cung cấp các tài liệu hỗ trợ từ bác sĩ của quý vị.", - "mobility": "Dành cho các cư dân Vận động Khó khăn", - "vision": "Dành cho các cư dân bị Suy giảm Thị lực", - "hearing": "Dành cho các cư dân bị Suy giảm Thính lực" - }, - "financial": { - "income": { - "title": "Hãy chuyển sang phần thu nhập.", - "instruction1": "Tính tổng thu nhập hộ gia đình (trước thuế) từ tiền lương, tiền trợ cấp và các nguồn khác từ tất cả các thành viên trong hộ gia đình.", - "instruction2": "Ngay bây giờ, quý vị chỉ cần cung cấp tổng số tiền ước tính. Tổng số tiền thực tế sẽ được tính nếu quý vị được chọn.", - "prompt": "Tổng thu nhập trước thuế của hộ gia đình của quý vị là bao nhiêu?", - "placeholder": "Tổng tất cả các nguồn thu nhập của quý vị", - "validationError": { - "title": "Thật đáng tiếc, có vẻ như quý vị không đủ điều kiện cho danh sách nhà này.", - "reason": { - "low": "Thu nhập hộ gia đình của quý vị quá thấp.", - "high": "Thu nhập hộ gia đình của quý vị quá cao." - }, - "instruction1": "Vui lòng thực hiện các thay đổi nếu quý vị cho rằng mình có thể đã nhầm lẫn. Lưu ý rằng nếu quý vị giả mạo bất kỳ thông tin nào trong đơn ghi danh của mình, quý vị sẽ bị loại.", - "instruction2": "Nếu thông tin quý vị đã nhập là chính xác, chúng tôi đề nghị quý vị nên kiểm tra lại trong tương lai khi có thêm các bất động sản." - } - }, - "vouchers": { - "title": "Quý vị hoặc bất kỳ ai trong đơn ghi danh này có nhận được bất kỳ quyền lợi nào sau đây không?", - "housingVouchers": { - "strong": "Phiếu chọn Nhà", - "text": "như Mục 8 (Section 8)" - }, - "nonTaxableIncome": { - "strong": "Thu nhập không chịu thuế", - "text": "như SSI, SSDI, các khoản tiền trợ cấp nuôi con, hoặc các khoản tiền quyền lợi bồi thường cho người lao động" - }, - "rentalSubsidies": { - "strong": "Các khoản trợ cấp tiền thuê nhà", - "text": "như VASH, HSA, HOPWA, Catholic Charities, AIDS Foundation, v.v." - } - } - }, - "preferences": { - "title": "Hộ gia đình của quý vị có thể hội đủ điều kiện cho các lựa chọn ưu tiên nhà ở sau đây.", - "preamble": "Nếu quý vị hội đủ điều kiện cho lựa chọn ưu tiên này, quý vị sẽ được xếp ở thứ hạng cao hơn.", - "selectBelow": "Nếu quý vị có một trong những lựa chọn ưu tiên nhà ở này, hãy chọn ưu tiên đó bên dưới:", - "dontWant": "Tôi không muốn lựa chọn ưu tiên này", - "stillHaveOpportunity": "Quý vị vẫn sẽ có cơ hội yêu cầu các lựa chọn ưu tiên khác.", - "youHaveClaimed": "Quý vị đã xác nhận:", - "liveWork": { - "live": { - "label": "Sống tại Ưu tiên", - "description": "Sống tại bản sao ở đây…", - "link": "http://domain.com" - }, - "work": { - "label": "Làm việc tại Ưu tiên", - "description": "Làm việc tại bản sao ở đây…", - "link": "http://domain.com" - } - }, - "displacedTenant": { - "whichHouseholdMember": "Thành viên hộ gia đình nào đang yêu cầu lựa chọn này?", - "whatAddress": "Địa chỉ mà thành viên hộ gia đình này đã chuyển khỏi là gì?" - }, - "general": { - "title": "Dựa trên thông tin quý vị đã nhập, hộ gia đình của quý vị chưa yêu cầu bất kỳ lựa chọn ưu tiên nhà ở nào.", - "preamble": "Quý vị sẽ thuộc nhóm các ứng viên chung." - } - }, - "review": { - "takeAMomentToReview": "Hãy dành một chút thời gian để xem lại thông tin của quý vị trước khi nộp đơn ghi danh.", - "sameAddressAsApplicant": "Cùng Địa chỉ với Ứng viên", - "noAdditionalMembers": "Không có thành viên gia đình bổ sung", - "householdDetails": "Thông tin chi tiết về Hộ gia đình", - "voucherOrSubsidy": "Phiếu chọn Nhà hoặc Trợ cấp Tiền thuê nhà", - "lastChanceToEdit": "Đây là cơ hội cuối cùng để quý vị chỉnh sửa trước khi nộp đơn.", - "terms": { - "title": "Các điều khoản", - "text": "Đơn ghi danh này phải được gửi trước %{applicationDueDate}.

Người nộp đơn sẽ được nhân viên đại diện liên lạc theo thứ tự xếp hạng rút thăm và thứ tự lựa chọn ưu tiên cho đến khi hết chỗ trống.

Tất cả thông tin quý vị đã cung cấp sẽ được xác nhận và tình trạng hội đủ điều kiện quý vị được xác nhận. Đơn ghi danh của quý vị sẽ bị loại khỏi cuộc rút thăm nếu quý vị có bất kỳ tuyên bố sai sự thật nào, hoặc nếu bất kỳ thành viên nào trong gia đình có tên xuất hiện cho nhiều hơn một đơn ghi danh cho danh sách này. Nếu chúng tôi không thể xác nhận lựa chọn ưu tiên rút thăm nhà ở mà quý vị đã yêu cầu, quý vị sẽ không nhận được lựa chọn ưu tiên đó nhưng sẽ không bị phạt.

Tất cả thông tin quý vị đã cung cấp sẽ được xác nhận và tình trạng hội đủ điều kiện quý vị được xác nhận. Đơn ghi danh của quý vị sẽ bị loại khỏi danh sách chờ nếu quý vị có bất kỳ tuyên bố sai sự thật nào, hoặc nếu bất kỳ thành viên nào trong gia đình có tên xuất hiện cho nhiều đơn hơn một đơn ghi danh cho danh sách nhà này. Nếu chúng tôi không thể xác nhận lựa chọn ưu tiên nhà ở mà quý vị đã yêu cầu, quý vị sẽ không nhận được lựa chọn ưu tiên đó nhưng sẽ không bị phạt.

Nếu đơn ghi danh của quý vị được lựa chọn từ cuộc rút thăm, hãy chuẩn bị để điền vào đơn ghi danh gồm các thông tin chi tiết hơn và cung cấp các tài liệu hỗ trợ cần thiết trong vòng 5 ngày làm việc kể từ khi được liên lạc. Để biết thêm thông tin, vui lòng liên lạc với cơ quan phát triển nhà hoặc nhân viên đại diện được đăng trong danh sách. Việc hoàn thành đơn ghi danh rút thăm này không giúp quý vị có nhà ở hoặc cho biết quý vị hội đủ điều kiện nhận nhà. Tất cả những người nộp đơn sẽ được sàng lọc như đã nêu trong Tiêu chí Lựa chọn Cư dân của bất động sản.

Quý vị không thể thay đổi đơn ghi danh trực tuyến của mình sau khi đã gửi.

Tôi cam đoan rằng những điều đã khai ở trên là đúng và chính xác, đồng thời xác nhận rằng bất kỳ tuyên bố sai sự thật do gian lận hoặc cẩu thả nào trên đơn ghi danh này sẽ khiến tôi bị loại khỏi cuộc rút thăm.

", - "confirmCheckboxText": "Tôi đồng ý và hiểu rằng tôi không thể thay đổi bất cứ thông tin nào sau khi tôi nộp đơn." - }, - "demographics": { - "title": "Hãy giúp chúng tôi đảm bảo rằng chúng tôi đang đáp ứng được mục tiêu của mình là phục vụ tất cả mọi người.", - "subTitle": "Những câu hỏi này là không bắt buộc và sẽ không ảnh hưởng đến tính hội đủ điều kiện của quý vị đối với việc nhận nhà ở. Những câu trả lời của quý vị sẽ được giữ kín.", - "ethnicityLabel": "Điều nào dưới đây mô tả đúng nhất về dân tộc của quý vị?", - "raceLabel": "Điều nào dưới đây mô tả đúng nhất về chủng tộc của quý vị?", - "genderLabel": "Vui lòng cho biết giới tính của quý vị?", - "genderInfo": "Chọn một lựa chọn mô tả bản dạng giới tính hiện tại của quý vị chính xác nhất.", - "sexualOrientationLabel": "Quý vị mô tả thiên hướng tình dục hoặc nhận dạng giới của mình như thế nào?", - "howDidYouHearLabel": "Quý vị nghe về danh sách nhà này từ đâu?", - "ethnicityOptions": { - "hispanicLatino": "Gốc Tây Ban Nha / La-tinh", - "notHispanicLatino": "Không phải người gốc Tây Ban Nha / La tinh" - }, - "raceOptions": { - "americanIndianAlaskanNative": "Thổ dân Mỹ / Bản địa Alaska", - "asian": "Người Châu Á", - "blackAfricanAmerican": "Da đen / Mỹ gốc Phi", - "nativeHawaiianOtherPacificIslander": "Thổ dân Hawaii / Gốc Đảo Thái Bình Dương khác", - "white": "Người Da Trắng", - "americanIndianAlaskanNativeAndBlackAfricanAmerican": "Thổ dân Mỹ/Bản địa Alaska và Người Da đen hoặc Mỹ gốc Phi", - "americanIndianAlaskanNativeAndWhite": "Thổ dân Mỹ/Bản địa Alaska và Người Da Trắng", - "asianAndWhite": "Người Châu Á và Người Da Trắng", - "blackAfricanAmericanAndWhite": "Người Da đen/ Mỹ gốc Phi và Người Da Trắng", - "otherMutliracial": "Khác / Đa chủng tộc" - }, - "genderOptions": { - "female": "Nữ", - "male": "Nam", - "genderqueerGenderNon-Binary": "Phi giới tính / Phi nhị nguyên Giới", - "transFemale": "Nữ chuyển giới", - "transMale": "Nam chuyển giới", - "notListed": "Không được Liệt kê" - }, - "sexualOrientationOptions": { - "bisexual": "Song tính luyến ái", - "gayLesbianSameGenderLoving": "Đồng tính nam / Đồng tính nữ / Yêu Đồng Giới", - "questioningUnsure": "Chưa rõ giới tính / Không chắc về giới tính", - "straightHeterosexual": "Thẳng / Dị tính luyến ái", - "notListed": "Không được Liệt kê" - }, - "howDidYouHearOptions": { - "alamedaCountyHCDWebsite": "Trang web HCD của Quận Alameda", - "developerWebsite": "Trang web của Cơ quan phát triển nhà", - "flyer": "Tờ rơi", - "emailAlert": "Thông báo qua Email", - "friend": "Bạn", - "housingCounselor": "Cố vấn Nhà ở", - "radioAd": "Quảng cáo trên Radio", - "busAd": "Quảng cáo trên Xe buýt", - "other": "Khác" - } - }, - "confirmation": { - "title": "Cảm ơn. Chúng tôi đã nhận được đơn ghi danh của quý vị cho ", - "lotteryNumber": "Đây là số xác nhận đơn ghi danh của quý vị", - "pleaseWriteNumber": "Vui lòng ghi lại số đơn ghi danh của quý vị và giữ nó ở một nơi an toàn. Chúng tôi cũng đã gửi số này qua email cho quý vị nếu quý vị cung cấp địa chỉ email.", - "whatExpectTitle": "Điều gì sẽ xảy ra tiếp theo", - "whatExpectFirstParagraph": { - "held": "Buổi rút thăm sẽ được tổ chức vào ", - "attend": " Quý vị không cần phải tham dự buổi rút thăm nhà ở. Kết quả sẽ được đăng ", - "listing": "trên danh sách nhà này. ", - "refer": "Vui lòng tham khảo danh sách nhà để biết ngày kết quả rút thăm." - }, - "whatExpectSecondparagraph": "Các ứng viên sẽ được liên lạc theo thứ tự cho đến khi hết chỗ trống. Nếu đơn ghi danh của quý vị được chọn, hãy chuẩn bị để điền vào mẫu đơn chi tiết hơn và cung cấp các tài liệu hỗ trợ cần thiết.", - "doNotSubmitTitle": "Không gửi một đơn ghi danh khác cho danh sách này.", - "needToUpdate": "Nếu quý vị cần cập nhật thông tin trên đơn ghi danh của mình, vui lòng không làm đơn ghi danh lại. Hãy liên lạc với nhân viên đại diện nếu quý vị không nhận được email xác nhận.", - "createAccountTitle": "Quý vị có muốn tạo một tài khoản không?", - "createAccountParagraph": "Việc tạo tài khoản sẽ lưu thông tin của quý vị cho các đơn ghi danh sau này và quý vị có thể kiểm tra tình trạng của đơn ghi danh này bất cứ lúc nào.", - "imdone": "Không, cảm ơn, tôi đã làm xong.", - "browseMore": "Xem nhiều danh sách nhà hơn", - "print": "Xem đơn ghi danh đã nộp và in một bản sao." - } - }, - "confirmation": { - "viewOriginalListing": "Xem danh sách nhà ban đầu", - "informationSubmittedTitle": "Đây là thông tin quý vị đã nộp.", - "submitted": "Đã nộp: ", - "lotteryNumber": "Số xác nhận của quý vị", - "preferences": "Các lựa chọn ưu tiên", - "generalLottery": "Dựa trên thông tin quý vị đã nhập, hộ gia đình của quý vị chưa yêu cầu bất kỳ lựa chọn ưu tiên rút thăm nhà ở nào. Quý vị sẽ thuộc nhóm các ứng viên rút thăm chung.", - "printCopy": "In một bản sao để quý vị lưu hồ sơ" - }, - "timeout": { - "text": "Để bảo vệ danh tính của quý vị, phiên truy cập của quý vị sẽ hết hạn sau một phút do không có hoạt động. Quý vị sẽ mất mọi thông tin chưa được lưu nếu quý vị lựa chọn không trả lời.", - "action": "Tiếp tục làm đơn", - "afterMessage": "Chúng tôi quan tâm đến sự bảo mật của quý vị. Chúng tôi đã chấm dứt phiên truy cập của quý vị do không có hoạt động nào. Vui lòng bắt đầu làm một đơn ghi danh mới để tiếp tục." - }, - "continueApplication": "Tiếp tục làm Đơn ghi danh", - "applicationNeverSubmitted": "Đơn ghi danh của quý vị chưa bao giờ được gửi", - "deleteThisApplication": "Xóa đơn ghi danh này?", - "deleteApplicationDescription": "Xóa đơn ghi danh này có nghĩa là quý vị sẽ mất tất cả thông tin mà quý vị đã nhập.", - "edited": "Đã chỉnh sửa", - "status": "Tình Trạng", - "statuses": { - "inProgress": "Đang Diễn ra", - "neverSubmitted": "Chưa bao giờ được Gửi", - "submitted": "Đã gửi" - }, - "viewApplication": "Xem Đơn ghi danh", - "yourLotteryNumber": "Số xác nhận của quý vị là" - }, - "authentication": { - "timeout": { - "text": "Để bảo vệ danh tính của quý vị, phiên truy cập của quý vị sẽ hết hạn sau một phút do không có hoạt động. Quý vị sẽ mất mọi thông tin chưa được lưu và bị đăng xuất nếu quý vị lựa chọn không trả lời.", - "action": "Duy trì đăng nhập", - "signOutMessage": "Chúng tôi quan tâm đến sự bảo mật của quý vị. Chúng tôi đã đăng xuất tài khoản của quý vị do không có hoạt động nào. Vui lòng đăng nhập để tiếp tục." - }, - "signIn": { - "error": "Đã xảy ra lỗi khi quý vị đăng nhập", - "errorGenericMessage": "Vui lòng thử lại hoặc liên lạc với bộ phận hỗ trợ để được trợ giúp.", - "success": "Chào mừng quý vị trở lại, %{name}!" - } - }, - "config": { - "routePrefix": "vi" - }, - "errors": { - "alert": { - "badRequest": "Ối! Có vẻ như đã có lỗi xảy ra. Vui lòng thử lại. \n\nLiên lạc với sfhousing.info@sfgov.org nếu quý vị vẫn gặp các sự cố.", - "timeoutPleaseTryAgain": "Ối! Có vẻ như đã có lỗi xảy ra. Vui lòng thử lại." - }, - "notFound": { - "title": "Không Tìm thấy Trang", - "message": "Rất tiếc, chúng tôi dường như không thể tìm thấy trang quý vị đang tìm kiếm. Hãy thử quay lại trang trước hoặc nhấp vào bên dưới để duyệt các danh sách nhà." - }, - "agreeError": "Quý vị phải đồng ý với các điều khoản để tiếp tục", - "firstNameError": "Vui lòng nhập Tên", - "lastNameError": "Vui lòng nhập Họ", - "dateOfBirthError": "Vui lòng nhập Ngày sinh hợp lệ", - "emailAddressError": "Vui lòng nhập địa chỉ email", - "phoneNumberError": "Vui lòng nhập số điện thoại", - "phoneNumberTypeError": "Vui lòng nhập kiểu số điện thoại", - "streetError": "Vui lòng nhập địa chỉ", - "cityError": "Vui lòng nhập thành phố", - "stateError": "Vui lòng nhập tiểu bang", - "zipCodeError": "Vui lòng nhập số zipcode", - "errorsToResolve": "Quý vị cần giải quyết những lỗi này trước khi chuyển sang bước tiếp.", - "numberError": "Vui lòng nhập một số hợp lệ lớn hơn 0.", - "selectAllThatApply": "Vui lòng chọn tất cả các câu trả lời phù hợp", - "selectAtLeastOne": "Vui lòng chọn ít nhất một lựa chọn.", - "selectAnOption": "Vui lòng chọn một lựa chọn.", - "selectOption": "Vui lòng chọn một trong các lựa chọn ở trên.", - "householdTooBig": "Quy mô hộ gia đình của quý vị quá lớn.", - "householdTooSmall": "Quy mô hộ gia đình của quý vị quá nhỏ." - }, - "footer": { - "contact": "Liên lạc", - "disclaimer": "Tuyên bố miễn trách nhiệm", - "forGeneralQuestions": "Đối với các thắc mắc chung về chương trình, quý vị có thể gọi cho chúng tôi theo số 000-000-0000.", - "giveFeedback": "Đưa ra Phản hồi", - "privacyPolicy": "Chính sách Quyền Riêng tư", - "copyright": "Demonstration County © 2020 • Giữ Mọi Bản quyền" - }, - "housingCounselors": { - "subtitle": "Nói chuyện với một cố vấn gia cư địa phương cụ thể cho nhu cầu của quý vị.", - "languageServices": "Các Dịch Vụ Ngôn Ngữ: ", - "call": "Hãy gọi %{number}", - "visitWebsite": "Truy cập %{name}" - }, - "leasingAgent": { - "contact": "Liên lạc với Nhân viên Đại diện cho Thuê nhà", - "dueToHighCallVolume": "Do có nhiều cuộc gọi đến, quý vị có thể nghe thấy một lời nhắn.", - "officeHours": "Giờ Làm việc" - }, - "listings": { - "additionalInformation": "Thông tin Bổ sung", - "allUnits": "Tất cả các Căn nhà", - "allUnitsReservedFor": "Tất cả các căn nhà được dành cho %{type}", - "applicationDeadline": "Hạn nộp Đơn ghi danh", - "applicationFCFS": "Ai Nộp đơn Trước Được Nhận trước", - "applicationFee": "Lệ phí Ghi danh", - "applicationFeeDueAt": "Đến hạn Phỏng vấn", - "applicationOpenPeriod": "Bắt đầu nhận đơn Ghi danh", - "applicationPerApplicantAgeDescription": "mỗi ứng viên từ 18 tuổi trở lên", - "applicationsClosed": "Ngừng nhận Đơn ghi danh", - "apply": { - "applicationsMustBeReceivedByDeadline": "Các đơn ghi danh phải được nhận trước thời hạn và không cân nhắc ngày trên dấu bưu điện.", - "applicationWillBeAvailableOn": "Đơn ghi danh sẽ có sẵn để tải xuống và tới nhận vào %{openDate}", - "applyOnline": "Ghi danh Trực tuyến", - "downloadApplication": "Tải xuống Đơn ghi danh", - "dropOffApplication": "Thả Đơn ghi danh", - "dropOffApplicationOrMail": "Thả Đơn ghi danh hoặc Gửi qua đường bưu điện US Mail", - "getAPaperApplication": "Lấy Giấy ghi danh", - "howToApply": "Cách Ghi danh", - "paperApplicationsMustBeMailed": "Mẫu đơn ghi danh Giấy phải được gửi thư bưu điện Hoa Kỳ và không thể nộp trực tiếp.", - "pickUpAnApplication": "Nhận đơn ghi danh", - "postmarkedApplicationsMustBeReceivedByDate": "Đơn ghi danh phải được nhận trước thời hạn. Nếu gửi qua đường bưu điện U.S Mail, đơn ghi danh phải được đóng dấu bưu điện trước %{applicationDueDate} và nhận qua thư trước ngày %{postmarkReceiveByDate}. Các đơn ghi danh nhận được sau %{postmarkReceiveByDate} qua đường bưu điện sẽ không được chấp nhận ngay cả khi chúng được đóng dấu bưu điện trước %{applicationDueDate}. %{developer} không chịu trách nhiệm về thư bị thất lạc hoặc bị trễ.", - "sendByUsMail": "Gửi Đơn ghi danh qua đường bưu điện US Mail", - "submitAPaperApplication": "Gửi Giấy ghi danh" - }, - "availableAndWaitlist": "Các Căn nhà Còn trống & Danh sách chờ đang Mở", - "availableUnits": "Các Căn nhà Còn trống", - "availableUnitsAndWaitlist": "Các căn nhà còn trống và danh sách chờ", - "availableUnitsAndWaitlistDesc": "Sau khi các ứng viên lấy hết các căn nhà còn trống, các ứng viên bổ sung sẽ được đưa vào danh sách chờ cho %{number} căn nhà", - "bath": "tắm", - "browseListings": "Duyệt các Danh sách nhà", - "closedListings": "Các Danh sách nhà đã Đóng", - "comingSoon": "Sắp có", - "confirmedPreferenceList": "Danh sách nhà %{preference} Đã xác nhận", - "creditHistory": "Lịch sử Tín dụng", - "criminalBackground": "Lý lịch Tội phạm", - "depositOrMonthsRent": "hoặc tiền thuê nhà một tháng", - "depositMayBeHigherForLowerCredit": "Có thể cao hơn nếu điểm tín dụng thấp hơn", - "developmentalDisabilities": "Những người bị chậm phát triển", - "developmentalDisabilitiesDescription": "Một số căn nhà trong tòa nhà này được dành cho những người bị chậm phát triển. Vui lòng truy cập housingchoices.org để biết thông tin về điều kiện hội đủ, các yêu cầu, cách nhận đơn ghi danh và để có các câu trả lời cho bất kỳ câu hỏi nào khác mà quý vị có thể có về quy trình này.", - "enterLotteryForWaitlist": "Gửi đơn ghi danh một suất mở trong danh sách chờ cho %{units} căn nhà.", - "forIncomeCalculations": "Để tính thu nhập, quy mô hộ gia đình bao gồm tất cả mọi người (mọi lứa tuổi) sống trong căn nhà.", - "forIncomeCalculationsBMR": "Tính thu nhập dựa trên loại căn nhà", - "hideClosedListings": "Ẩn Các Danh sách đã Đóng", - "householdMaximumIncome": "Thu nhập Tối đa của Hộ gia đình", - "householdSize": "Quy mô Hộ Gia đình", - "importantProgramRules": "Các Quy tắc Quan trọng của Chương trình", - "includesPriorityUnits": "Bao gồm các Căn nhà Ưu tiên cho %{priorities}", - "lotteryResults": { - "completeResultsWillBePosted": "Toàn bộ kết quả quay xổ số sẽ sớm được đăng.", - "downloadResults": "Tải xuống Kết quả", - "header": "Kết quả Xổ số" - }, - "maxIncomeMonth": "Thu nhập Tối đa / Tháng", - "maxIncomeYear": "Thu nhập Tối đa / Năm", - "moreBuildingSelectionCriteria": "Tìm hiểu thêm về Tiêu chí Lựa chọn Tòa nhà", - "noAvailableUnits": "Không có căn nhà nào còn trống tại thời điểm này.", - "noOpenListings": "Không có danh sách nhà nào hiện đang mở nhận đơn ghi danh.", - "occupancyDescriptionAllSro": "Số người ở của tòa nhà này giới hạn 1 người mỗi căn.", - "occupancyDescriptionNoSro": "Giới hạn số người ở cho tòa nhà này dựa trên loại căn nhà.", - "occupancyDescriptionSomeSro": "Số người ở của tòa nhà này thay đổi tùy theo loại căn nhà. SRO được giới hạn cho 1 người mỗi căn, bất kể độ tuổi. Đối với tất cả các căn nhà khác, giới hạn số người ở không tính trẻ em dưới 6 tuổi.", - "openHouseEvent": { - "header": "Gặp gỡ Cộng đồng" - }, - "percentAMIUnit": "%{percent}% Căn nhà AMI", - "priorityUnits": "Các Căn nhà Ưu tiên", - "priorityUnitsDescription": "Tòa nhà này có các căn nhà ở được dành riêng cho quý vị nếu bất kỳ điều nào sau đây đúng với quý vị hoặc một người nào đó trong hộ gia đình của quý vị:", - "publicLottery": { - "header": "Xổ số Công cộng" - }, - "remainingUnitsAfterPreferenceConsideration": "Sau khi tất cả những người nắm giữ phiếu chọn ưu tiên đã được xem xét, bất kỳ căn nhà còn lại sẽ dành cho các ứng viên hội đủ điều kiện khác.", - "rentalHistory": "Lịch sử Thuê nhà", - "requiredDocuments": "Các tài liệu Cần thiết", - "reservedCommunityBuilding": "%{type} Tòa nhà", - "reservedFor": "Được dành riêng cho %{type}", - "reservedTypePlural": { - "family": "các gia đình", - "senior": "người cao niên", - "veteran": "cựu chiến binh" - }, - "reservedUnits": "Các căn nhà Được dành riêng", - "reservedUnitsDescription": "Để hội đủ điều kiện được nhận các căn nhà này, một trong những điều sau đây phải đúng với quý vị hoặc một người nào đó trong hộ gia đình của quý vị:", - "reservedUnitsForWhoAre": "Dành riêng cho %{communityType} những người %{reservedType}", - "sections": { - "additionalFees": "Các Loại Phí Bổ sung", - "eligibilityTitle": "Tình trạng Hội đủ Điều kiện", - "eligibilitySubtitle": "Thu nhập, số người ở, lựa chọn ưu tiên và các khoản trợ cấp", - "rentalAssistanceTitle": "Hỗ trợ Tiền thuê nhà", - "rentalAssistanceSubtitle": "Chương trình Phiếu Chọn Nhà, Mục 8 (Section 8) và các chương trình hỗ trợ tiền thuê nhà hợp lệ khác sẽ được cân nhắc cho toà nhà này. Trong trường hợp các khoản trợ cấp tiền thuê nhà hợp lệ, khoản thu nhập tối thiểu bắt buộc sẽ dựa trên phần tiền thuê mà người thuê nhà trả sau khi sử dụng khoản tiền trợ cấp.", - "housingPreferencesTitle": "Lựa chọn Ưu tiên Nhà ở", - "housingPreferencesSubtitle": "Những người nắm giữ phiếu chọn ưu tiên sẽ được xếp ở thứ hạng cao nhất.", - "additionalEligibilityTitle": "Các Quy tắc Bổ sung về Điều kiện hội đủ", - "additionalEligibilitySubtitle": "Các ứng viên cũng phải hội đủ điều kiện theo các quy tắc của tòa nhà.", - "processTitle": "Quy trình", - "processSubtitle": "Những ngày quan trọng và thông tin liên lạc", - "featuresTitle": "Các tính năng", - "featuresSubtitle": "Các tiện nghi, thông tin chi tiết căn nhà và các loại phí bổ sung", - "neighborhoodTitle": "Khu phố", - "neighborhoodSubtitle": "Vị trí và phương tiện di chuyển", - "additionalInformationTitle": "Thông tin Bổ sung", - "additionalInformationSubtitle": "Các tài liệu cần thiết và tiêu chí lựa chọn" - }, - "seeMaximumIncomeInformation": "Xem Thông tin Thu nhập Tối đa", - "seePreferenceInformation": "Xem Thông tin về Lựa chọn Ưu tiên", - "seeUnitInformation": "Xem Thông tin về Căn nhà", - "showClosedListings": "Hiển thị Các Danh sách đã Đóng", - "singleRoomOccupancy": "Số người ở Phòng đơn", - "singleRoomOccupancyDescription": "Toà nhà này cung cấp các phòng đơn chỉ dành cho một người. Những người thuê nhà có thể dùng chung phòng tắm và đôi khi là các tiện nghi ở nhà bếp.", - "unitTypes": { - "oneBdrm": "1 Phòng ngủ", - "twoBdrm": "2 Phòng ngủ", - "threeBdrm": "3 Phòng ngủ", - "studio": "Một phòng kiểu studio", - "SRO": "Số người ở Phòng đơn" - }, - "unitsAreFor": "Các căn nhà này được dành cho %{type}.", - "unitsHaveAccessibilityFeaturesFor": "Các căn nhà này có các tính năng trợ giúp cho những người bị %{type}.", - "upcomingLotteries": { - "hide": "Ẩn Các Danh sách đã Đóng", - "noResults": "Không có danh sách đã đóng đối với các cuộc rút thăm sắp tới tại thời điểm này.", - "show": "Hiển thị Các Danh sách đã Đóng", - "title": "Các Danh sách nhà đã Đóng" - }, - "waitlist": { - "closed": "Danh sách chờ Đã đóng", - "label": "Danh sách chờ", - "isOpen": "Danh sách chờ đã mở", - "currentSize": "Quy mô Danh sách chờ Hiện tại", - "finalSize": "Quy mô Danh sách chờ Cuối cùng", - "open": "Danh sách chờ Đang mở", - "openSlots": "Các suất trong Danh sách chờ Đang mở", - "submitAnApplication": "Sau khi các ứng viên được xếp hạng đã lấy tất cả các căn nhà còn trống, những ứng viên được xếp hạng còn lại sẽ được đưa vào danh sách chờ cho cùng các căn nhà đó.", - "submitForWaitlist": "Gửi đơn ghi danh một suất mở trong danh sách chờ.", - "unitsAndWaitlist": "Các Căn nhà Còn trống và Danh sách Chờ" - }, - "cc&r": "Giao ước, Điều kiện và Hạn chế (CC&R's)", - "cc&rDescription": "CC&R's giải thích các quy tắc của hiệp hội chủ nhà và hạn chế cách quý vị có thể sửa chữa bất động sản.", - "downloadPdf": "Tải xuống file PDF", - "rePricing": "Định giá lại", - "eligibilityNotebook": "Notebook hội đủ điều kiện", - "processInfo": "Thông tin về Quy trình", - "featuresCards": "Tính năng Thẻ", - "neighborhoodBuildings": "Các Tòa nhà Lân cận", - "additionalInformationEnvelope": "Phong bì Thông tin Bổ sung" - }, - "lottery": { - "applicationsThatQualifyForPreference": "Các đơn ghi danh đủ điều kiện cho lựa chọn ưu tiên này sẽ được ưu tiên cao hơn.", - "viewPreferenceList": "Xem Danh sách Lựa chọn Ưu tiên" - }, - "nav": { - "accountSettings": "Thiết lập Tài khoản", - "browseProperties": "Duyệt các Bất động sản", - "getAssistance": "Nhận Hỗ trợ", - "getFeedback": "Đây là bản xem trước của trang web mới của chúng tôi. Chúng tôi chỉ mới bắt đầu. Chúng tôi rất mong nhận được ý kiến phản hồi của quý vị.", - "listings": "Các danh sách nhà", - "properties": "Các bất động sản", - "applications": "Các đơn Ghi danh", - "myAccount": "Tài khoản của tôi", - "myApplications": "Đơn ghi danh của tôi", - "myDashboard": "Bảng Thông tin của tôi", - "mySettings": "Thiết lập của tôi", - "signIn": "Đăng nhập", - "signOut": "Đăng Xuất", - "siteTitle": "Cổng thông tin về Gia cư", - "skip": "Chuyển đến nội dung chính" - }, - "pageTitle": { - "additionalResources": "Thêm nhiều Cơ hội Nhà ở Hơn", - "disclaimer": "Tuyên bố miễn trách nhiệm Chứng thực", - "housingCounselors": "Cố vấn Nhà ở", - "getAssistance": "Nhận Hỗ trợ", - "rentalListings": "Xem Thông tin Thuê nhà", - "rent": "Thuê nhà giá phải chăng", - "privacy": "Chính sách Quyền Riêng tư", - "welcomeEnglish": "Chào mừng", - "welcomeSpanish": "Bienvenido", - "welcomeVietnamese": "Tiếng Việt" - }, - "pageDescription": { - "welcome": "Tìm kiếm và ghi danh nhà ở giá cả phải chăng trên Cổng thông tin về Gia cư tại %{regionName}", - "listing": "Ghi danh nhà ở giá phải chăng tại %{listingNam} ở %{regionName}, được xây dựng với sự hợp tác của Exygy." - }, - "region": { - "name": "Địa phương" - }, - "states": { - "AL": "Alabama", - "AK": "Alaska", - "AZ": "Arizona", - "AR": "Arkansas", - "CA": "California", - "CO": "Colorado", - "CT": "Connecticut", - "DE": "Delaware", - "DC": "District Of Columbia", - "FL": "Florida", - "GA": "Georgia", - "HI": "Hawaii", - "ID": "Idaho", - "IL": "Illinois", - "IN": "Indiana", - "IA": "Iowa", - "KS": "Kansas", - "KY": "Kentucky", - "LA": "Louisiana", - "ME": "Maine", - "MD": "Maryland", - "MA": "Massachusetts", - "MI": "Michigan", - "MN": "Minnesota", - "MS": "Mississippi", - "MO": "Missouri", - "MT": "Montana", - "NE": "Nebraska", - "NV": "Nevada", - "NH": "New Hampshire", - "NJ": "New Jersey", - "NM": "New Mexico", - "NY": "New York", - "NC": "North Carolina", - "ND": "North Dakota", - "OH": "Ohio", - "OK": "Oklahoma", - "OR": "Oregon", - "PA": "Pennsylvania", - "RI": "Rhode Island", - "SC": "South Carolina", - "SD": "South Dakota", - "TN": "Tennessee", - "TX": "Texas", - "UT": "Utah", - "VT": "Vermont", - "VA": "Virginia", - "WA": "Washington", - "WV": "West Virginia", - "WI": "Wisconsin", - "WY": "Wyoming" - }, - "t": { - "additionalPhone": "Điện thoại Bổ sung", - "area": "diện tích", - "areYouStillWorking": "Quý vị có vẫn đang làm việc hay không?", - "accessibility": "Phù hợp với người khuyết tật", - "availability": "Tình trạng sẵn có", - "back": "Quay lại", - "built": "Xây dựng", - "call": "Gọi điện", - "cancel": "Hủy bỏ", - "confirm": "Xác nhận", - "day": "Ngày", - "delete": "Xóa", - "deposit": "Đặt cọc", - "edit": "Hiệu đính", - "email": "Email", - "emailAddressPlaceHolder": "you@myemail.com", - "floor": "sàn", - "floors": "các sàn", - "getDirections": "Lấy hướng dẫn chỉ đường", - "household": "Hộ Gia đình", - "income": "Thu nhập", - "letter": "Chữ cái", - "less": "Ít hơn", - "loginIsRequired": "Yêu cầu đăng nhập để xem trang này.", - "menu": "Trình đơn", - "minimumIncome": "Thu nhập Tối thiểu", - "month": "Tháng", - "more": "Nhiều hơn", - "name": "Họ Tên", - "neighborhood": "Khu phố", - "next": "Tiếp theo", - "no": "Không", - "none": "Không", - "noneFound": "Không tìm thấy.", - "occupancy": "Số người cư ngụ", - "or": "hoặc", - "people": "người", - "person": "người", - "perMonth": "mỗi tháng", - "perYear": "mỗi năm", - "petsPolicy": "Chính sách đối với Vật nuôi", - "phone": "Điện thoại", - "phoneNumberPlaceholder": "(555) 555-5555", - "pleaseSelectOne": "Vui lòng chọn một.", - "preferences": "Các lựa chọn ưu tiên", - "propertyAmenities": "Các tiện ích của Bất động sản", - "range": "%{from} đến %{to}", - "readLess": "đọc ít hơn", - "readMore": "đọc nhiều hơn", - "rent": "Thuê", - "review": "Xem xét", - "seeDetails": "Xem Chi tiết", - "seeListing": "Xem Danh sách", - "selectOne": "Chọn Một", - "showLess": "hiển thị ít hơn", - "showMore": "hiển thị nhiều hơn", - "skipToMainContent": "Chuyển đến nội dung chính", - "smokingPolicy": "Chính sách Hút thuốc", - "sqFeet": "feet vuông", - "squareFeet": "feet vuông", - "submit": "Gửi", - "text": "Dạng chữ", - "unit": "căn nhà", - "units": "căn nhà", - "unitAmenities": "Các tiện ích của Căn nhà", - "unitFeatures": "Các tính năng của Căn nhà", - "unitType": "Loại Căn nhà", - "viewMap": "Xem Bản đồ", - "viewOnMap": "Xem trên Bản đồ", - "year": "Năm", - "yes": "Có", - "you": "Quý vị" - }, - "welcome": { - "allApplicationClosed": "Hiện đang không nhận tất cả các đơn ghi danh, nhưng quý vị có thể xem danh sách đã đóng.", - "seeRentalListings": "Xem Thông tin Thuê nhà", - "title": "Ghi danh nhà ở giá phải chăng tại", - "seeMoreOpportunities": "Xem thêm cơ hội thuê nhà và sở hữu nhà ở", - "viewAdditionalHousing": "Xem Các Cơ hội Nhà ở và các Nguồn Hỗ trợ Bổ sung" - }, - "whatToExpect": { - "label": "Những điều Sẽ xảy ra", - "applicantsWillBeContacted": "Các ứng viên sẽ được nhân viên đại diện bất động sản liên lạc theo thứ tự xếp hạng cho đến khi hết chỗ trống.", - "allInfoWillBeVerified": "Tất cả thông tin quý vị đã cung cấp sẽ được xác nhận và xác nhận tình trạng điều kiện hội đủ của quý vị. Đơn ghi danh của quý vị sẽ bị xóa khỏi danh sách chờ nếu quý vị có bất kỳ tuyên bố sai sự thật nào. Nếu chúng tôi không thể xác nhận lựa chọn ưu tiên nhà ở mà quý vị đã yêu cầu, quý vị sẽ không nhận được lựa chọn ưu tiên đó nhưng sẽ không bị phạt.", - "bePreparedIfChosen": "Nếu đơn ghi danh của quý vị được chọn, hãy chuẩn bị để điền vào mẫu đơn chi tiết hơn và cung cấp các tài liệu hỗ trợ cần thiết." - } -} +{ + "account": { + "accountSettings": "Thiết lập Tài khoản", + "accountSettingsSubtitle": "Thiết lập Tài khoản, email và mật khẩu", + "createAccount": "Tạo Tài khoản", + "haveAnAccount": "Quý vị đã có một tài khoản chưa?", + "myApplications": "Đơn ghi danh của tôi", + "myApplicationsSubtitle": "Xem ngày rút thăm và danh sách các bất động sản mà quý vị đã ghi danh" + }, + "application": { + "form": { + "general": { + "saveAndReturn": "Lưu và quay lại để xem", + "saveAndFinishLater": "Lưu và hoàn thành sau" + }, + "options": { + "relationship": { + "spouse": "Vợ/Chồng", + "registeredDomesticPartner": "Bạn tình Sống Chung Đã đăng ký", + "parent": "Cha/mẹ", + "child": "Trẻ em", + "sibling": "Anh chị em", + "cousin": "Anh chị em họ", + "aunt": "Cô/dì", + "uncle": "Chú/bác", + "nephew": "Cháu trai", + "niece": "Cháu gái", + "grandparent": "Ông/bà", + "greatGrandparent": "Cụ ông/cụ bà", + "inLaw": "Bố/mẹ chồng/vợ", + "friend": "Bạn", + "other": "Khác" + } + } + }, + "chooseLanguage": { + "letsGetStarted": "Hãy bắt đầu làm đơn ghi danh của quý vị", + "chooseYourLanguage": "Lựa chọn Ngôn ngữ của Quý vị", + "signInSaveTime": "Việc đăng nhập có thể giúp quý vị tiết kiệm thời gian bằng cách bắt đầu với các thông tin chi tiết về đơn ghi danh gần đây nhất của quý vị và cho phép quý vị kiểm tra trạng thái của đơn ghi danh này bất kỳ lúc nào." + }, + "autofill": { + "saveTime": "Tiết kiệm thời gian bằng cách sử dụng các chi tiết từ đơn lần trước của quý vị", + "prefillYourApplication": "Chúng tôi sẽ điền trước đơn của quý vị với những thông tin chi tiết sau, và quý vị có thể cập nhật các thông tin đó trong quá trình làm đơn.", + "start": "Bắt đầu với Những Chi tiết Này", + "reset": "Thiết lập lại và bắt đầu từ đầu" + }, + "start": { + "whatToExpect": { + "title": "Dưới đây là những điều sẽ xảy ra trong đơn ghi danh này.", + "info1": "Trước tiên, chúng tôi sẽ hỏi về quý vị và những người quý vị dự định sống cùng. Sau đó, chúng tôi sẽ hỏi về thu nhập của quý vị. Cuối cùng, chúng tôi sẽ xem liệu quý vị có hội đủ điều kiện cho bất kỳ lựa chọn ưu tiên rút thăm nhà ở giá phải chăng nào không.", + "info2": "Xin lưu ý rằng mỗi thành viên trong hộ gia đình chỉ có thể có tên xuất hiện trên một đơn ghi danh cho mỗi danh sách.", + "info3": "Mọi tuyên bố sai sự thật sẽ khiến đơn ghi danh của quý vị bị loại bỏ." + } + }, + "name": { + "title": "Tên của quý vị là gì?", + "yourName": "Tên Quý vị", + "firstName": "Tên", + "middleNameOptional": "Tên Đệm (không bắt buộc)", + "lastName": "Họ", + "yourDateOfBirth": "Ngày sinh của Quý vị", + "yourEmailAddress": "Địa chỉ Email của Quý vị", + "emailPrivacy": "Chúng tôi sẽ chỉ sử dụng địa chỉ email của quý vị để liên lạc với quý vị về việc ghi danh của quý vị.", + "noEmailAddress": "Tôi không có địa chỉ email" + }, + "contact": { + "title": "Cảm ơn %{firstName}. Bây giờ chúng tôi cần biết cách để liên lạc với quý vị.", + "yourPhoneNumber": "Số Điện thoại của Quý vị", + "phoneNumberTypes": { + "prompt": "Kiểu số điện thoại này là gì?", + "work": "Sở làm", + "home": "Nhà riêng", + "cell": "Di động" + }, + "noPhoneNumber": "Tôi không có số điện thoạii", + "additionalPhoneNumber": "Tôi có thêm một số điện thoại", + "address": "Địa chỉ", + "addressWhereYouCurrentlyLive": "Chúng tôi cần địa chỉ nơi quý vị hiện đang sinh sống. Nếu quý vị là người vô gia cư, hãy nhập địa chỉ nơi tạm trú hoặc địa chỉ gần nơi quý vị ở.", + "streetAddress": "Địa chỉ Đường phố", + "apt": "Số Căn hộ hoặc Căn nhà", + "cityName": "Tên Thành phố", + "contactPreference": "Quý vị muốn được liên lạc theo phương thức nào hơn?", + "preferredContactType": "Loại Liên lạc Ưu tiên", + "state": "Tiểu bang", + "zip": "Mã Zip", + "zipCode": "Số zipcode", + "sendMailToMailingAddress": "Gửi thư của tôi đến một địa chỉ khác", + "mailingAddress": "Địa chỉ Nhận thư", + "provideAMailingAddress": "Cung cấp địa chỉ nơi quý vị có thể nhận các thông tin cập nhật và tài liệu về đơn ghi danh của mình.", + "doYouWorkIn": "Quý vị có làm việc tại không?", + "doYouWorkInDescription": "Chưa xác định", + "workAddress": "Địa chỉ Sở Làm" + }, + "alternateContact": { + "type": { + "title": "Quý vị có muốn ủy quyền cho ai khác để chúng tôi liên lạc nếu chúng tôi không thể liên lạc với quý vị không?", + "description": "Bằng cách cung cấp người liên lạc thay thế, quý vị cho phép chúng tôi thảo luận thông tin về đơn ghi danh của quý vị với họ.", + "label": "Người liên lạc Thay thế", + "options": { + "familyMember": "Thành viên gia đình", + "friend": "Bạn", + "caseManager": "Quản lý hồ sơ hoặc cố vấn gia cư", + "other": "Khác", + "noContact": "Tôi không có người liên lạc thay thế" + }, + "otherTypeFormPlaceholder": "Mối quan hệ của quý vị là gì?", + "otherTypeValidationErrorMessage": "Vui lòng nhập kiểu quan hệ", + "validationErrorMessage": "Vui lòng chọn một người liên lạc thay thế" + }, + "name": { + "title": "Người liên lạc thay thế của quý vị là ai?", + "alternateContactFormLabel": "Tên người liên lạc thay thế", + "caseManagerAgencyFormLabel": "Quản lý hồ sơ hoặc cố vấn nhà ở của quý vị công tác tại đâu?", + "caseManagerAgencyFormPlaceHolder": "Cơ quan", + "caseManagerAgencyValidationErrorMessage": "Hãy nhập vào một cơ quan" + }, + "contact": { + "title": "Hãy cho chúng tôi biết cách để liên lạc với người liên lạc thay thế của quý vị", + "description": "Chúng tôi sẽ chỉ sử dụng thông tin này để liên lạc với họ về đơn ghi danh của quý vị.", + "phoneNumberFormLabel": "Số điện thoại của người liên lạc", + "emailAddressFormLabel": "Địa chỉ email của người liên lạc", + "contactMailingAddressLabel": "Địa chỉ thư bưu điện của người liên lạc", + "contactMailingAddressHelperText": "Chọn một địa chỉ nơi họ có thể nhận các thông tin cập nhật và tài liệu về đơn ghi danh của quý vị" + } + }, + "household": { + "assistanceUrl": "https://exygy.com/", + "dontQualifyHeader": "Thật đáng tiếc, có vẻ như quý vị không đủ điều kiện cho danh sách nhà này.", + "dontQualifyInfo": "Vui lòng thực hiện các thay đổi nếu quý vị cho rằng mình có thể đã nhầm lẫn. Lưu ý rằng nếu quý vị giả mạo bất kỳ thông tin nào trong đơn ghi danh của mình, quý vị sẽ bị loại. Nếu thông tin quý vị đã nhập là chính xác, chúng tôi đề nghị quý vị nên kiểm tra lại trong tương lai khi có thêm các bất động sản.", + "addMembers": { + "addHouseholdMember": "+ Thêm Thành viên Hộ Gia đình", + "done": "Thêm xong thành viên", + "title": "Hãy cho chúng tôi biết về hộ gia đình của quý vị." + }, + "householdMember": "Thành viên Hộ Gia đình", + "householdMembers": "Các Thành viên Hộ Gia đình", + "liveAlone": { + "title": "Tiếp theo, chúng tôi muốn biết về những người khác sẽ sống trong căn nhà cùng quý vị", + "willLiveAlone": "Tôi sẽ sống một mình", + "liveWithOtherPeople": "Những người khác sẽ sống cùng tôi" + }, + "preferredUnit": { + "preferredUnitType": "Loại Căn nhà Ưa thích", + "title": "Kích thước căn nhà mà quý vị quan tâm là gì?", + "subTitle": "Loại căn nhà quý vị đã chọn sẽ tùy thuộc vào tình trạng sẵn có.", + "optionsLabel": "Đánh dấu tất cả các lựa chọn phù hợp:", + "options": { + "studio": "Một phòng kiểu studio", + "oneBedroom": "1 Phòng ngủ", + "twoBedroom": "2 Phòng ngủ", + "threeBedroom": "3 Phòng ngủ", + "moreThanThreeBedroom": "3 Phòng ngủ trở lên" + } + }, + "member": { + "cancelAddingThisPerson": "Hủy bỏ việc thêm người này", + "deleteThisPerson": "Xóa người này", + "dateOfBirth": "Ngày sinh", + "name": "Tên của thành viên hộ gia đình", + "haveSameAddress": "Họ có cùng địa chỉ với quý vị không?", + "whatIsTheirRelationship": "Quan hệ của người đó với quý vị là gì?", + "saveHouseholdMember": "Lưu thành viên hộ gia đình", + "subTitle": "Quý vị sẽ có cơ hội thêm nhiều thành viên hộ gia đình hơn trong màn hình tiếp theo", + "title": "Hãy cho chúng tôi biết về người này", + "updateHouseholdMember": "Cập nhật Thành viên Hộ Gia đình", + "whatReletionship": "Quan hệ của người đó với quý vị là gì", + "workInRegion": "Họ có làm việc tại không?", + "workInRegionNote": "Điều này có nghĩa là họ hiện đang làm việc tại ít nhất 75% số giờ làm việc của họ." + }, + "membersInfo": { + "title": "Trước khi thêm người khác, hãy đảm bảo rằng họ không có tên trên bất kỳ đơn ghi danh nào khác cho danh sách nhà này." + }, + "primaryApplicant": "Người nộp đơn Chính" + }, + "ada": { + "label": "Các Căn nhà Dễ tiếp cập của ADA", + "title": "Quý vị hoặc bất kỳ ai trong gia đình quý vị có cần bất kỳ tính năng trợ năng của ADA nào sau đây không?", + "subTitle": "Nếu quý vị được chọn cho một căn nhà, khu nhà sẽ làm việc để đáp ứng nhu cầu của quý vị trong khả năng tốt nhất của họ. Nếu đơn ghi danh của quý vị được chọn, hãy chuẩn bị cung cấp các tài liệu hỗ trợ từ bác sĩ của quý vị.", + "mobility": "Dành cho các cư dân Vận động Khó khăn", + "vision": "Dành cho các cư dân bị Suy giảm Thị lực", + "hearing": "Dành cho các cư dân bị Suy giảm Thính lực" + }, + "financial": { + "income": { + "title": "Hãy chuyển sang phần thu nhập.", + "instruction1": "Tính tổng thu nhập hộ gia đình (trước thuế) từ tiền lương, tiền trợ cấp và các nguồn khác từ tất cả các thành viên trong hộ gia đình.", + "instruction2": "Ngay bây giờ, quý vị chỉ cần cung cấp tổng số tiền ước tính. Tổng số tiền thực tế sẽ được tính nếu quý vị được chọn.", + "prompt": "Tổng thu nhập trước thuế của hộ gia đình của quý vị là bao nhiêu?", + "placeholder": "Tổng tất cả các nguồn thu nhập của quý vị", + "validationError": { + "title": "Thật đáng tiếc, có vẻ như quý vị không đủ điều kiện cho danh sách nhà này.", + "reason": { + "low": "Thu nhập hộ gia đình của quý vị quá thấp.", + "high": "Thu nhập hộ gia đình của quý vị quá cao." + }, + "instruction1": "Vui lòng thực hiện các thay đổi nếu quý vị cho rằng mình có thể đã nhầm lẫn. Lưu ý rằng nếu quý vị giả mạo bất kỳ thông tin nào trong đơn ghi danh của mình, quý vị sẽ bị loại.", + "instruction2": "Nếu thông tin quý vị đã nhập là chính xác, chúng tôi đề nghị quý vị nên kiểm tra lại trong tương lai khi có thêm các bất động sản." + } + }, + "vouchers": { + "title": "Quý vị hoặc bất kỳ ai trong đơn ghi danh này có nhận được bất kỳ quyền lợi nào sau đây không?", + "housingVouchers": { + "strong": "Phiếu chọn Nhà", + "text": "như Mục 8 (Section 8)" + }, + "nonTaxableIncome": { + "strong": "Thu nhập không chịu thuế", + "text": "như SSI, SSDI, các khoản tiền trợ cấp nuôi con, hoặc các khoản tiền quyền lợi bồi thường cho người lao động" + }, + "rentalSubsidies": { + "strong": "Các khoản trợ cấp tiền thuê nhà", + "text": "như VASH, HSA, HOPWA, Catholic Charities, AIDS Foundation, v.v." + } + } + }, + "preferences": { + "title": "Hộ gia đình của quý vị có thể hội đủ điều kiện cho các lựa chọn ưu tiên nhà ở sau đây.", + "preamble": "Nếu quý vị hội đủ điều kiện cho lựa chọn ưu tiên này, quý vị sẽ được xếp ở thứ hạng cao hơn.", + "selectBelow": "Nếu quý vị có một trong những lựa chọn ưu tiên nhà ở này, hãy chọn ưu tiên đó bên dưới:", + "dontWant": "Tôi không muốn lựa chọn ưu tiên này", + "stillHaveOpportunity": "Quý vị vẫn sẽ có cơ hội yêu cầu các lựa chọn ưu tiên khác.", + "youHaveClaimed": "Quý vị đã xác nhận:", + "liveWork": { + "live": { + "label": "Sống tại Ưu tiên", + "description": "Sống tại bản sao ở đây…", + "link": "http://domain.com" + }, + "work": { + "label": "Làm việc tại Ưu tiên", + "description": "Làm việc tại bản sao ở đây…", + "link": "http://domain.com" + } + }, + "displacedTenant": { + "whichHouseholdMember": "Thành viên hộ gia đình nào đang yêu cầu lựa chọn này?", + "whatAddress": "Địa chỉ mà thành viên hộ gia đình này đã chuyển khỏi là gì?" + }, + "general": { + "title": "Dựa trên thông tin quý vị đã nhập, hộ gia đình của quý vị chưa yêu cầu bất kỳ lựa chọn ưu tiên nhà ở nào.", + "preamble": "Quý vị sẽ thuộc nhóm các ứng viên chung." + } + }, + "review": { + "takeAMomentToReview": "Hãy dành một chút thời gian để xem lại thông tin của quý vị trước khi nộp đơn ghi danh.", + "sameAddressAsApplicant": "Cùng Địa chỉ với Ứng viên", + "noAdditionalMembers": "Không có thành viên gia đình bổ sung", + "householdDetails": "Thông tin chi tiết về Hộ gia đình", + "voucherOrSubsidy": "Phiếu chọn Nhà hoặc Trợ cấp Tiền thuê nhà", + "lastChanceToEdit": "Đây là cơ hội cuối cùng để quý vị chỉnh sửa trước khi nộp đơn.", + "terms": { + "title": "Các điều khoản", + "text": "Đơn ghi danh này phải được gửi trước %{applicationDueDate}.

Người nộp đơn sẽ được nhân viên đại diện liên lạc theo thứ tự xếp hạng rút thăm và thứ tự lựa chọn ưu tiên cho đến khi hết chỗ trống.

Tất cả thông tin quý vị đã cung cấp sẽ được xác nhận và tình trạng hội đủ điều kiện quý vị được xác nhận. Đơn ghi danh của quý vị sẽ bị loại khỏi cuộc rút thăm nếu quý vị có bất kỳ tuyên bố sai sự thật nào, hoặc nếu bất kỳ thành viên nào trong gia đình có tên xuất hiện cho nhiều hơn một đơn ghi danh cho danh sách này. Nếu chúng tôi không thể xác nhận lựa chọn ưu tiên rút thăm nhà ở mà quý vị đã yêu cầu, quý vị sẽ không nhận được lựa chọn ưu tiên đó nhưng sẽ không bị phạt.

Tất cả thông tin quý vị đã cung cấp sẽ được xác nhận và tình trạng hội đủ điều kiện quý vị được xác nhận. Đơn ghi danh của quý vị sẽ bị loại khỏi danh sách chờ nếu quý vị có bất kỳ tuyên bố sai sự thật nào, hoặc nếu bất kỳ thành viên nào trong gia đình có tên xuất hiện cho nhiều đơn hơn một đơn ghi danh cho danh sách nhà này. Nếu chúng tôi không thể xác nhận lựa chọn ưu tiên nhà ở mà quý vị đã yêu cầu, quý vị sẽ không nhận được lựa chọn ưu tiên đó nhưng sẽ không bị phạt.

Nếu đơn ghi danh của quý vị được lựa chọn từ cuộc rút thăm, hãy chuẩn bị để điền vào đơn ghi danh gồm các thông tin chi tiết hơn và cung cấp các tài liệu hỗ trợ cần thiết trong vòng 5 ngày làm việc kể từ khi được liên lạc. Để biết thêm thông tin, vui lòng liên lạc với cơ quan phát triển nhà hoặc nhân viên đại diện được đăng trong danh sách. Việc hoàn thành đơn ghi danh rút thăm này không giúp quý vị có nhà ở hoặc cho biết quý vị hội đủ điều kiện nhận nhà. Tất cả những người nộp đơn sẽ được sàng lọc như đã nêu trong Tiêu chí Lựa chọn Cư dân của bất động sản.

Quý vị không thể thay đổi đơn ghi danh trực tuyến của mình sau khi đã gửi.

Tôi cam đoan rằng những điều đã khai ở trên là đúng và chính xác, đồng thời xác nhận rằng bất kỳ tuyên bố sai sự thật do gian lận hoặc cẩu thả nào trên đơn ghi danh này sẽ khiến tôi bị loại khỏi cuộc rút thăm.

", + "confirmCheckboxText": "Tôi đồng ý và hiểu rằng tôi không thể thay đổi bất cứ thông tin nào sau khi tôi nộp đơn." + }, + "demographics": { + "title": "Hãy giúp chúng tôi đảm bảo rằng chúng tôi đang đáp ứng được mục tiêu của mình là phục vụ tất cả mọi người.", + "subTitle": "Những câu hỏi này là không bắt buộc và sẽ không ảnh hưởng đến tính hội đủ điều kiện của quý vị đối với việc nhận nhà ở. Những câu trả lời của quý vị sẽ được giữ kín.", + "ethnicityLabel": "Điều nào dưới đây mô tả đúng nhất về dân tộc của quý vị?", + "raceLabel": "Điều nào dưới đây mô tả đúng nhất về chủng tộc của quý vị?", + "genderLabel": "Vui lòng cho biết giới tính của quý vị?", + "genderInfo": "Chọn một lựa chọn mô tả bản dạng giới tính hiện tại của quý vị chính xác nhất.", + "sexualOrientationLabel": "Quý vị mô tả thiên hướng tình dục hoặc nhận dạng giới của mình như thế nào?", + "howDidYouHearLabel": "Quý vị nghe về danh sách nhà này từ đâu?", + "ethnicityOptions": { + "hispanicLatino": "Gốc Tây Ban Nha / La-tinh", + "notHispanicLatino": "Không phải người gốc Tây Ban Nha / La tinh" + }, + "raceOptions": { + "americanIndianAlaskanNative": "Thổ dân Mỹ / Bản địa Alaska", + "asian": "Người Châu Á", + "blackAfricanAmerican": "Da đen / Mỹ gốc Phi", + "nativeHawaiianOtherPacificIslander": "Thổ dân Hawaii / Gốc Đảo Thái Bình Dương khác", + "white": "Người Da Trắng", + "americanIndianAlaskanNativeAndBlackAfricanAmerican": "Thổ dân Mỹ/Bản địa Alaska và Người Da đen hoặc Mỹ gốc Phi", + "americanIndianAlaskanNativeAndWhite": "Thổ dân Mỹ/Bản địa Alaska và Người Da Trắng", + "asianAndWhite": "Người Châu Á và Người Da Trắng", + "blackAfricanAmericanAndWhite": "Người Da đen/ Mỹ gốc Phi và Người Da Trắng", + "otherMutliracial": "Khác / Đa chủng tộc" + }, + "genderOptions": { + "female": "Nữ", + "male": "Nam", + "genderqueerGenderNon-Binary": "Phi giới tính / Phi nhị nguyên Giới", + "transFemale": "Nữ chuyển giới", + "transMale": "Nam chuyển giới", + "notListed": "Không được Liệt kê" + }, + "sexualOrientationOptions": { + "bisexual": "Song tính luyến ái", + "gayLesbianSameGenderLoving": "Đồng tính nam / Đồng tính nữ / Yêu Đồng Giới", + "questioningUnsure": "Chưa rõ giới tính / Không chắc về giới tính", + "straightHeterosexual": "Thẳng / Dị tính luyến ái", + "notListed": "Không được Liệt kê" + }, + "howDidYouHearOptions": { + "alamedaCountyHCDWebsite": "Trang web HCD của Quận Alameda", + "developerWebsite": "Trang web của Cơ quan phát triển nhà", + "flyer": "Tờ rơi", + "emailAlert": "Thông báo qua Email", + "friend": "Bạn", + "housingCounselor": "Cố vấn Nhà ở", + "radioAd": "Quảng cáo trên Radio", + "busAd": "Quảng cáo trên Xe buýt", + "other": "Khác" + } + }, + "confirmation": { + "title": "Cảm ơn. Chúng tôi đã nhận được đơn ghi danh của quý vị cho ", + "lotteryNumber": "Đây là số xác nhận đơn ghi danh của quý vị", + "pleaseWriteNumber": "Vui lòng ghi lại số đơn ghi danh của quý vị và giữ nó ở một nơi an toàn. Chúng tôi cũng đã gửi số này qua email cho quý vị nếu quý vị cung cấp địa chỉ email.", + "whatExpectTitle": "Điều gì sẽ xảy ra tiếp theo", + "whatExpectFirstParagraph": { + "held": "Buổi rút thăm sẽ được tổ chức vào ", + "attend": " Quý vị không cần phải tham dự buổi rút thăm nhà ở. Kết quả sẽ được đăng ", + "listing": "trên danh sách nhà này. ", + "refer": "Vui lòng tham khảo danh sách nhà để biết ngày kết quả rút thăm." + }, + "whatExpectSecondparagraph": "Các ứng viên sẽ được liên lạc theo thứ tự cho đến khi hết chỗ trống. Nếu đơn ghi danh của quý vị được chọn, hãy chuẩn bị để điền vào mẫu đơn chi tiết hơn và cung cấp các tài liệu hỗ trợ cần thiết.", + "doNotSubmitTitle": "Không gửi một đơn ghi danh khác cho danh sách này.", + "needToUpdate": "Nếu quý vị cần cập nhật thông tin trên đơn ghi danh của mình, vui lòng không làm đơn ghi danh lại. Hãy liên lạc với nhân viên đại diện nếu quý vị không nhận được email xác nhận.", + "createAccountTitle": "Quý vị có muốn tạo một tài khoản không?", + "createAccountParagraph": "Việc tạo tài khoản sẽ lưu thông tin của quý vị cho các đơn ghi danh sau này và quý vị có thể kiểm tra tình trạng của đơn ghi danh này bất cứ lúc nào.", + "imdone": "Không, cảm ơn, tôi đã làm xong.", + "browseMore": "Xem nhiều danh sách nhà hơn", + "print": "Xem đơn ghi danh đã nộp và in một bản sao." + } + }, + "confirmation": { + "viewOriginalListing": "Xem danh sách nhà ban đầu", + "informationSubmittedTitle": "Đây là thông tin quý vị đã nộp.", + "submitted": "Đã nộp: ", + "lotteryNumber": "Số xác nhận của quý vị", + "preferences": "Các lựa chọn ưu tiên", + "generalLottery": "Dựa trên thông tin quý vị đã nhập, hộ gia đình của quý vị chưa yêu cầu bất kỳ lựa chọn ưu tiên rút thăm nhà ở nào. Quý vị sẽ thuộc nhóm các ứng viên rút thăm chung.", + "printCopy": "In một bản sao để quý vị lưu hồ sơ" + }, + "timeout": { + "text": "Để bảo vệ danh tính của quý vị, phiên truy cập của quý vị sẽ hết hạn sau một phút do không có hoạt động. Quý vị sẽ mất mọi thông tin chưa được lưu nếu quý vị lựa chọn không trả lời.", + "action": "Tiếp tục làm đơn", + "afterMessage": "Chúng tôi quan tâm đến sự bảo mật của quý vị. Chúng tôi đã chấm dứt phiên truy cập của quý vị do không có hoạt động nào. Vui lòng bắt đầu làm một đơn ghi danh mới để tiếp tục." + }, + "continueApplication": "Tiếp tục làm Đơn ghi danh", + "applicationNeverSubmitted": "Đơn ghi danh của quý vị chưa bao giờ được gửi", + "deleteThisApplication": "Xóa đơn ghi danh này?", + "deleteApplicationDescription": "Xóa đơn ghi danh này có nghĩa là quý vị sẽ mất tất cả thông tin mà quý vị đã nhập.", + "edited": "Đã chỉnh sửa", + "status": "Tình Trạng", + "statuses": { + "inProgress": "Đang Diễn ra", + "neverSubmitted": "Chưa bao giờ được Gửi", + "submitted": "Đã gửi" + }, + "viewApplication": "Xem Đơn ghi danh", + "yourLotteryNumber": "Số xác nhận của quý vị là" + }, + "authentication": { + "timeout": { + "text": "Để bảo vệ danh tính của quý vị, phiên truy cập của quý vị sẽ hết hạn sau một phút do không có hoạt động. Quý vị sẽ mất mọi thông tin chưa được lưu và bị đăng xuất nếu quý vị lựa chọn không trả lời.", + "action": "Duy trì đăng nhập", + "signOutMessage": "Chúng tôi quan tâm đến sự bảo mật của quý vị. Chúng tôi đã đăng xuất tài khoản của quý vị do không có hoạt động nào. Vui lòng đăng nhập để tiếp tục." + }, + "signIn": { + "error": "Đã xảy ra lỗi khi quý vị đăng nhập", + "errorGenericMessage": "Vui lòng thử lại hoặc liên lạc với bộ phận hỗ trợ để được trợ giúp.", + "success": "Chào mừng quý vị trở lại, %{name}!" + } + }, + "config": { + "routePrefix": "vi" + }, + "errors": { + "alert": { + "badRequest": "Ối! Có vẻ như đã có lỗi xảy ra. Vui lòng thử lại. \n\nLiên lạc với sfhousing.info@sfgov.org nếu quý vị vẫn gặp các sự cố.", + "timeoutPleaseTryAgain": "Ối! Có vẻ như đã có lỗi xảy ra. Vui lòng thử lại." + }, + "notFound": { + "title": "Không Tìm thấy Trang", + "message": "Rất tiếc, chúng tôi dường như không thể tìm thấy trang quý vị đang tìm kiếm. Hãy thử quay lại trang trước hoặc nhấp vào bên dưới để duyệt các danh sách nhà." + }, + "agreeError": "Quý vị phải đồng ý với các điều khoản để tiếp tục", + "firstNameError": "Vui lòng nhập Tên", + "lastNameError": "Vui lòng nhập Họ", + "dateOfBirthError": "Vui lòng nhập Ngày sinh hợp lệ", + "emailAddressError": "Vui lòng nhập địa chỉ email", + "phoneNumberError": "Vui lòng nhập số điện thoại", + "phoneNumberTypeError": "Vui lòng nhập kiểu số điện thoại", + "streetError": "Vui lòng nhập địa chỉ", + "cityError": "Vui lòng nhập thành phố", + "stateError": "Vui lòng nhập tiểu bang", + "zipCodeError": "Vui lòng nhập số zipcode", + "errorsToResolve": "Quý vị cần giải quyết những lỗi này trước khi chuyển sang bước tiếp.", + "numberError": "Vui lòng nhập một số hợp lệ lớn hơn 0.", + "selectAllThatApply": "Vui lòng chọn tất cả các câu trả lời phù hợp", + "selectAtLeastOne": "Vui lòng chọn ít nhất một lựa chọn.", + "selectAnOption": "Vui lòng chọn một lựa chọn.", + "selectOption": "Vui lòng chọn một trong các lựa chọn ở trên.", + "householdTooBig": "Quy mô hộ gia đình của quý vị quá lớn.", + "householdTooSmall": "Quy mô hộ gia đình của quý vị quá nhỏ." + }, + "footer": { + "contact": "Liên lạc", + "disclaimer": "Tuyên bố miễn trách nhiệm", + "forGeneralQuestions": "Đối với các thắc mắc chung về chương trình, quý vị có thể gọi cho chúng tôi theo số 000-000-0000.", + "giveFeedback": "Đưa ra Phản hồi", + "privacyPolicy": "Chính sách Quyền Riêng tư", + "copyright": "Demonstration County © 2020 • Giữ Mọi Bản quyền" + }, + "housingCounselors": { + "subtitle": "Nói chuyện với một cố vấn gia cư địa phương cụ thể cho nhu cầu của quý vị.", + "languageServices": "Các Dịch Vụ Ngôn Ngữ: ", + "call": "Hãy gọi %{number}", + "visitWebsite": "Truy cập %{name}" + }, + "leasingAgent": { + "contact": "Liên lạc với Nhân viên Đại diện cho Thuê nhà", + "dueToHighCallVolume": "Do có nhiều cuộc gọi đến, quý vị có thể nghe thấy một lời nhắn.", + "officeHours": "Giờ Làm việc" + }, + "listings": { + "additionalInformation": "Thông tin Bổ sung", + "allUnits": "Tất cả các Căn nhà", + "allUnitsReservedFor": "Tất cả các căn nhà được dành cho %{type}", + "applicationDeadline": "Hạn nộp Đơn ghi danh", + "applicationFCFS": "Ai Nộp đơn Trước Được Nhận trước", + "applicationFee": "Lệ phí Ghi danh", + "applicationFeeDueAt": "Đến hạn Phỏng vấn", + "applicationOpenPeriod": "Bắt đầu nhận đơn Ghi danh", + "applicationPerApplicantAgeDescription": "mỗi ứng viên từ 18 tuổi trở lên", + "applicationsClosed": "Ngừng nhận Đơn ghi danh", + "apply": { + "applicationsMustBeReceivedByDeadline": "Các đơn ghi danh phải được nhận trước thời hạn và không cân nhắc ngày trên dấu bưu điện.", + "applicationWillBeAvailableOn": "Đơn ghi danh sẽ có sẵn để tải xuống và tới nhận vào %{openDate}", + "applyOnline": "Ghi danh Trực tuyến", + "downloadApplication": "Tải xuống Đơn ghi danh", + "dropOffApplication": "Thả Đơn ghi danh", + "dropOffApplicationOrMail": "Thả Đơn ghi danh hoặc Gửi qua đường bưu điện US Mail", + "getAPaperApplication": "Lấy Giấy ghi danh", + "howToApply": "Cách Ghi danh", + "paperApplicationsMustBeMailed": "Mẫu đơn ghi danh Giấy phải được gửi thư bưu điện Hoa Kỳ và không thể nộp trực tiếp.", + "pickUpAnApplication": "Nhận đơn ghi danh", + "postmarkedApplicationsMustBeReceivedByDate": "Đơn ghi danh phải được nhận trước thời hạn. Nếu gửi qua đường bưu điện U.S Mail, đơn ghi danh phải được đóng dấu bưu điện trước %{applicationDueDate} và nhận qua thư trước ngày %{postmarkReceiveByDate}. Các đơn ghi danh nhận được sau %{postmarkReceiveByDate} qua đường bưu điện sẽ không được chấp nhận ngay cả khi chúng được đóng dấu bưu điện trước %{applicationDueDate}. %{developer} không chịu trách nhiệm về thư bị thất lạc hoặc bị trễ.", + "sendByUsMail": "Gửi Đơn ghi danh qua đường bưu điện US Mail", + "submitAPaperApplication": "Gửi Giấy ghi danh" + }, + "availableAndWaitlist": "Các Căn nhà Còn trống & Danh sách chờ đang Mở", + "availableUnits": "Các Căn nhà Còn trống", + "availableUnitsAndWaitlist": "Các căn nhà còn trống và danh sách chờ", + "availableUnitsAndWaitlistDesc": "Sau khi các ứng viên lấy hết các căn nhà còn trống, các ứng viên bổ sung sẽ được đưa vào danh sách chờ cho %{number} căn nhà", + "bath": "tắm", + "browseListings": "Duyệt các Danh sách nhà", + "closedListings": "Các Danh sách nhà đã Đóng", + "comingSoon": "Sắp có", + "confirmedPreferenceList": "Danh sách nhà %{preference} Đã xác nhận", + "creditHistory": "Lịch sử Tín dụng", + "criminalBackground": "Lý lịch Tội phạm", + "depositOrMonthsRent": "hoặc tiền thuê nhà một tháng", + "depositMayBeHigherForLowerCredit": "Có thể cao hơn nếu điểm tín dụng thấp hơn", + "developmentalDisabilities": "Những người bị chậm phát triển", + "developmentalDisabilitiesDescription": "Một số căn nhà trong tòa nhà này được dành cho những người bị chậm phát triển. Vui lòng truy cập housingchoices.org để biết thông tin về điều kiện hội đủ, các yêu cầu, cách nhận đơn ghi danh và để có các câu trả lời cho bất kỳ câu hỏi nào khác mà quý vị có thể có về quy trình này.", + "enterLotteryForWaitlist": "Gửi đơn ghi danh một suất mở trong danh sách chờ cho %{units} căn nhà.", + "forIncomeCalculations": "Để tính thu nhập, quy mô hộ gia đình bao gồm tất cả mọi người (mọi lứa tuổi) sống trong căn nhà.", + "forIncomeCalculationsBMR": "Tính thu nhập dựa trên loại căn nhà", + "hideClosedListings": "Ẩn Các Danh sách đã Đóng", + "householdMaximumIncome": "Thu nhập Tối đa của Hộ gia đình", + "householdSize": "Quy mô Hộ Gia đình", + "importantProgramRules": "Các Quy tắc Quan trọng của Chương trình", + "includesPriorityUnits": "Bao gồm các Căn nhà Ưu tiên cho %{priorities}", + "lotteryResults": { + "completeResultsWillBePosted": "Toàn bộ kết quả quay xổ số sẽ sớm được đăng.", + "downloadResults": "Tải xuống Kết quả", + "header": "Kết quả Xổ số" + }, + "maxIncomeMonth": "Thu nhập Tối đa / Tháng", + "maxIncomeYear": "Thu nhập Tối đa / Năm", + "moreBuildingSelectionCriteria": "Tìm hiểu thêm về Tiêu chí Lựa chọn Tòa nhà", + "noAvailableUnits": "Không có căn nhà nào còn trống tại thời điểm này.", + "noOpenListings": "Không có danh sách nhà nào hiện đang mở nhận đơn ghi danh.", + "occupancyDescriptionAllSro": "Số người ở của tòa nhà này giới hạn 1 người mỗi căn.", + "occupancyDescriptionNoSro": "Giới hạn số người ở cho tòa nhà này dựa trên loại căn nhà.", + "occupancyDescriptionSomeSro": "Số người ở của tòa nhà này thay đổi tùy theo loại căn nhà. SRO được giới hạn cho 1 người mỗi căn, bất kể độ tuổi. Đối với tất cả các căn nhà khác, giới hạn số người ở không tính trẻ em dưới 6 tuổi.", + "openHouseEvent": { + "header": "Gặp gỡ Cộng đồng" + }, + "percentAMIUnit": "%{percent}% Căn nhà AMI", + "priorityUnits": "Các Căn nhà Ưu tiên", + "priorityUnitsDescription": "Tòa nhà này có các căn nhà ở được dành riêng cho quý vị nếu bất kỳ điều nào sau đây đúng với quý vị hoặc một người nào đó trong hộ gia đình của quý vị:", + "publicLottery": { + "header": "Xổ số Công cộng" + }, + "remainingUnitsAfterPreferenceConsideration": "Sau khi tất cả những người nắm giữ phiếu chọn ưu tiên đã được xem xét, bất kỳ căn nhà còn lại sẽ dành cho các ứng viên hội đủ điều kiện khác.", + "rentalHistory": "Lịch sử Thuê nhà", + "requiredDocuments": "Các tài liệu Cần thiết", + "reservedCommunityBuilding": "%{type} Tòa nhà", + "reservedFor": "Được dành riêng cho %{type}", + "reservedTypePlural": { + "family": "các gia đình", + "senior": "người cao niên", + "veteran": "cựu chiến binh" + }, + "reservedUnits": "Các căn nhà Được dành riêng", + "reservedUnitsDescription": "Để hội đủ điều kiện được nhận các căn nhà này, một trong những điều sau đây phải đúng với quý vị hoặc một người nào đó trong hộ gia đình của quý vị:", + "reservedUnitsForWhoAre": "Dành riêng cho %{communityType} những người %{reservedType}", + "sections": { + "additionalFees": "Các Loại Phí Bổ sung", + "eligibilityTitle": "Tình trạng Hội đủ Điều kiện", + "eligibilitySubtitle": "Thu nhập, số người ở, lựa chọn ưu tiên và các khoản trợ cấp", + "rentalAssistanceTitle": "Hỗ trợ Tiền thuê nhà", + "rentalAssistanceSubtitle": "Chương trình Phiếu Chọn Nhà, Mục 8 (Section 8) và các chương trình hỗ trợ tiền thuê nhà hợp lệ khác sẽ được cân nhắc cho toà nhà này. Trong trường hợp các khoản trợ cấp tiền thuê nhà hợp lệ, khoản thu nhập tối thiểu bắt buộc sẽ dựa trên phần tiền thuê mà người thuê nhà trả sau khi sử dụng khoản tiền trợ cấp.", + "housingPreferencesTitle": "Lựa chọn Ưu tiên Nhà ở", + "housingPreferencesSubtitle": "Những người nắm giữ phiếu chọn ưu tiên sẽ được xếp ở thứ hạng cao nhất.", + "additionalEligibilityTitle": "Các Quy tắc Bổ sung về Điều kiện hội đủ", + "additionalEligibilitySubtitle": "Các ứng viên cũng phải hội đủ điều kiện theo các quy tắc của tòa nhà.", + "processTitle": "Quy trình", + "processSubtitle": "Những ngày quan trọng và thông tin liên lạc", + "featuresTitle": "Các tính năng", + "featuresSubtitle": "Các tiện nghi, thông tin chi tiết căn nhà và các loại phí bổ sung", + "neighborhoodTitle": "Khu phố", + "neighborhoodSubtitle": "Vị trí và phương tiện di chuyển", + "additionalInformationTitle": "Thông tin Bổ sung", + "additionalInformationSubtitle": "Các tài liệu cần thiết và tiêu chí lựa chọn" + }, + "seeMaximumIncomeInformation": "Xem Thông tin Thu nhập Tối đa", + "seePreferenceInformation": "Xem Thông tin về Lựa chọn Ưu tiên", + "seeUnitInformation": "Xem Thông tin về Căn nhà", + "showClosedListings": "Hiển thị Các Danh sách đã Đóng", + "singleRoomOccupancy": "Số người ở Phòng đơn", + "singleRoomOccupancyDescription": "Toà nhà này cung cấp các phòng đơn chỉ dành cho một người. Những người thuê nhà có thể dùng chung phòng tắm và đôi khi là các tiện nghi ở nhà bếp.", + "unitTypes": { + "oneBdrm": "1 Phòng ngủ", + "twoBdrm": "2 Phòng ngủ", + "threeBdrm": "3 Phòng ngủ", + "studio": "Một phòng kiểu studio", + "SRO": "Số người ở Phòng đơn" + }, + "unitsAreFor": "Các căn nhà này được dành cho %{type}.", + "unitsHaveAccessibilityFeaturesFor": "Các căn nhà này có các tính năng trợ giúp cho những người bị %{type}.", + "upcomingLotteries": { + "hide": "Ẩn Các Danh sách đã Đóng", + "noResults": "Không có danh sách đã đóng đối với các cuộc rút thăm sắp tới tại thời điểm này.", + "show": "Hiển thị Các Danh sách đã Đóng", + "title": "Các Danh sách nhà đã Đóng" + }, + "waitlist": { + "closed": "Danh sách chờ Đã đóng", + "label": "Danh sách chờ", + "isOpen": "Danh sách chờ đã mở", + "currentSize": "Quy mô Danh sách chờ Hiện tại", + "finalSize": "Quy mô Danh sách chờ Cuối cùng", + "open": "Danh sách chờ Đang mở", + "openSlots": "Các suất trong Danh sách chờ Đang mở", + "submitAnApplication": "Sau khi các ứng viên được xếp hạng đã lấy tất cả các căn nhà còn trống, những ứng viên được xếp hạng còn lại sẽ được đưa vào danh sách chờ cho cùng các căn nhà đó.", + "submitForWaitlist": "Gửi đơn ghi danh một suất mở trong danh sách chờ.", + "unitsAndWaitlist": "Các Căn nhà Còn trống và Danh sách Chờ" + }, + "cc&r": "Giao ước, Điều kiện và Hạn chế (CC&R's)", + "cc&rDescription": "CC&R's giải thích các quy tắc của hiệp hội chủ nhà và hạn chế cách quý vị có thể sửa chữa bất động sản.", + "downloadPdf": "Tải xuống file PDF", + "rePricing": "Định giá lại", + "eligibilityNotebook": "Notebook hội đủ điều kiện", + "processInfo": "Thông tin về Quy trình", + "featuresCards": "Tính năng Thẻ", + "neighborhoodBuildings": "Các Tòa nhà Lân cận", + "additionalInformationEnvelope": "Phong bì Thông tin Bổ sung" + }, + "lottery": { + "applicationsThatQualifyForPreference": "Các đơn ghi danh đủ điều kiện cho lựa chọn ưu tiên này sẽ được ưu tiên cao hơn.", + "viewPreferenceList": "Xem Danh sách Lựa chọn Ưu tiên" + }, + "nav": { + "accountSettings": "Thiết lập Tài khoản", + "browseProperties": "Duyệt các Bất động sản", + "getAssistance": "Nhận Hỗ trợ", + "getFeedback": "Đây là bản xem trước của trang web mới của chúng tôi. Chúng tôi chỉ mới bắt đầu. Chúng tôi rất mong nhận được ý kiến phản hồi của quý vị.", + "listings": "Các danh sách nhà", + "properties": "Các bất động sản", + "applications": "Các đơn Ghi danh", + "myAccount": "Tài khoản của tôi", + "myApplications": "Đơn ghi danh của tôi", + "myDashboard": "Bảng Thông tin của tôi", + "mySettings": "Thiết lập của tôi", + "signIn": "Đăng nhập", + "signOut": "Đăng Xuất", + "siteTitle": "Cổng thông tin về Gia cư", + "skip": "Chuyển đến nội dung chính" + }, + "pageTitle": { + "additionalResources": "Thêm nhiều Cơ hội Nhà ở Hơn", + "disclaimer": "Tuyên bố miễn trách nhiệm Chứng thực", + "housingCounselors": "Cố vấn Nhà ở", + "getAssistance": "Nhận Hỗ trợ", + "rentalListings": "Xem Thông tin Thuê nhà", + "rent": "Thuê nhà giá phải chăng", + "privacy": "Chính sách Quyền Riêng tư", + "welcomeEnglish": "Chào mừng", + "welcomeSpanish": "Bienvenido", + "welcomeVietnamese": "Tiếng Việt" + }, + "pageDescription": { + "welcome": "Tìm kiếm và ghi danh nhà ở giá cả phải chăng trên Cổng thông tin về Gia cư tại %{regionName}", + "listing": "Ghi danh nhà ở giá phải chăng tại %{listingNam} ở %{regionName}, được xây dựng với sự hợp tác của Exygy." + }, + "region": { + "name": "Địa phương" + }, + "states": { + "AL": "Alabama", + "AK": "Alaska", + "AZ": "Arizona", + "AR": "Arkansas", + "CA": "California", + "CO": "Colorado", + "CT": "Connecticut", + "DE": "Delaware", + "DC": "District Of Columbia", + "FL": "Florida", + "GA": "Georgia", + "HI": "Hawaii", + "ID": "Idaho", + "IL": "Illinois", + "IN": "Indiana", + "IA": "Iowa", + "KS": "Kansas", + "KY": "Kentucky", + "LA": "Louisiana", + "ME": "Maine", + "MD": "Maryland", + "MA": "Massachusetts", + "MI": "Michigan", + "MN": "Minnesota", + "MS": "Mississippi", + "MO": "Missouri", + "MT": "Montana", + "NE": "Nebraska", + "NV": "Nevada", + "NH": "New Hampshire", + "NJ": "New Jersey", + "NM": "New Mexico", + "NY": "New York", + "NC": "North Carolina", + "ND": "North Dakota", + "OH": "Ohio", + "OK": "Oklahoma", + "OR": "Oregon", + "PA": "Pennsylvania", + "RI": "Rhode Island", + "SC": "South Carolina", + "SD": "South Dakota", + "TN": "Tennessee", + "TX": "Texas", + "UT": "Utah", + "VT": "Vermont", + "VA": "Virginia", + "WA": "Washington", + "WV": "West Virginia", + "WI": "Wisconsin", + "WY": "Wyoming" + }, + "t": { + "additionalPhone": "Điện thoại Bổ sung", + "area": "diện tích", + "areYouStillWorking": "Quý vị có vẫn đang làm việc hay không?", + "accessibility": "Phù hợp với người khuyết tật", + "availability": "Tình trạng sẵn có", + "back": "Quay lại", + "built": "Xây dựng", + "call": "Gọi điện", + "cancel": "Hủy bỏ", + "confirm": "Xác nhận", + "day": "Ngày", + "delete": "Xóa", + "deposit": "Đặt cọc", + "edit": "Hiệu đính", + "email": "Email", + "emailAddressPlaceHolder": "you@myemail.com", + "floor": "sàn", + "floors": "các sàn", + "getDirections": "Lấy hướng dẫn chỉ đường", + "household": "Hộ Gia đình", + "income": "Thu nhập", + "letter": "Chữ cái", + "less": "Ít hơn", + "loginIsRequired": "Yêu cầu đăng nhập để xem trang này.", + "menu": "Trình đơn", + "minimumIncome": "Thu nhập Tối thiểu", + "month": "Tháng", + "more": "Nhiều hơn", + "name": "Họ Tên", + "neighborhood": "Khu phố", + "next": "Tiếp theo", + "no": "Không", + "none": "Không", + "noneFound": "Không tìm thấy.", + "occupancy": "Số người cư ngụ", + "or": "hoặc", + "people": "người", + "person": "người", + "perMonth": "mỗi tháng", + "perYear": "mỗi năm", + "petsPolicy": "Chính sách đối với Vật nuôi", + "phone": "Điện thoại", + "phoneNumberPlaceholder": "(555) 555-5555", + "pleaseSelectOne": "Vui lòng chọn một.", + "preferences": "Các lựa chọn ưu tiên", + "propertyAmenities": "Các tiện ích của Bất động sản", + "range": "%{from} đến %{to}", + "readLess": "đọc ít hơn", + "readMore": "đọc nhiều hơn", + "rent": "Thuê", + "review": "Xem xét", + "seeDetails": "Xem Chi tiết", + "seeListing": "Xem Danh sách", + "selectOne": "Chọn Một", + "showLess": "hiển thị ít hơn", + "showMore": "hiển thị nhiều hơn", + "skipToMainContent": "Chuyển đến nội dung chính", + "smokingPolicy": "Chính sách Hút thuốc", + "sqFeet": "feet vuông", + "squareFeet": "feet vuông", + "submit": "Gửi", + "text": "Dạng chữ", + "unit": "căn nhà", + "units": "căn nhà", + "unitAmenities": "Các tiện ích của Căn nhà", + "unitFeatures": "Các tính năng của Căn nhà", + "unitType": "Loại Căn nhà", + "viewMap": "Xem Bản đồ", + "viewOnMap": "Xem trên Bản đồ", + "year": "Năm", + "yes": "Có", + "you": "Quý vị" + }, + "welcome": { + "allApplicationClosed": "Hiện đang không nhận tất cả các đơn ghi danh, nhưng quý vị có thể xem danh sách đã đóng.", + "seeRentalListings": "Xem Thông tin Thuê nhà", + "title": "Ghi danh nhà ở giá phải chăng tại", + "seeMoreOpportunities": "Xem thêm cơ hội thuê nhà và sở hữu nhà ở", + "viewAdditionalHousing": "Xem Các Cơ hội Nhà ở và các Nguồn Hỗ trợ Bổ sung" + }, + "whatToExpect": { + "label": "Những điều Sẽ xảy ra", + "applicantsWillBeContacted": "Các ứng viên sẽ được nhân viên đại diện bất động sản liên lạc theo thứ tự xếp hạng cho đến khi hết chỗ trống.", + "allInfoWillBeVerified": "Tất cả thông tin quý vị đã cung cấp sẽ được xác nhận và xác nhận tình trạng điều kiện hội đủ của quý vị. Đơn ghi danh của quý vị sẽ bị xóa khỏi danh sách chờ nếu quý vị có bất kỳ tuyên bố sai sự thật nào. Nếu chúng tôi không thể xác nhận lựa chọn ưu tiên nhà ở mà quý vị đã yêu cầu, quý vị sẽ không nhận được lựa chọn ưu tiên đó nhưng sẽ không bị phạt.", + "bePreparedIfChosen": "Nếu đơn ghi danh của quý vị được chọn, hãy chuẩn bị để điền vào mẫu đơn chi tiết hơn và cung cấp các tài liệu hỗ trợ cần thiết." + } +} diff --git a/ui-components/src/locales/zh.json b/ui-components/src/locales/zh.json index 16944e1288..143691b4e1 100644 --- a/ui-components/src/locales/zh.json +++ b/ui-components/src/locales/zh.json @@ -1,746 +1,746 @@ -{ - "account": { - "accountSettings": "帳戶設定", - "accountSettingsSubtitle": "帳戶設定、電郵和密碼", - "createAccount": "建立帳戶", - "haveAnAccount": "已開立帳戶?", - "myApplications": "我的申請", - "myApplicationsSubtitle": "查看您已申請物業的抽簽日期和上市名單" - }, - "application": { - "form": { - "general": { - "saveAndReturn": "儲存並返回檢視", - "saveAndFinishLater": "儲存並於稍後完成" - }, - "options": { - "relationship": { - "spouse": "配偶", - "registeredDomesticPartner": "已註冊的同居伴侶", - "parent": "父母", - "child": "子女", - "sibling": "兄弟姐妹", - "cousin": "堂/表兄弟姐妹", - "aunt": "伯/嬸/姑/姨/舅母", - "uncle": "伯/叔/姑/姨/舅父", - "nephew": "侄子/外甥", - "niece": "侄女/外甥女", - "grandparent": "祖父母/外祖父母", - "greatGrandparent": "曾祖父母/外曾祖父母", - "inLaw": "姻親", - "friend": "朋友", - "other": "其他" - } - } - }, - "chooseLanguage": { - "letsGetStarted": "我們來展開申請程序", - "chooseYourLanguage": "選擇您使用的語言", - "signInSaveTime": "登入網站從上次申請的詳情開始,這可節省您的時間,並讓您隨時查看這次申請的進展情況。" - }, - "autofill": { - "saveTime": "使用上次申請中的詳細資料可節省時間", - "prefillYourApplication": "我們只要將以下詳細資料預先填入您的申請,您就可隨時隨地進行更新。", - "start": "開始使用這些詳細資料", - "reset": "重設並開始重新整理" - }, - "start": { - "whatToExpect": { - "title": "這次申請預期事項。", - "info1": "首先,我們會詢問關於您本人以及您打算與之同住者的資料。接着,我們會詢問您的收入。最後,我們會了解您是否符合資格獲得任何可負擔房屋的抽籤優先權。", - "info2": "請注意,每次上市名單公佈時,每個家庭成員只能在一個申請表中出現一次。", - "info3": "任何不實陳述都會導致申請被取消。" - } - }, - "name": { - "title": "您叫什麼名字?", - "yourName": "您的姓名", - "firstName": "名字", - "middleNameOptional": "中間名(選填)", - "lastName": "姓氏", - "yourDateOfBirth": "您的出生日期", - "yourEmailAddress": "電郵地址", - "emailPrivacy": "我們只會為申請事宜使用您的電郵地址與您聯絡。", - "noEmailAddress": "我沒有電郵地址" - }, - "contact": { - "title": "%{firstName},謝謝您。現在我們需要知道如何聯絡您。", - "yourPhoneNumber": "您的電話號碼", - "phoneNumberTypes": { - "prompt": "這是哪類電話號碼?", - "work": "工作", - "home": "住家", - "cell": "手機" - }, - "noPhoneNumber": "我沒有電話號碼", - "additionalPhoneNumber": "我還有另一個電話號碼", - "address": "地址", - "addressWhereYouCurrentlyLive": "我們需要您目前居住的地址。如果您無家可歸,請填寫收容所地址或您所待地點附近的地址。", - "streetAddress": "街道地址", - "apt": "公寓或單位號碼", - "cityName": "城市名稱", - "contactPreference": "您希望使用哪種聯絡方法?", - "preferredContactType": "首選聯絡方式", - "state": "州", - "zip": "郵遞區號", - "zipCode": "郵遞區號", - "sendMailToMailingAddress": "請將我的郵件寄往另一地址", - "mailingAddress": "郵寄地址", - "provideAMailingAddress": "請提供一個可收到您最新申請消息和資料的地址。", - "doYouWorkIn": "您是否在 工作?", - "doYouWorkInDescription": "待定", - "workAddress": "工作地址" - }, - "alternateContact": { - "type": { - "title": "如果我們無法聯絡您,您是否還有想授權我們聯絡的人?", - "description": "提供其他聯絡人,即表示您允許我們與他們商討有關您申請表上的資料。", - "label": "其他聯絡人", - "options": { - "familyMember": "家屬", - "friend": "朋友", - "caseManager": "個案經理或房屋顧問", - "other": "其他", - "noContact": "我沒有其他聯絡人" - }, - "otherTypeFormPlaceholder": "您們是什麼關係?", - "otherTypeValidationErrorMessage": "請填寫關係類型", - "validationErrorMessage": "請選擇一位其他聯絡人" - }, - "name": { - "title": "您的其他聯絡人是誰?", - "alternateContactFormLabel": "其他聯絡人姓名", - "caseManagerAgencyFormLabel": "您的個案經理或房屋顧問在哪裡工作?", - "caseManagerAgencyFormPlaceHolder": "機構", - "caseManagerAgencyValidationErrorMessage": "請填寫機構名稱" - }, - "contact": { - "title": "請告知我們如何接觸您的其他聯絡人", - "description": "我們只會為您的申請事宜使用此資料聯絡他們。", - "phoneNumberFormLabel": "聯絡人電話號碼", - "emailAddressFormLabel": "聯絡人電郵地址", - "contactMailingAddressLabel": "聯絡人郵寄地址", - "contactMailingAddressHelperText": "請選擇一個他們可收到您最新申請消息和資料的地址" - } - }, - "household": { - "assistanceUrl": "https://exygy.com/", - "dontQualifyHeader": "很遺憾,您似乎不符合這次上市名單的申請資格。", - "dontQualifyInfo": "如果您認為自己可能填寫錯誤,請更改資料。請注意,如果您偽造任何申請資料,您將會被取消資格。如果您填寫的資料正確無誤,我們建議您日後再回來查看,因為會有更多可供申請的物業。", - "addMembers": { - "addHouseholdMember": "+ 加入家庭成員", - "done": "完成加入成員", - "title": "請提供您家庭的資料。" - }, - "householdMember": "家庭成員(一人)", - "householdMembers": "家庭成員(多人)", - "liveAlone": { - "title": "接着,我們想知道將會與您同住一個單位的其他人", - "willLiveAlone": "我將會獨居", - "liveWithOtherPeople": "其他將會與我同住的人" - }, - "preferredUnit": { - "preferredUnitType": "首選單位類型", - "title": "您對哪類單位面積感興趣?", - "subTitle": "您選擇的單位類型將視供應情況而定。", - "optionsLabel": "請勾選所有適用的單位:", - "options": { - "studio": "套房", - "oneBedroom": "1 間臥室", - "twoBedroom": "2 間臥室", - "threeBedroom": "3 間臥室", - "moreThanThreeBedroom": "3+ 間卧室" - } - }, - "member": { - "cancelAddingThisPerson": "取消加入此人", - "deleteThisPerson": "刪除此人", - "dateOfBirth": "出生日期", - "name": "家庭成員姓名", - "haveSameAddress": "他們的地址是否和您一樣?", - "whatIsTheirRelationship": "他們與您是什麼關係?", - "saveHouseholdMember": "儲存家庭成員資料", - "subTitle": "在下一個頁面,您將有機會加入更多家庭成員", - "title": "請提供此人的資料", - "updateHouseholdMember": "更新家庭成員資料", - "whatReletionship": "他們與您是什麼關係?", - "workInRegion": "他們是否在 工作?", - "workInRegionNote": "這是指他們目前至少 75% 工作時數在 工作。" - }, - "membersInfo": { - "title": "在加入其他人之前,請確保他們未列在這次上市名單的任何其他申請中。" - }, - "primaryApplicant": "主要申請人" - }, - "ada": { - "label": "《美國殘疾人法案》(ADA) 規定的無障礙單位", - "title": "您或家中有任何人需要以下任何 ADA 無障礙設施嗎?", - "subTitle": "如果您被選中可得到一個單位,有關物業將會竭盡所能配合您的需求。如果您的申請被選中,請準備好提供醫生的證明文件。", - "mobility": "行動不便", - "vision": "視障", - "hearing": "聽障" - }, - "financial": { - "income": { - "title": "讓我們轉到收入部分。", - "instruction1": "請將所有家庭成員的工資、福利和其他收入來源相加,得出您的家庭總收入(稅前)。", - "instruction2": "您現在只需要提供估計的總額。如果您被選中,您將需計算實際總數。", - "prompt": "您家庭的稅前總收入是多少?", - "placeholder": "請將所有收入來源相加", - "validationError": { - "title": "很遺憾,您似乎不符合這次上市名單的申請資格。", - "reason": { - "low": "您的家庭收入過低。", - "high": "您的家庭收入過高。" - }, - "instruction1": "如果您認為自己可能填寫錯誤,請更改資料。請注意,如果您偽造任何申請資料,您將會被取消資格。", - "instruction2": "如果您填寫的資料正確無誤,我們建議您日後再回來查看,因為會有更多可供申請的物業。" - } - }, - "vouchers": { - "title": "您或申請表所列的任何人有領取以下任何福利嗎?", - "housingVouchers": { - "strong": "房屋補助券", - "text": "例如第 8 條款 (Section 8) 補助券" - }, - "nonTaxableIncome": { - "strong": "免税收入", - "text": "例如補充保障收入 (SSI)、社會保障殘疾保險 (SSDI)、子女撫養費或工傷補償福利" - }, - "rentalSubsidies": { - "strong": "租金補貼", - "text": "例如 VASH(退伍軍人事務支持性住房計劃)、HSA、HOPWA(愛滋病患者住房機會)、Catholic Charities(天主教慈善協會)、AIDS Foundation(愛滋病基金會)等。" - } - } - }, - "preferences": { - "title": "您的家庭可能符合以下住房優先權。", - "preamble": "如果您符合這項優先權資格,您將會獲得更高排名。", - "selectBelow": "如果您享有其中一項住房優先權,請在下方選出:", - "dontWant": "我不想要這項優先權", - "stillHaveOpportunity": "您仍然有機會要求其他優先權。", - "youHaveClaimed": "您已要求:", - "liveWork": { - "live": { - "label": "住在 的優先權", - "description": "住在 ,內容從這裡開始…", - "link": "http://domain.com" - }, - "work": { - "label": "在 工作優先權", - "description": "在 工作,內容從這裡開始…", - "link": "http://domain.com" - } - }, - "displacedTenant": { - "whichHouseholdMember": "哪一位家庭成員在使用此優先權?", - "whatAddress": "這位家庭成員是從哪個地址被迫搬遷?" - }, - "general": { - "title": "根據您填寫的資料,您的家庭沒有要求任何住房優先權。", - "preamble": "您將被分配到一般申請人組別。" - } - }, - "review": { - "takeAMomentToReview": "在提交申請前,請花一點時間檢視您的資料。", - "sameAddressAsApplicant": "與申請人同一地址", - "noAdditionalMembers": "沒有其他家庭成員", - "householdDetails": "家庭詳情", - "voucherOrSubsidy": "房屋補助券或租金補貼", - "lastChanceToEdit": "這是提交申請前修改資料的最後機會。", - "terms": { - "title": "條款", - "text": "此申請表必須在 %{applicationDueDate} 前提交。

經紀人將會按照抽籤排名和優先權次序聯絡申請人,直到沒有單位空缺為止。

您提供的所有資料都會受到查證,以確定您的資格。如果您作出任何不實陳述,或者有任何家庭成員出現在這次上市的多份申請表中,則您申請的抽籤資格將會被取消。如果我們無法證實您曾要求的住房抽籤優先權,您將不會獲得該優先權,但不會受到其他處罰。

您提供的所有資料都會受到查證,以確定您的資格。如果您作出任何不實陳述,或者有任何家庭成員出現在這次上市的多份申請表中,則您的申請將從候補名單刪除。如果我們無法證實您曾要求的住房優先權,您將不會獲得該優先權,但不會受到其他處罰。

若您的申請在抽籤時被選中,請準備填寫一份更加詳盡的申請表,並在聯絡您後的 5 個工作天內,提供所需的證明文件。若要了解詳情,請聯絡上市名單中發佈的開發商或經紀人。填寫這份抽籤申請表並不表示您有權獲得住房,或不表明您有資格獲得住房。所有申請人都會按照物業的「住戶遴選標準」(Resident Selection Criteria) 所述規定接受篩選。

在提交申請後,便不能更改您的線上申請表。

本人聲明上述內容全部屬實,並確認在本申請作出任何不實或疏忽的虛假陳述,都會導致申請的抽攕資格被取消。

", - "confirmCheckboxText": "本人同意並明白,在提交申請後,本人便不能更改任何內容。" - }, - "demographics": { - "title": "請幫助我們確保實現為所有人服務的目標。", - "subTitle": "這些問題為選答題,不會影響您申請住房的資格。我們會將為您的答案保密。", - "ethnicityLabel": "哪項最能形容您的族裔?", - "raceLabel": "哪項最能形容您的種族?", - "genderLabel": "您的性別?", - "genderInfo": "請選擇一項最能形容您目前的性別認同。", - "sexualOrientationLabel": "您如何形容您的性取向或性向認同?", - "howDidYouHearLabel": "您如何得知這個上市名單?", - "ethnicityOptions": { - "hispanicLatino": "西班牙語裔/拉美裔", - "notHispanicLatino": "非西班牙語裔/拉美裔" - }, - "raceOptions": { - "americanIndianAlaskanNative": "美洲印第安人/阿拉斯加原住民", - "asian": "亞裔", - "blackAfricanAmerican": "黑人/非裔美國人", - "nativeHawaiianOtherPacificIslander": "夏威夷原住民/其他太平洋島民", - "white": "白人", - "americanIndianAlaskanNativeAndBlackAfricanAmerican": "美國印第安人/阿拉斯加原住民和黑人/非裔美國人", - "americanIndianAlaskanNativeAndWhite": "美國印第安人/阿拉斯加原住民和白人", - "asianAndWhite": "亞洲人和白人", - "blackAfricanAmericanAndWhite": "黑人/非裔美國人和白人", - "otherMutliracial": "其他/混血" - }, - "genderOptions": { - "female": "女", - "male": "男", - "genderqueerGenderNon-Binary": "性別酷兒/非二元性別", - "transFemale": "跨性別女性", - "transMale": "跨性別男性", - "notListed": "未列出" - }, - "sexualOrientationOptions": { - "bisexual": "雙性戀", - "gayLesbianSameGenderLoving": "男同性戀者/女同性戀者/同性愛", - "questioningUnsure": "質疑中/不確定", - "straightHeterosexual": "異性戀/非同性戀", - "notListed": "未列出" - }, - "howDidYouHearOptions": { - "alamedaCountyHCDWebsite": "阿拉米達縣房屋與社區發展部 (HCD) 網站", - "developerWebsite": "開發商網站", - "flyer": "宣傳單", - "emailAlert": "電郵提醒", - "friend": "朋友", - "housingCounselor": "房屋顧問", - "radioAd": "電台宣傳廣告", - "busAd": "公車宣傳廣告", - "other": "其他" - } - }, - "confirmation": { - "title": "謝謝。我們已收到您的申請: ", - "lotteryNumber": "這是您的申請確認號碼", - "pleaseWriteNumber": "請寫下您的申請號碼,並妥為保管。如果您有提供電郵地址,我們亦已透過電郵將這個號碼發送給您。", - "whatExpectTitle": "下一步預期事項", - "whatExpectFirstParagraph": { - "held": "抽籤的日期和時間: ", - "attend": " 您無需出席住房抽籤活動。抽籤結果將會在 ", - "listing": "上市名單公佈。 ", - "refer": "請參閱上市名單上的抽籤結果公佈日期。" - }, - "whatExpectSecondparagraph": "我們會依順序聯絡申請人,直到沒有空缺為止。若您的申請被選中,請準備填寫一份更加詳盡的申請表,並提供所需的證明文件。", - "doNotSubmitTitle": "請勿在這次上市提交另一份申請表。", - "needToUpdate": "如果您需要更新申請資料,請勿再次提交申請。如果您沒有收到電郵確認函,請聯絡經紀人。", - "createAccountTitle": "您希望建立帳戶嗎?", - "createAccountParagraph": "建立帳戶可儲存您的資料供日後申請之用,並且可以隨時查看這次申請的進展狀態。", - "imdone": "不,謝謝,我已開立帳戶。", - "browseMore": "瀏覽更多上市名單", - "print": "查看已提交的申請並列印一份副本。" - } - }, - "confirmation": { - "viewOriginalListing": "查看原來上市名單", - "informationSubmittedTitle": "這是您提交的資料。", - "submitted": "已提交: ", - "lotteryNumber": "您的確認號碼", - "preferences": "優先權", - "generalLottery": "根據您填寫的資料,您的家庭沒有要求任何住房抽籤優先權。您將會在一般抽籤的部分。", - "printCopy": "請列印一份副本存檔" - }, - "timeout": { - "text": "為了保護您的身份,您的工作階段將因閒置而在一分鐘後到期。如果您選擇不回應,則將失去任何未經儲存的資料。", - "action": "繼續進行", - "afterMessage": "我們關心您的網上安全。由於網頁閒置,我們已結束您的工作階段。請展開全新申請以便繼續。" - }, - "continueApplication": "繼續申請程序", - "applicationNeverSubmitted": "您的申請從未提交", - "deleteThisApplication": "刪除此申請?", - "deleteApplicationDescription": "刪除此申請表示您將失去已填寫的全部資料。", - "edited": "已修改", - "status": "狀態", - "statuses": { - "inProgress": "處理中", - "neverSubmitted": "從未提交", - "submitted": "已提交" - }, - "viewApplication": "查看申請", - "yourLotteryNumber": "您的確認號碼是" - }, - "authentication": { - "timeout": { - "text": "為了保護您的身份,您的工作階段將因閒置而在一分鐘後到期。如果您選擇不回應,則將失去任何未經儲存的資料,並且會被登出。", - "action": "保持登入狀態", - "signOutMessage": "我們關心您的網上安全。由於網頁閒置,我們已將您登出。請登入以便繼續。" - }, - "signIn": { - "error": "您在登入時出現錯誤", - "errorGenericMessage": "請再試一次,或聯絡支援人員尋求協助。", - "success": "歡迎回來,%{name}!" - } - }, - "config": { - "routePrefix": "zh" - }, - "errors": { - "alert": { - "badRequest": "糟糕!好像出了點問題。請再試一次。\n\n如果仍然遇到問題,請聯絡 sfhousing.info@sfgov.org。", - "timeoutPleaseTryAgain": "糟糕!好像出了點問題。請再試一次。" - }, - "notFound": { - "title": "找不到網頁", - "message": "嗯,我們似乎找不到您要的網頁。請嘗試返回上一頁,或點擊下面以瀏覽上市名單。" - }, - "agreeError": "您必須同意有關條款才能繼續", - "firstNameError": "請輸入名字", - "lastNameError": "請輸入姓氏", - "dateOfBirthError": "請輸入有效的出生日期", - "emailAddressError": "請輸入電郵地址", - "phoneNumberError": "請輸入電話號碼", - "phoneNumberTypeError": "請輸入電話號碼類型", - "streetError": "請輸入地址", - "cityError": "請輸入城市名稱", - "stateError": "請輸入州名", - "zipCodeError": "請輸入郵遞區號", - "errorsToResolve": "出現一些錯誤;您需要解決問題才能繼續操作。", - "numberError": "請輸入一個大於 0 的有效數字。", - "selectAllThatApply": "請選擇所有適用項目。", - "selectAtLeastOne": "請選擇至少一個選項。", - "selectAnOption": "請選擇一個選項。", - "selectOption": "請選擇以上其中一個選項。", - "householdTooBig": "您的家庭人數過多。", - "householdTooSmall": "您的家庭人數過少。" - }, - "footer": { - "contact": "聯絡方式", - "disclaimer": "免責聲明", - "forGeneralQuestions": "若為一般計劃查詢,可以致電 000-000-0000 聯絡我們。", - "giveFeedback": "提供回饋意見", - "privacyPolicy": "隱私權政策", - "copyright": "Demonstration County © 2020 • 版權所有" - }, - "housingCounselors": { - "subtitle": "根據您的特定需求,請與您當地的房屋顧問商談。", - "languageServices": "語言服務: ", - "call": "請致電 %{number}", - "visitWebsite": "請瀏覽 %{name}" - }, - "leasingAgent": { - "contact": "聯絡租賃代理", - "dueToHighCallVolume": "由於來電人數眾多,您可能會聽到訊息留言。", - "officeHours": "辦公時間" - }, - "listings": { - "additionalInformation": "其他資訊", - "allUnits": "所有單位", - "allUnitsReservedFor": "保留給 %{type} 的所有單位", - "applicationDeadline": "申請截止日期", - "applicationFCFS": "先申請先服務", - "applicationFee": "申請費", - "applicationFeeDueAt": "在面談時繳費", - "applicationOpenPeriod": "接受申請期限", - "applicationPerApplicantAgeDescription": "每位年滿 18 歲的申請人", - "applicationsClosed": "申請期限已經結束", - "apply": { - "applicationsMustBeReceivedByDeadline": "申請表必須在截止日期前收到,並且不會考慮郵戳日期。", - "applicationWillBeAvailableOn": "申請表將可供下載,亦可在 %{openDate} 領取", - "applyOnline": "線上申請", - "downloadApplication": "下載申請表", - "dropOffApplication": "交回申請表", - "dropOffApplicationOrMail": "交回申請表或透過美國郵政寄回", - "getAPaperApplication": "索取紙本申請表", - "howToApply": "如何申請", - "paperApplicationsMustBeMailed": "紙本申請表必須經由美國郵政寄回,並且不能親自提交。", - "pickUpAnApplication": "領取申請表", - "postmarkedApplicationsMustBeReceivedByDate": "申請表必須在截止日期前收到。如果經由美國郵政寄送,則申請表上的郵戳日期必須在 %{applicationDueDate} 前,郵件最遲要在 %{postmarkReceivedByDate} 前寄達。我們不會受理在 %{postmarkReceivedByDate} 之後郵寄送達的申請表,即使郵戳日期在 %{applicationDueDate} 之前也一樣。若郵件有任何遺失或延誤,%{developer} 概不負責。", - "sendByUsMail": "用美國郵政寄送申請表", - "submitAPaperApplication": "提交紙本申請表" - }, - "availableAndWaitlist": "可提供單位和接受申請的候補名單", - "availableUnits": "可提供單位", - "availableUnitsAndWaitlist": "可提供單位和候補名單", - "availableUnitsAndWaitlistDesc": "在申請人填補所有可提供單位後,其他申請人將被列入 %{number} 個單位的候補名單內", - "bath": "浴室", - "browseListings": "瀏覽上市名單", - "closedListings": "已截止申請的上市名單", - "comingSoon": "即將上市!", - "confirmedPreferenceList": "確認 %{preference} 名單", - "creditHistory": "信用歷史", - "criminalBackground": "犯罪背景", - "depositOrMonthsRent": "或一個月租金", - "depositMayBeHigherForLowerCredit": "可能高於或低於的信用分數", - "developmentalDisabilities": "發展障礙人士", - "developmentalDisabilitiesDescription": "此樓宇有部分單位留給有發展障礙的人士。請瀏覽 housingchoices.org 以了解有關申請資格、要求、索取申請表方法等資訊;網站還可回答有關申請過程的任何其他疑問。", - "enterLotteryForWaitlist": "提交申請表,列入 %{units} 個單位候補名單的空缺名額。", - "forIncomeCalculations": "收入計算、家庭人數(包括所有住在單位內所有年齡的人)。", - "forIncomeCalculationsBMR": "收入計算是以單位類型為準", - "hideClosedListings": "隱藏已截止申請的上市名單", - "householdMaximumIncome": "家庭收入上限", - "householdSize": "家庭人數", - "importantProgramRules": "重要計劃規則", - "includesPriorityUnits": "包括為 %{priorities} 提供的優先單位", - "lotteryResults": { - "completeResultsWillBePosted": "全部抽籤結果將很快發佈。", - "downloadResults": "下載結果", - "header": "抽籤結果" - }, - "maxIncomeMonth": "最高收入 / 月", - "maxIncomeYear": "最高收入 / 年", - "moreBuildingSelectionCriteria": "了解「樓宇選擇標準」詳情", - "noAvailableUnits": "目前並無單位提供。", - "noOpenListings": "目前沒有上市名單接受申請。", - "occupancyDescriptionAllSro": "此樓宇的入住人數限制為每單位 1 人。", - "occupancyDescriptionNoSro": "此樓宇的入住人數限制根據單位類型而定。", - "occupancyDescriptionSomeSro": "此樓宇的入住人數因單位類型而異。單人房 (SRO) 限制 1 人入住一個單位,但不限年齡。至於所有其他類型的單位,入住人數限制不會算入 6 歲以下兒童。", - "openHouseEvent": { - "header": "開放參觀日" - }, - "percentAMIUnit": "%{percent}% 地區中位數收入 (AMI) 單位", - "priorityUnits": "優先單位", - "priorityUnitsDescription": "如果以下任何一項適用於您或您的家人,則此樓宇有預留的單位:", - "publicLottery": { - "header": "公開抽籤" - }, - "remainingUnitsAfterPreferenceConsideration": "在考慮所有優先權持有人之後,任何剩餘單位將提供給其他符合資格的申請人。", - "rentalHistory": "租賃記錄", - "requiredDocuments": "必須提供的文件", - "reservedCommunityBuilding": "%{type} 樓宇", - "reservedFor": "保留給 %{type}", - "reservedTypePlural": { - "family": "家庭", - "senior": "長者", - "veteran": "退伍軍人" - }, - "reservedUnits": "保留單位", - "reservedUnitsDescription": "您或您的家庭成員必須符合以下其中一項條件,才符合這些單位的申請資格:", - "reservedUnitsForWhoAre": "保留給是 %{reservedType} 的 %{communityType}", - "sections": { - "additionalFees": "其他費用", - "eligibilityTitle": "資格要求", - "eligibilitySubtitle": "收入、入住人數、優先權和補貼", - "rentalAssistanceTitle": "租屋援助", - "rentalAssistanceSubtitle": "此物業將考慮房屋選擇優惠券 (Housing Choice Vouchers)、第 8 條款 (Section 8) 補助券和其他有效的租屋援助計劃。若申請人領取有效的租金補貼,則規定的收入下限將根據租戶在使用補貼後所支付的租金 部分而定。", - "housingPreferencesTitle": "住房優先權", - "housingPreferencesSubtitle": "優先權持有人將獲最高排名。", - "additionalEligibilityTitle": "其他申請資格規則", - "additionalEligibilitySubtitle": "申請人又必須符合樓宇規則的規定。", - "processTitle": "申請程序", - "processSubtitle": "重要日期和聯絡資料", - "featuresTitle": "特點", - "featuresSubtitle": "便利設施、單位詳情和其他費用", - "neighborhoodTitle": "鄰里", - "neighborhoodSubtitle": "位置和交通", - "additionalInformationTitle": "其他資訊", - "additionalInformationSubtitle": "所需文件和遴選標準" - }, - "seeMaximumIncomeInformation": "查看收入上限資訊", - "seePreferenceInformation": "查看優先權資訊", - "seeUnitInformation": "查看單位資訊", - "showClosedListings": "顯示已截止申請的上市名單", - "singleRoomOccupancy": "單人房", - "singleRoomOccupancyDescription": "此物業提供限一人居住的單人房。租戶可以共用浴室,有時還可使用廚房設施。", - "unitTypes": { - "oneBdrm": "1 臥室", - "twoBdrm": "2 臥室", - "threeBdrm": "3 卧室", - "studio": "套房", - "SRO": "單人房" - }, - "unitsAreFor": "這些單位供 %{type} 申請。", - "unitsHaveAccessibilityFeaturesFor": "這些單位提供無障礙設施,供 %{type} 人士申請。", - "upcomingLotteries": { - "hide": "隱藏已截止申請的上市名單", - "noResults": "目前沒有即將抽籤但已截止申請的上市名單。", - "show": "顯示已截止申請的上市名單", - "title": "已截止申請的上市名單" - }, - "waitlist": { - "closed": "候補名單已截止申請", - "label": "候補名單", - "isOpen": "候補名單接受申請", - "currentSize": "目前的候補名單人數", - "finalSize": "最後候補名單人數", - "open": "接受申請的候補名單", - "openSlots": "接受申請的候補名單名額", - "submitAnApplication": "已排名次的申請人填滿所有可提供單位後,其餘已排名次的申請人將會被列入那些相同單位的候補名單上。", - "submitForWaitlist": "提交申請表,列入候補名單的空缺名額。", - "unitsAndWaitlist": "可提供單位和候補名單" - }, - "cc&r": "契約、條件及限制 (Covenants, Conditions and Restrictions,簡稱 CC&R's)", - "cc&rDescription": "CC&R's 旨在說明業主協會的規則,以及您可如何改裝物業的限制。", - "downloadPdf": "下載 PDF 檔案", - "rePricing": "重新定價", - "eligibilityNotebook": "申請資格筆記本", - "processInfo": "申請過程資訊", - "featuresCards": "物業特點說明卡", - "neighborhoodBuildings": "鄰里其他建築物", - "additionalInformationEnvelope": "額外資訊包" - }, - "lottery": { - "applicationsThatQualifyForPreference": "任何符合此優先權資格的申請,將獲得較前面的名次。", - "viewPreferenceList": "查看優先權名單" - }, - "nav": { - "accountSettings": "帳戶設定", - "browseProperties": "瀏覽物業", - "getAssistance": "尋求協助", - "getFeedback": "這是我們新網站的預覽。我們只是剛開始。我們希望獲得 您的回饋意見。", - "listings": "好屋推薦", - "properties": "物業", - "applications": "申請資訊", - "myAccount": "我的帳戶", - "myApplications": "我的申請", - "myDashboard": "我的儀表板", - "mySettings": "我的設定", - "signIn": "登入", - "signOut": "登出", - "siteTitle": "房屋入口網站", - "skip": "直接前往主要內容" - }, - "pageTitle": { - "additionalResources": "更多住房申請機會", - "disclaimer": "背書免責聲明", - "housingCounselors": "房屋顧問", - "getAssistance": "尋求協助", - "rentalListings": "查看租賃部分", - "rent": "租賃可負擔房屋", - "privacy": "隱私權政策", - "welcomeEnglish": "歡迎", - "welcomeSpanish": "Bienvenido", - "welcomeVietnamese": "Tiếng Việt" - }, - "pageDescription": { - "welcome": "在 %{regionName} 的房屋網站搜尋並申請可負擔房屋", - "listing": "申請在 %{regionName} 的 %{listingName}(與 Exygy 合作興建)可負擔房屋。" - }, - "region": { - "name": "當地地區" - }, - "states": { - "AL": "Alabama(阿拉巴馬州)", - "AK": "Alaska(阿拉斯加州)", - "AZ": "Arizona(亞利桑那州)", - "AR": "Arkansas(阿肯色州)", - "CA": "California(加利福尼亞州)", - "CO": "Colorado(科羅拉多州)", - "CT": "Connecticut(康乃迪克州)", - "DE": "Delaware(德拉瓦州)", - "DC": "District Of Columbia(哥倫比亞特區)", - "FL": "Florida(佛羅里達州)", - "GA": "Georgia(喬治亞州)", - "HI": "Hawaii(夏威夷州)", - "ID": "Idaho(愛達荷州)", - "IL": "Illinois(伊利諾州)", - "IN": "Indiana(印第安納州)", - "IA": "Iowa(愛荷華州)", - "KS": "Kansas(堪薩斯州)", - "KY": "Kentucky(肯塔基州)", - "LA": "Louisiana(路易斯安那州)", - "ME": "Maine(緬因州)", - "MD": "Maryland(馬里蘭州)", - "MA": "Massachusetts(麻薩諸塞州)", - "MI": "Michigan(密西根州)", - "MN": "Minnesota(明尼蘇達州)", - "MS": "Mississippi(密西西比州)", - "MO": "Missouri(密蘇里州)", - "MT": "Missouri(蒙大拿州)", - "NE": "Nebraska(內布拉斯加州)", - "NV": "Nevada(內華達州)", - "NH": "New Hampshire(新罕布夏州)", - "NJ": "New Jersey(紐澤西州)", - "NM": "New Mexico(新墨西哥州)", - "NY": "New York(紐約州)", - "NC": "North Carolina(北卡羅來納州)", - "ND": "North Dakota(北達科他州)", - "OH": "Ohio(俄亥俄州)", - "OK": "Oklahoma(俄克拉何馬州)", - "OR": "Oregon(俄勒岡州)", - "PA": "Pennsylvania(賓夕法尼亞州)", - "RI": "Rhode Island(羅德島)", - "SC": "South Carolina(南卡羅來納州)", - "SD": "South Dakota(南達科他州)", - "TN": "Tennessee(田納西州)", - "TX": "Texas(德克薩斯州)", - "UT": "Utah(猶他州)", - "VT": "Vermont(佛蒙特州)", - "VA": "Virginia(維吉尼亞州)", - "WA": "Washington(華盛頓州)", - "WV": "West Virginia(西維吉尼亞州)", - "WI": "Wisconsin(威斯康辛州)", - "WY": "Wyoming(懷俄明州)" - }, - "t": { - "additionalPhone": "其他電話號碼", - "area": "地區", - "areYouStillWorking": "您是否仍在工作?", - "accessibility": "無障礙設施", - "availability": "供應情況", - "back": "返回", - "built": "已興建", - "call": "致電", - "cancel": "取消", - "confirm": "確認", - "day": "日", - "delete": "刪除", - "deposit": "訂金", - "edit": "編輯", - "email": "電子郵件", - "emailAddressPlaceHolder": "you@myemail.com", - "floor": "樓層", - "floors": "樓層", - "getDirections": "取得路線", - "household": "家庭", - "income": "收入", - "letter": "信件", - "less": "以下", - "loginIsRequired": "必須登入才能瀏覽本頁。", - "menu": "功能表", - "minimumIncome": "收入下限", - "month": "月", - "more": "其他資訊", - "name": "姓名", - "neighborhood": "鄰里", - "next": "下一頁", - "no": "否", - "none": "無", - "noneFound": "找不到。", - "occupancy": "入住人數", - "or": "或", - "people": "人", - "person": "人", - "perMonth": "每月", - "perYear": "每年", - "petsPolicy": "寵物政策", - "phone": "電話號碼", - "phoneNumberPlaceholder": "(555) 555-5555", - "pleaseSelectOne": "請選取一項。", - "preferences": "優先權", - "propertyAmenities": "物業便利設施", - "range": "由 %{from} 至 %{to}", - "readLess": "閱讀較少內容", - "readMore": "閱讀更多內容", - "rent": "租金", - "review": "審查", - "seeDetails": "查看詳情", - "seeListing": "查看上市名單", - "selectOne": "選擇一項", - "showLess": "顯示較少內容", - "showMore": "顯示更多內容", - "skipToMainContent": "直接前往主要內容", - "smokingPolicy": "吸煙政策", - "sqFeet": "平方英尺", - "squareFeet": "平方英尺", - "submit": "提交", - "text": "簡訊", - "unit": "單位", - "units": "單位", - "unitAmenities": "單位設施", - "unitFeatures": "單位特點", - "unitType": "單位類型", - "viewMap": "檢視地圖", - "viewOnMap": "在地圖上檢視", - "year": "年", - "yes": "是", - "you": "您" - }, - "welcome": { - "allApplicationClosed": "目前所有申請已截止,但您可以查看已截止申請的上市名單。", - "seeRentalListings": "查看租賃部分", - "title": "申請此地的可負擔房屋:", - "seeMoreOpportunities": "查看更多租賃和自購住房的機會", - "viewAdditionalHousing": "瀏覽其他住房機會和資源" - }, - "whatToExpect": { - "label": "預期事項", - "applicantsWillBeContacted": "物業經紀人將按排名次序聯絡申請人,直到沒有空缺為止。", - "allInfoWillBeVerified": "您提供的所有資料都會受到查證,以確定您的資格。如果您作出任何不實陳述,則您的申請會從候補名單被刪除。如果我們無法證實您要求的住房優先權,您將不會獲得該優先權,但不會受到其他處罰。", - "bePreparedIfChosen": "若您的申請被選中,請準備填寫一份更加詳盡的申請表,並提供所需的證明文件。" - } -} +{ + "account": { + "accountSettings": "帳戶設定", + "accountSettingsSubtitle": "帳戶設定、電郵和密碼", + "createAccount": "建立帳戶", + "haveAnAccount": "已開立帳戶?", + "myApplications": "我的申請", + "myApplicationsSubtitle": "查看您已申請物業的抽簽日期和上市名單" + }, + "application": { + "form": { + "general": { + "saveAndReturn": "儲存並返回檢視", + "saveAndFinishLater": "儲存並於稍後完成" + }, + "options": { + "relationship": { + "spouse": "配偶", + "registeredDomesticPartner": "已註冊的同居伴侶", + "parent": "父母", + "child": "子女", + "sibling": "兄弟姐妹", + "cousin": "堂/表兄弟姐妹", + "aunt": "伯/嬸/姑/姨/舅母", + "uncle": "伯/叔/姑/姨/舅父", + "nephew": "侄子/外甥", + "niece": "侄女/外甥女", + "grandparent": "祖父母/外祖父母", + "greatGrandparent": "曾祖父母/外曾祖父母", + "inLaw": "姻親", + "friend": "朋友", + "other": "其他" + } + } + }, + "chooseLanguage": { + "letsGetStarted": "我們來展開申請程序", + "chooseYourLanguage": "選擇您使用的語言", + "signInSaveTime": "登入網站從上次申請的詳情開始,這可節省您的時間,並讓您隨時查看這次申請的進展情況。" + }, + "autofill": { + "saveTime": "使用上次申請中的詳細資料可節省時間", + "prefillYourApplication": "我們只要將以下詳細資料預先填入您的申請,您就可隨時隨地進行更新。", + "start": "開始使用這些詳細資料", + "reset": "重設並開始重新整理" + }, + "start": { + "whatToExpect": { + "title": "這次申請預期事項。", + "info1": "首先,我們會詢問關於您本人以及您打算與之同住者的資料。接着,我們會詢問您的收入。最後,我們會了解您是否符合資格獲得任何可負擔房屋的抽籤優先權。", + "info2": "請注意,每次上市名單公佈時,每個家庭成員只能在一個申請表中出現一次。", + "info3": "任何不實陳述都會導致申請被取消。" + } + }, + "name": { + "title": "您叫什麼名字?", + "yourName": "您的姓名", + "firstName": "名字", + "middleNameOptional": "中間名(選填)", + "lastName": "姓氏", + "yourDateOfBirth": "您的出生日期", + "yourEmailAddress": "電郵地址", + "emailPrivacy": "我們只會為申請事宜使用您的電郵地址與您聯絡。", + "noEmailAddress": "我沒有電郵地址" + }, + "contact": { + "title": "%{firstName},謝謝您。現在我們需要知道如何聯絡您。", + "yourPhoneNumber": "您的電話號碼", + "phoneNumberTypes": { + "prompt": "這是哪類電話號碼?", + "work": "工作", + "home": "住家", + "cell": "手機" + }, + "noPhoneNumber": "我沒有電話號碼", + "additionalPhoneNumber": "我還有另一個電話號碼", + "address": "地址", + "addressWhereYouCurrentlyLive": "我們需要您目前居住的地址。如果您無家可歸,請填寫收容所地址或您所待地點附近的地址。", + "streetAddress": "街道地址", + "apt": "公寓或單位號碼", + "cityName": "城市名稱", + "contactPreference": "您希望使用哪種聯絡方法?", + "preferredContactType": "首選聯絡方式", + "state": "州", + "zip": "郵遞區號", + "zipCode": "郵遞區號", + "sendMailToMailingAddress": "請將我的郵件寄往另一地址", + "mailingAddress": "郵寄地址", + "provideAMailingAddress": "請提供一個可收到您最新申請消息和資料的地址。", + "doYouWorkIn": "您是否在 工作?", + "doYouWorkInDescription": "待定", + "workAddress": "工作地址" + }, + "alternateContact": { + "type": { + "title": "如果我們無法聯絡您,您是否還有想授權我們聯絡的人?", + "description": "提供其他聯絡人,即表示您允許我們與他們商討有關您申請表上的資料。", + "label": "其他聯絡人", + "options": { + "familyMember": "家屬", + "friend": "朋友", + "caseManager": "個案經理或房屋顧問", + "other": "其他", + "noContact": "我沒有其他聯絡人" + }, + "otherTypeFormPlaceholder": "您們是什麼關係?", + "otherTypeValidationErrorMessage": "請填寫關係類型", + "validationErrorMessage": "請選擇一位其他聯絡人" + }, + "name": { + "title": "您的其他聯絡人是誰?", + "alternateContactFormLabel": "其他聯絡人姓名", + "caseManagerAgencyFormLabel": "您的個案經理或房屋顧問在哪裡工作?", + "caseManagerAgencyFormPlaceHolder": "機構", + "caseManagerAgencyValidationErrorMessage": "請填寫機構名稱" + }, + "contact": { + "title": "請告知我們如何接觸您的其他聯絡人", + "description": "我們只會為您的申請事宜使用此資料聯絡他們。", + "phoneNumberFormLabel": "聯絡人電話號碼", + "emailAddressFormLabel": "聯絡人電郵地址", + "contactMailingAddressLabel": "聯絡人郵寄地址", + "contactMailingAddressHelperText": "請選擇一個他們可收到您最新申請消息和資料的地址" + } + }, + "household": { + "assistanceUrl": "https://exygy.com/", + "dontQualifyHeader": "很遺憾,您似乎不符合這次上市名單的申請資格。", + "dontQualifyInfo": "如果您認為自己可能填寫錯誤,請更改資料。請注意,如果您偽造任何申請資料,您將會被取消資格。如果您填寫的資料正確無誤,我們建議您日後再回來查看,因為會有更多可供申請的物業。", + "addMembers": { + "addHouseholdMember": "+ 加入家庭成員", + "done": "完成加入成員", + "title": "請提供您家庭的資料。" + }, + "householdMember": "家庭成員(一人)", + "householdMembers": "家庭成員(多人)", + "liveAlone": { + "title": "接着,我們想知道將會與您同住一個單位的其他人", + "willLiveAlone": "我將會獨居", + "liveWithOtherPeople": "其他將會與我同住的人" + }, + "preferredUnit": { + "preferredUnitType": "首選單位類型", + "title": "您對哪類單位面積感興趣?", + "subTitle": "您選擇的單位類型將視供應情況而定。", + "optionsLabel": "請勾選所有適用的單位:", + "options": { + "studio": "套房", + "oneBedroom": "1 間臥室", + "twoBedroom": "2 間臥室", + "threeBedroom": "3 間臥室", + "moreThanThreeBedroom": "3+ 間卧室" + } + }, + "member": { + "cancelAddingThisPerson": "取消加入此人", + "deleteThisPerson": "刪除此人", + "dateOfBirth": "出生日期", + "name": "家庭成員姓名", + "haveSameAddress": "他們的地址是否和您一樣?", + "whatIsTheirRelationship": "他們與您是什麼關係?", + "saveHouseholdMember": "儲存家庭成員資料", + "subTitle": "在下一個頁面,您將有機會加入更多家庭成員", + "title": "請提供此人的資料", + "updateHouseholdMember": "更新家庭成員資料", + "whatReletionship": "他們與您是什麼關係?", + "workInRegion": "他們是否在 工作?", + "workInRegionNote": "這是指他們目前至少 75% 工作時數在 工作。" + }, + "membersInfo": { + "title": "在加入其他人之前,請確保他們未列在這次上市名單的任何其他申請中。" + }, + "primaryApplicant": "主要申請人" + }, + "ada": { + "label": "《美國殘疾人法案》(ADA) 規定的無障礙單位", + "title": "您或家中有任何人需要以下任何 ADA 無障礙設施嗎?", + "subTitle": "如果您被選中可得到一個單位,有關物業將會竭盡所能配合您的需求。如果您的申請被選中,請準備好提供醫生的證明文件。", + "mobility": "行動不便", + "vision": "視障", + "hearing": "聽障" + }, + "financial": { + "income": { + "title": "讓我們轉到收入部分。", + "instruction1": "請將所有家庭成員的工資、福利和其他收入來源相加,得出您的家庭總收入(稅前)。", + "instruction2": "您現在只需要提供估計的總額。如果您被選中,您將需計算實際總數。", + "prompt": "您家庭的稅前總收入是多少?", + "placeholder": "請將所有收入來源相加", + "validationError": { + "title": "很遺憾,您似乎不符合這次上市名單的申請資格。", + "reason": { + "low": "您的家庭收入過低。", + "high": "您的家庭收入過高。" + }, + "instruction1": "如果您認為自己可能填寫錯誤,請更改資料。請注意,如果您偽造任何申請資料,您將會被取消資格。", + "instruction2": "如果您填寫的資料正確無誤,我們建議您日後再回來查看,因為會有更多可供申請的物業。" + } + }, + "vouchers": { + "title": "您或申請表所列的任何人有領取以下任何福利嗎?", + "housingVouchers": { + "strong": "房屋補助券", + "text": "例如第 8 條款 (Section 8) 補助券" + }, + "nonTaxableIncome": { + "strong": "免税收入", + "text": "例如補充保障收入 (SSI)、社會保障殘疾保險 (SSDI)、子女撫養費或工傷補償福利" + }, + "rentalSubsidies": { + "strong": "租金補貼", + "text": "例如 VASH(退伍軍人事務支持性住房計劃)、HSA、HOPWA(愛滋病患者住房機會)、Catholic Charities(天主教慈善協會)、AIDS Foundation(愛滋病基金會)等。" + } + } + }, + "preferences": { + "title": "您的家庭可能符合以下住房優先權。", + "preamble": "如果您符合這項優先權資格,您將會獲得更高排名。", + "selectBelow": "如果您享有其中一項住房優先權,請在下方選出:", + "dontWant": "我不想要這項優先權", + "stillHaveOpportunity": "您仍然有機會要求其他優先權。", + "youHaveClaimed": "您已要求:", + "liveWork": { + "live": { + "label": "住在 的優先權", + "description": "住在 ,內容從這裡開始…", + "link": "http://domain.com" + }, + "work": { + "label": "在 工作優先權", + "description": "在 工作,內容從這裡開始…", + "link": "http://domain.com" + } + }, + "displacedTenant": { + "whichHouseholdMember": "哪一位家庭成員在使用此優先權?", + "whatAddress": "這位家庭成員是從哪個地址被迫搬遷?" + }, + "general": { + "title": "根據您填寫的資料,您的家庭沒有要求任何住房優先權。", + "preamble": "您將被分配到一般申請人組別。" + } + }, + "review": { + "takeAMomentToReview": "在提交申請前,請花一點時間檢視您的資料。", + "sameAddressAsApplicant": "與申請人同一地址", + "noAdditionalMembers": "沒有其他家庭成員", + "householdDetails": "家庭詳情", + "voucherOrSubsidy": "房屋補助券或租金補貼", + "lastChanceToEdit": "這是提交申請前修改資料的最後機會。", + "terms": { + "title": "條款", + "text": "此申請表必須在 %{applicationDueDate} 前提交。

經紀人將會按照抽籤排名和優先權次序聯絡申請人,直到沒有單位空缺為止。

您提供的所有資料都會受到查證,以確定您的資格。如果您作出任何不實陳述,或者有任何家庭成員出現在這次上市的多份申請表中,則您申請的抽籤資格將會被取消。如果我們無法證實您曾要求的住房抽籤優先權,您將不會獲得該優先權,但不會受到其他處罰。

您提供的所有資料都會受到查證,以確定您的資格。如果您作出任何不實陳述,或者有任何家庭成員出現在這次上市的多份申請表中,則您的申請將從候補名單刪除。如果我們無法證實您曾要求的住房優先權,您將不會獲得該優先權,但不會受到其他處罰。

若您的申請在抽籤時被選中,請準備填寫一份更加詳盡的申請表,並在聯絡您後的 5 個工作天內,提供所需的證明文件。若要了解詳情,請聯絡上市名單中發佈的開發商或經紀人。填寫這份抽籤申請表並不表示您有權獲得住房,或不表明您有資格獲得住房。所有申請人都會按照物業的「住戶遴選標準」(Resident Selection Criteria) 所述規定接受篩選。

在提交申請後,便不能更改您的線上申請表。

本人聲明上述內容全部屬實,並確認在本申請作出任何不實或疏忽的虛假陳述,都會導致申請的抽攕資格被取消。

", + "confirmCheckboxText": "本人同意並明白,在提交申請後,本人便不能更改任何內容。" + }, + "demographics": { + "title": "請幫助我們確保實現為所有人服務的目標。", + "subTitle": "這些問題為選答題,不會影響您申請住房的資格。我們會將為您的答案保密。", + "ethnicityLabel": "哪項最能形容您的族裔?", + "raceLabel": "哪項最能形容您的種族?", + "genderLabel": "您的性別?", + "genderInfo": "請選擇一項最能形容您目前的性別認同。", + "sexualOrientationLabel": "您如何形容您的性取向或性向認同?", + "howDidYouHearLabel": "您如何得知這個上市名單?", + "ethnicityOptions": { + "hispanicLatino": "西班牙語裔/拉美裔", + "notHispanicLatino": "非西班牙語裔/拉美裔" + }, + "raceOptions": { + "americanIndianAlaskanNative": "美洲印第安人/阿拉斯加原住民", + "asian": "亞裔", + "blackAfricanAmerican": "黑人/非裔美國人", + "nativeHawaiianOtherPacificIslander": "夏威夷原住民/其他太平洋島民", + "white": "白人", + "americanIndianAlaskanNativeAndBlackAfricanAmerican": "美國印第安人/阿拉斯加原住民和黑人/非裔美國人", + "americanIndianAlaskanNativeAndWhite": "美國印第安人/阿拉斯加原住民和白人", + "asianAndWhite": "亞洲人和白人", + "blackAfricanAmericanAndWhite": "黑人/非裔美國人和白人", + "otherMutliracial": "其他/混血" + }, + "genderOptions": { + "female": "女", + "male": "男", + "genderqueerGenderNon-Binary": "性別酷兒/非二元性別", + "transFemale": "跨性別女性", + "transMale": "跨性別男性", + "notListed": "未列出" + }, + "sexualOrientationOptions": { + "bisexual": "雙性戀", + "gayLesbianSameGenderLoving": "男同性戀者/女同性戀者/同性愛", + "questioningUnsure": "質疑中/不確定", + "straightHeterosexual": "異性戀/非同性戀", + "notListed": "未列出" + }, + "howDidYouHearOptions": { + "alamedaCountyHCDWebsite": "阿拉米達縣房屋與社區發展部 (HCD) 網站", + "developerWebsite": "開發商網站", + "flyer": "宣傳單", + "emailAlert": "電郵提醒", + "friend": "朋友", + "housingCounselor": "房屋顧問", + "radioAd": "電台宣傳廣告", + "busAd": "公車宣傳廣告", + "other": "其他" + } + }, + "confirmation": { + "title": "謝謝。我們已收到您的申請: ", + "lotteryNumber": "這是您的申請確認號碼", + "pleaseWriteNumber": "請寫下您的申請號碼,並妥為保管。如果您有提供電郵地址,我們亦已透過電郵將這個號碼發送給您。", + "whatExpectTitle": "下一步預期事項", + "whatExpectFirstParagraph": { + "held": "抽籤的日期和時間: ", + "attend": " 您無需出席住房抽籤活動。抽籤結果將會在 ", + "listing": "上市名單公佈。 ", + "refer": "請參閱上市名單上的抽籤結果公佈日期。" + }, + "whatExpectSecondparagraph": "我們會依順序聯絡申請人,直到沒有空缺為止。若您的申請被選中,請準備填寫一份更加詳盡的申請表,並提供所需的證明文件。", + "doNotSubmitTitle": "請勿在這次上市提交另一份申請表。", + "needToUpdate": "如果您需要更新申請資料,請勿再次提交申請。如果您沒有收到電郵確認函,請聯絡經紀人。", + "createAccountTitle": "您希望建立帳戶嗎?", + "createAccountParagraph": "建立帳戶可儲存您的資料供日後申請之用,並且可以隨時查看這次申請的進展狀態。", + "imdone": "不,謝謝,我已開立帳戶。", + "browseMore": "瀏覽更多上市名單", + "print": "查看已提交的申請並列印一份副本。" + } + }, + "confirmation": { + "viewOriginalListing": "查看原來上市名單", + "informationSubmittedTitle": "這是您提交的資料。", + "submitted": "已提交: ", + "lotteryNumber": "您的確認號碼", + "preferences": "優先權", + "generalLottery": "根據您填寫的資料,您的家庭沒有要求任何住房抽籤優先權。您將會在一般抽籤的部分。", + "printCopy": "請列印一份副本存檔" + }, + "timeout": { + "text": "為了保護您的身份,您的工作階段將因閒置而在一分鐘後到期。如果您選擇不回應,則將失去任何未經儲存的資料。", + "action": "繼續進行", + "afterMessage": "我們關心您的網上安全。由於網頁閒置,我們已結束您的工作階段。請展開全新申請以便繼續。" + }, + "continueApplication": "繼續申請程序", + "applicationNeverSubmitted": "您的申請從未提交", + "deleteThisApplication": "刪除此申請?", + "deleteApplicationDescription": "刪除此申請表示您將失去已填寫的全部資料。", + "edited": "已修改", + "status": "狀態", + "statuses": { + "inProgress": "處理中", + "neverSubmitted": "從未提交", + "submitted": "已提交" + }, + "viewApplication": "查看申請", + "yourLotteryNumber": "您的確認號碼是" + }, + "authentication": { + "timeout": { + "text": "為了保護您的身份,您的工作階段將因閒置而在一分鐘後到期。如果您選擇不回應,則將失去任何未經儲存的資料,並且會被登出。", + "action": "保持登入狀態", + "signOutMessage": "我們關心您的網上安全。由於網頁閒置,我們已將您登出。請登入以便繼續。" + }, + "signIn": { + "error": "您在登入時出現錯誤", + "errorGenericMessage": "請再試一次,或聯絡支援人員尋求協助。", + "success": "歡迎回來,%{name}!" + } + }, + "config": { + "routePrefix": "zh" + }, + "errors": { + "alert": { + "badRequest": "糟糕!好像出了點問題。請再試一次。\n\n如果仍然遇到問題,請聯絡 sfhousing.info@sfgov.org。", + "timeoutPleaseTryAgain": "糟糕!好像出了點問題。請再試一次。" + }, + "notFound": { + "title": "找不到網頁", + "message": "嗯,我們似乎找不到您要的網頁。請嘗試返回上一頁,或點擊下面以瀏覽上市名單。" + }, + "agreeError": "您必須同意有關條款才能繼續", + "firstNameError": "請輸入名字", + "lastNameError": "請輸入姓氏", + "dateOfBirthError": "請輸入有效的出生日期", + "emailAddressError": "請輸入電郵地址", + "phoneNumberError": "請輸入電話號碼", + "phoneNumberTypeError": "請輸入電話號碼類型", + "streetError": "請輸入地址", + "cityError": "請輸入城市名稱", + "stateError": "請輸入州名", + "zipCodeError": "請輸入郵遞區號", + "errorsToResolve": "出現一些錯誤;您需要解決問題才能繼續操作。", + "numberError": "請輸入一個大於 0 的有效數字。", + "selectAllThatApply": "請選擇所有適用項目。", + "selectAtLeastOne": "請選擇至少一個選項。", + "selectAnOption": "請選擇一個選項。", + "selectOption": "請選擇以上其中一個選項。", + "householdTooBig": "您的家庭人數過多。", + "householdTooSmall": "您的家庭人數過少。" + }, + "footer": { + "contact": "聯絡方式", + "disclaimer": "免責聲明", + "forGeneralQuestions": "若為一般計劃查詢,可以致電 000-000-0000 聯絡我們。", + "giveFeedback": "提供回饋意見", + "privacyPolicy": "隱私權政策", + "copyright": "Demonstration County © 2020 • 版權所有" + }, + "housingCounselors": { + "subtitle": "根據您的特定需求,請與您當地的房屋顧問商談。", + "languageServices": "語言服務: ", + "call": "請致電 %{number}", + "visitWebsite": "請瀏覽 %{name}" + }, + "leasingAgent": { + "contact": "聯絡租賃代理", + "dueToHighCallVolume": "由於來電人數眾多,您可能會聽到訊息留言。", + "officeHours": "辦公時間" + }, + "listings": { + "additionalInformation": "其他資訊", + "allUnits": "所有單位", + "allUnitsReservedFor": "保留給 %{type} 的所有單位", + "applicationDeadline": "申請截止日期", + "applicationFCFS": "先申請先服務", + "applicationFee": "申請費", + "applicationFeeDueAt": "在面談時繳費", + "applicationOpenPeriod": "接受申請期限", + "applicationPerApplicantAgeDescription": "每位年滿 18 歲的申請人", + "applicationsClosed": "申請期限已經結束", + "apply": { + "applicationsMustBeReceivedByDeadline": "申請表必須在截止日期前收到,並且不會考慮郵戳日期。", + "applicationWillBeAvailableOn": "申請表將可供下載,亦可在 %{openDate} 領取", + "applyOnline": "線上申請", + "downloadApplication": "下載申請表", + "dropOffApplication": "交回申請表", + "dropOffApplicationOrMail": "交回申請表或透過美國郵政寄回", + "getAPaperApplication": "索取紙本申請表", + "howToApply": "如何申請", + "paperApplicationsMustBeMailed": "紙本申請表必須經由美國郵政寄回,並且不能親自提交。", + "pickUpAnApplication": "領取申請表", + "postmarkedApplicationsMustBeReceivedByDate": "申請表必須在截止日期前收到。如果經由美國郵政寄送,則申請表上的郵戳日期必須在 %{applicationDueDate} 前,郵件最遲要在 %{postmarkReceivedByDate} 前寄達。我們不會受理在 %{postmarkReceivedByDate} 之後郵寄送達的申請表,即使郵戳日期在 %{applicationDueDate} 之前也一樣。若郵件有任何遺失或延誤,%{developer} 概不負責。", + "sendByUsMail": "用美國郵政寄送申請表", + "submitAPaperApplication": "提交紙本申請表" + }, + "availableAndWaitlist": "可提供單位和接受申請的候補名單", + "availableUnits": "可提供單位", + "availableUnitsAndWaitlist": "可提供單位和候補名單", + "availableUnitsAndWaitlistDesc": "在申請人填補所有可提供單位後,其他申請人將被列入 %{number} 個單位的候補名單內", + "bath": "浴室", + "browseListings": "瀏覽上市名單", + "closedListings": "已截止申請的上市名單", + "comingSoon": "即將上市!", + "confirmedPreferenceList": "確認 %{preference} 名單", + "creditHistory": "信用歷史", + "criminalBackground": "犯罪背景", + "depositOrMonthsRent": "或一個月租金", + "depositMayBeHigherForLowerCredit": "可能高於或低於的信用分數", + "developmentalDisabilities": "發展障礙人士", + "developmentalDisabilitiesDescription": "此樓宇有部分單位留給有發展障礙的人士。請瀏覽 housingchoices.org 以了解有關申請資格、要求、索取申請表方法等資訊;網站還可回答有關申請過程的任何其他疑問。", + "enterLotteryForWaitlist": "提交申請表,列入 %{units} 個單位候補名單的空缺名額。", + "forIncomeCalculations": "收入計算、家庭人數(包括所有住在單位內所有年齡的人)。", + "forIncomeCalculationsBMR": "收入計算是以單位類型為準", + "hideClosedListings": "隱藏已截止申請的上市名單", + "householdMaximumIncome": "家庭收入上限", + "householdSize": "家庭人數", + "importantProgramRules": "重要計劃規則", + "includesPriorityUnits": "包括為 %{priorities} 提供的優先單位", + "lotteryResults": { + "completeResultsWillBePosted": "全部抽籤結果將很快發佈。", + "downloadResults": "下載結果", + "header": "抽籤結果" + }, + "maxIncomeMonth": "最高收入 / 月", + "maxIncomeYear": "最高收入 / 年", + "moreBuildingSelectionCriteria": "了解「樓宇選擇標準」詳情", + "noAvailableUnits": "目前並無單位提供。", + "noOpenListings": "目前沒有上市名單接受申請。", + "occupancyDescriptionAllSro": "此樓宇的入住人數限制為每單位 1 人。", + "occupancyDescriptionNoSro": "此樓宇的入住人數限制根據單位類型而定。", + "occupancyDescriptionSomeSro": "此樓宇的入住人數因單位類型而異。單人房 (SRO) 限制 1 人入住一個單位,但不限年齡。至於所有其他類型的單位,入住人數限制不會算入 6 歲以下兒童。", + "openHouseEvent": { + "header": "開放參觀日" + }, + "percentAMIUnit": "%{percent}% 地區中位數收入 (AMI) 單位", + "priorityUnits": "優先單位", + "priorityUnitsDescription": "如果以下任何一項適用於您或您的家人,則此樓宇有預留的單位:", + "publicLottery": { + "header": "公開抽籤" + }, + "remainingUnitsAfterPreferenceConsideration": "在考慮所有優先權持有人之後,任何剩餘單位將提供給其他符合資格的申請人。", + "rentalHistory": "租賃記錄", + "requiredDocuments": "必須提供的文件", + "reservedCommunityBuilding": "%{type} 樓宇", + "reservedFor": "保留給 %{type}", + "reservedTypePlural": { + "family": "家庭", + "senior": "長者", + "veteran": "退伍軍人" + }, + "reservedUnits": "保留單位", + "reservedUnitsDescription": "您或您的家庭成員必須符合以下其中一項條件,才符合這些單位的申請資格:", + "reservedUnitsForWhoAre": "保留給是 %{reservedType} 的 %{communityType}", + "sections": { + "additionalFees": "其他費用", + "eligibilityTitle": "資格要求", + "eligibilitySubtitle": "收入、入住人數、優先權和補貼", + "rentalAssistanceTitle": "租屋援助", + "rentalAssistanceSubtitle": "此物業將考慮房屋選擇優惠券 (Housing Choice Vouchers)、第 8 條款 (Section 8) 補助券和其他有效的租屋援助計劃。若申請人領取有效的租金補貼,則規定的收入下限將根據租戶在使用補貼後所支付的租金 部分而定。", + "housingPreferencesTitle": "住房優先權", + "housingPreferencesSubtitle": "優先權持有人將獲最高排名。", + "additionalEligibilityTitle": "其他申請資格規則", + "additionalEligibilitySubtitle": "申請人又必須符合樓宇規則的規定。", + "processTitle": "申請程序", + "processSubtitle": "重要日期和聯絡資料", + "featuresTitle": "特點", + "featuresSubtitle": "便利設施、單位詳情和其他費用", + "neighborhoodTitle": "鄰里", + "neighborhoodSubtitle": "位置和交通", + "additionalInformationTitle": "其他資訊", + "additionalInformationSubtitle": "所需文件和遴選標準" + }, + "seeMaximumIncomeInformation": "查看收入上限資訊", + "seePreferenceInformation": "查看優先權資訊", + "seeUnitInformation": "查看單位資訊", + "showClosedListings": "顯示已截止申請的上市名單", + "singleRoomOccupancy": "單人房", + "singleRoomOccupancyDescription": "此物業提供限一人居住的單人房。租戶可以共用浴室,有時還可使用廚房設施。", + "unitTypes": { + "oneBdrm": "1 臥室", + "twoBdrm": "2 臥室", + "threeBdrm": "3 卧室", + "studio": "套房", + "SRO": "單人房" + }, + "unitsAreFor": "這些單位供 %{type} 申請。", + "unitsHaveAccessibilityFeaturesFor": "這些單位提供無障礙設施,供 %{type} 人士申請。", + "upcomingLotteries": { + "hide": "隱藏已截止申請的上市名單", + "noResults": "目前沒有即將抽籤但已截止申請的上市名單。", + "show": "顯示已截止申請的上市名單", + "title": "已截止申請的上市名單" + }, + "waitlist": { + "closed": "候補名單已截止申請", + "label": "候補名單", + "isOpen": "候補名單接受申請", + "currentSize": "目前的候補名單人數", + "finalSize": "最後候補名單人數", + "open": "接受申請的候補名單", + "openSlots": "接受申請的候補名單名額", + "submitAnApplication": "已排名次的申請人填滿所有可提供單位後,其餘已排名次的申請人將會被列入那些相同單位的候補名單上。", + "submitForWaitlist": "提交申請表,列入候補名單的空缺名額。", + "unitsAndWaitlist": "可提供單位和候補名單" + }, + "cc&r": "契約、條件及限制 (Covenants, Conditions and Restrictions,簡稱 CC&R's)", + "cc&rDescription": "CC&R's 旨在說明業主協會的規則,以及您可如何改裝物業的限制。", + "downloadPdf": "下載 PDF 檔案", + "rePricing": "重新定價", + "eligibilityNotebook": "申請資格筆記本", + "processInfo": "申請過程資訊", + "featuresCards": "物業特點說明卡", + "neighborhoodBuildings": "鄰里其他建築物", + "additionalInformationEnvelope": "額外資訊包" + }, + "lottery": { + "applicationsThatQualifyForPreference": "任何符合此優先權資格的申請,將獲得較前面的名次。", + "viewPreferenceList": "查看優先權名單" + }, + "nav": { + "accountSettings": "帳戶設定", + "browseProperties": "瀏覽物業", + "getAssistance": "尋求協助", + "getFeedback": "這是我們新網站的預覽。我們只是剛開始。我們希望獲得 您的回饋意見。", + "listings": "好屋推薦", + "properties": "物業", + "applications": "申請資訊", + "myAccount": "我的帳戶", + "myApplications": "我的申請", + "myDashboard": "我的儀表板", + "mySettings": "我的設定", + "signIn": "登入", + "signOut": "登出", + "siteTitle": "房屋入口網站", + "skip": "直接前往主要內容" + }, + "pageTitle": { + "additionalResources": "更多住房申請機會", + "disclaimer": "背書免責聲明", + "housingCounselors": "房屋顧問", + "getAssistance": "尋求協助", + "rentalListings": "查看租賃部分", + "rent": "租賃可負擔房屋", + "privacy": "隱私權政策", + "welcomeEnglish": "歡迎", + "welcomeSpanish": "Bienvenido", + "welcomeVietnamese": "Tiếng Việt" + }, + "pageDescription": { + "welcome": "在 %{regionName} 的房屋網站搜尋並申請可負擔房屋", + "listing": "申請在 %{regionName} 的 %{listingName}(與 Exygy 合作興建)可負擔房屋。" + }, + "region": { + "name": "當地地區" + }, + "states": { + "AL": "Alabama(阿拉巴馬州)", + "AK": "Alaska(阿拉斯加州)", + "AZ": "Arizona(亞利桑那州)", + "AR": "Arkansas(阿肯色州)", + "CA": "California(加利福尼亞州)", + "CO": "Colorado(科羅拉多州)", + "CT": "Connecticut(康乃迪克州)", + "DE": "Delaware(德拉瓦州)", + "DC": "District Of Columbia(哥倫比亞特區)", + "FL": "Florida(佛羅里達州)", + "GA": "Georgia(喬治亞州)", + "HI": "Hawaii(夏威夷州)", + "ID": "Idaho(愛達荷州)", + "IL": "Illinois(伊利諾州)", + "IN": "Indiana(印第安納州)", + "IA": "Iowa(愛荷華州)", + "KS": "Kansas(堪薩斯州)", + "KY": "Kentucky(肯塔基州)", + "LA": "Louisiana(路易斯安那州)", + "ME": "Maine(緬因州)", + "MD": "Maryland(馬里蘭州)", + "MA": "Massachusetts(麻薩諸塞州)", + "MI": "Michigan(密西根州)", + "MN": "Minnesota(明尼蘇達州)", + "MS": "Mississippi(密西西比州)", + "MO": "Missouri(密蘇里州)", + "MT": "Missouri(蒙大拿州)", + "NE": "Nebraska(內布拉斯加州)", + "NV": "Nevada(內華達州)", + "NH": "New Hampshire(新罕布夏州)", + "NJ": "New Jersey(紐澤西州)", + "NM": "New Mexico(新墨西哥州)", + "NY": "New York(紐約州)", + "NC": "North Carolina(北卡羅來納州)", + "ND": "North Dakota(北達科他州)", + "OH": "Ohio(俄亥俄州)", + "OK": "Oklahoma(俄克拉何馬州)", + "OR": "Oregon(俄勒岡州)", + "PA": "Pennsylvania(賓夕法尼亞州)", + "RI": "Rhode Island(羅德島)", + "SC": "South Carolina(南卡羅來納州)", + "SD": "South Dakota(南達科他州)", + "TN": "Tennessee(田納西州)", + "TX": "Texas(德克薩斯州)", + "UT": "Utah(猶他州)", + "VT": "Vermont(佛蒙特州)", + "VA": "Virginia(維吉尼亞州)", + "WA": "Washington(華盛頓州)", + "WV": "West Virginia(西維吉尼亞州)", + "WI": "Wisconsin(威斯康辛州)", + "WY": "Wyoming(懷俄明州)" + }, + "t": { + "additionalPhone": "其他電話號碼", + "area": "地區", + "areYouStillWorking": "您是否仍在工作?", + "accessibility": "無障礙設施", + "availability": "供應情況", + "back": "返回", + "built": "已興建", + "call": "致電", + "cancel": "取消", + "confirm": "確認", + "day": "日", + "delete": "刪除", + "deposit": "訂金", + "edit": "編輯", + "email": "電子郵件", + "emailAddressPlaceHolder": "you@myemail.com", + "floor": "樓層", + "floors": "樓層", + "getDirections": "取得路線", + "household": "家庭", + "income": "收入", + "letter": "信件", + "less": "以下", + "loginIsRequired": "必須登入才能瀏覽本頁。", + "menu": "功能表", + "minimumIncome": "收入下限", + "month": "月", + "more": "其他資訊", + "name": "姓名", + "neighborhood": "鄰里", + "next": "下一頁", + "no": "否", + "none": "無", + "noneFound": "找不到。", + "occupancy": "入住人數", + "or": "或", + "people": "人", + "person": "人", + "perMonth": "每月", + "perYear": "每年", + "petsPolicy": "寵物政策", + "phone": "電話號碼", + "phoneNumberPlaceholder": "(555) 555-5555", + "pleaseSelectOne": "請選取一項。", + "preferences": "優先權", + "propertyAmenities": "物業便利設施", + "range": "由 %{from} 至 %{to}", + "readLess": "閱讀較少內容", + "readMore": "閱讀更多內容", + "rent": "租金", + "review": "審查", + "seeDetails": "查看詳情", + "seeListing": "查看上市名單", + "selectOne": "選擇一項", + "showLess": "顯示較少內容", + "showMore": "顯示更多內容", + "skipToMainContent": "直接前往主要內容", + "smokingPolicy": "吸煙政策", + "sqFeet": "平方英尺", + "squareFeet": "平方英尺", + "submit": "提交", + "text": "簡訊", + "unit": "單位", + "units": "單位", + "unitAmenities": "單位設施", + "unitFeatures": "單位特點", + "unitType": "單位類型", + "viewMap": "檢視地圖", + "viewOnMap": "在地圖上檢視", + "year": "年", + "yes": "是", + "you": "您" + }, + "welcome": { + "allApplicationClosed": "目前所有申請已截止,但您可以查看已截止申請的上市名單。", + "seeRentalListings": "查看租賃部分", + "title": "申請此地的可負擔房屋:", + "seeMoreOpportunities": "查看更多租賃和自購住房的機會", + "viewAdditionalHousing": "瀏覽其他住房機會和資源" + }, + "whatToExpect": { + "label": "預期事項", + "applicantsWillBeContacted": "物業經紀人將按排名次序聯絡申請人,直到沒有空缺為止。", + "allInfoWillBeVerified": "您提供的所有資料都會受到查證,以確定您的資格。如果您作出任何不實陳述,則您的申請會從候補名單被刪除。如果我們無法證實您要求的住房優先權,您將不會獲得該優先權,但不會受到其他處罰。", + "bePreparedIfChosen": "若您的申請被選中,請準備填寫一份更加詳盡的申請表,並提供所需的證明文件。" + } +} diff --git a/ui-components/src/navigation/Breadcrumbs.scss b/ui-components/src/navigation/Breadcrumbs.scss index c5895e9e69..b91c54fc78 100644 --- a/ui-components/src/navigation/Breadcrumbs.scss +++ b/ui-components/src/navigation/Breadcrumbs.scss @@ -12,7 +12,7 @@ @apply self-center; &:not(:last-child)::after { - content: '\203A'; + content: "\203A"; @apply text-lg; @apply px-2; line-height: 1.4rem; diff --git a/ui-components/src/navigation/FooterNav.scss b/ui-components/src/navigation/FooterNav.scss index 67a79b407e..bd21d9fdea 100644 --- a/ui-components/src/navigation/FooterNav.scss +++ b/ui-components/src/navigation/FooterNav.scss @@ -11,7 +11,7 @@ @apply text-white; @apply block; @apply mt-2; - + @screen lg { @apply inline; @apply mt-0; @@ -44,4 +44,4 @@ @apply text-right; } } -} \ No newline at end of file +} diff --git a/ui-components/src/navigation/LanguageNav.stories.tsx b/ui-components/src/navigation/LanguageNav.stories.tsx index 9f7ac35909..46f8d5bbdf 100644 --- a/ui-components/src/navigation/LanguageNav.stories.tsx +++ b/ui-components/src/navigation/LanguageNav.stories.tsx @@ -8,14 +8,16 @@ export default { } export const Default = () => ( - + ) diff --git a/ui-components/src/notifications/AlertNotice.scss b/ui-components/src/notifications/AlertNotice.scss index 8046c8a2ec..6917c089ca 100644 --- a/ui-components/src/notifications/AlertNotice.scss +++ b/ui-components/src/notifications/AlertNotice.scss @@ -1,4 +1,3 @@ - // secondary alert messaging .alert-notice { @apply text-sm; @@ -34,7 +33,7 @@ } p { - @apply text-sm + @apply text-sm; } } diff --git a/ui-components/src/notifications/ApplicationStatus.scss b/ui-components/src/notifications/ApplicationStatus.scss index fd84be8746..476a0e9d7e 100644 --- a/ui-components/src/notifications/ApplicationStatus.scss +++ b/ui-components/src/notifications/ApplicationStatus.scss @@ -3,4 +3,4 @@ @screen lg { @apply whitespace-no-wrap; } -} \ No newline at end of file +} diff --git a/ui-components/src/page_components/listing/ListingMap.scss b/ui-components/src/page_components/listing/ListingMap.scss index fdeff8d182..b40bb3e4a2 100644 --- a/ui-components/src/page_components/listing/ListingMap.scss +++ b/ui-components/src/page_components/listing/ListingMap.scss @@ -11,7 +11,7 @@ animation-name: bounce; animation-fill-mode: both; animation-duration: 1s; - + &:after { @apply absolute; @apply rounded-full; @@ -33,4 +33,4 @@ left: 15px; top: 15px; z-index: 1; -} \ No newline at end of file +} diff --git a/ui-components/src/page_components/listing/ListingsGroup.scss b/ui-components/src/page_components/listing/ListingsGroup.scss index 7d9377fcb9..92d514b96d 100644 --- a/ui-components/src/page_components/listing/ListingsGroup.scss +++ b/ui-components/src/page_components/listing/ListingsGroup.scss @@ -30,7 +30,7 @@ @apply flex; @apply items-center; @apply mb-4; - + @screen md { @apply w-7/12; @apply mb-0; @@ -41,7 +41,7 @@ @apply w-full; @apply flex; @apply items-center; - + @screen md { @apply w-4/12; } @@ -62,4 +62,4 @@ @apply border-b-0; @apply border-l-4; } -} \ No newline at end of file +} diff --git a/ui-components/src/page_components/listing/ListingsList.scss b/ui-components/src/page_components/listing/ListingsList.scss index b1a9c0f896..f834d79858 100644 --- a/ui-components/src/page_components/listing/ListingsList.scss +++ b/ui-components/src/page_components/listing/ListingsList.scss @@ -44,4 +44,4 @@ .listings-row_table { @apply mb-4; -} \ No newline at end of file +} diff --git a/ui-components/src/page_components/listing/listing_sidebar/ApplicationSection.stories.tsx b/ui-components/src/page_components/listing/listing_sidebar/ApplicationSection.stories.tsx index 7f6533ec57..a3e9b981b3 100644 --- a/ui-components/src/page_components/listing/listing_sidebar/ApplicationSection.stories.tsx +++ b/ui-components/src/page_components/listing/listing_sidebar/ApplicationSection.stories.tsx @@ -12,7 +12,7 @@ export default { export const dueSoon = () => { const listing = Object.assign({}, ArcherListing) as Listing const days = 10 - listing.applicationOpenDate = new Date(moment().format()) + listing.applicationOpenDate = new Date(moment().format()) listing.waitlistCurrentSize = 0 listing.applicationDueDate = new Date(moment().add(days, "days").format()) return diff --git a/ui-components/src/prototypes/AppCard.scss b/ui-components/src/prototypes/AppCard.scss index 4b30436798..b9efbda909 100644 --- a/ui-components/src/prototypes/AppCard.scss +++ b/ui-components/src/prototypes/AppCard.scss @@ -26,7 +26,6 @@ } .app-card__section { - } .app-card__back { diff --git a/ui-components/src/prototypes/Back.scss b/ui-components/src/prototypes/Back.scss index 4c2a6a58d1..1a0dfe8820 100644 --- a/ui-components/src/prototypes/Back.scss +++ b/ui-components/src/prototypes/Back.scss @@ -10,10 +10,10 @@ @apply self-center; &:before { - content: '\2039'; + content: "\2039"; @apply text-xl; @apply px-2; - line-height: .75rem; + line-height: 0.75rem; } } } diff --git a/ui-components/src/prototypes/Back.stories.tsx b/ui-components/src/prototypes/Back.stories.tsx index 233af2a303..e1ff63c9ea 100644 --- a/ui-components/src/prototypes/Back.stories.tsx +++ b/ui-components/src/prototypes/Back.stories.tsx @@ -8,5 +8,7 @@ export default { } export const Back = () => ( - Back + + Back + ) diff --git a/ui-components/src/prototypes/ButtonPager.scss b/ui-components/src/prototypes/ButtonPager.scss index f6dec23a53..01b2ff5bf5 100644 --- a/ui-components/src/prototypes/ButtonPager.scss +++ b/ui-components/src/prototypes/ButtonPager.scss @@ -4,13 +4,13 @@ button, .button { @apply mb-0; - } + } } .button-pager__row { @apply py-2; @apply px-8; - + @screen md { @apply py-4; } diff --git a/ui-components/src/prototypes/FieldSection.scss b/ui-components/src/prototypes/FieldSection.scss index d8ec935334..ce4215b82e 100644 --- a/ui-components/src/prototypes/FieldSection.scss +++ b/ui-components/src/prototypes/FieldSection.scss @@ -32,4 +32,4 @@ @apply bg-gray-200; } } -} \ No newline at end of file +} diff --git a/ui-components/src/prototypes/Message.stories.tsx b/ui-components/src/prototypes/Message.stories.tsx index 6a7ae666af..4692baab2a 100644 --- a/ui-components/src/prototypes/Message.stories.tsx +++ b/ui-components/src/prototypes/Message.stories.tsx @@ -8,8 +8,4 @@ export default { export const standard = () => Message -export const warning = () => ( - - Warning - -) +export const warning = () => Warning diff --git a/ui-components/src/prototypes/SideNav.stories.tsx b/ui-components/src/prototypes/SideNav.stories.tsx index f0c34bb8aa..72da30ad30 100644 --- a/ui-components/src/prototypes/SideNav.stories.tsx +++ b/ui-components/src/prototypes/SideNav.stories.tsx @@ -24,7 +24,9 @@ export const Default = () => ( export const Current = () => (
  • - One + + One +
  • Two diff --git a/ui-components/src/prototypes/SummaryCard.scss b/ui-components/src/prototypes/SummaryCard.scss index c93b7635a1..8cb890cd88 100644 --- a/ui-components/src/prototypes/SummaryCard.scss +++ b/ui-components/src/prototypes/SummaryCard.scss @@ -25,7 +25,7 @@ @apply text-primary-dark; &:after { - content: '\203A'; + content: "\203A"; @apply text-2xl; @apply px-2; line-height: 1.4rem; diff --git a/ui-components/src/sections/ListSection.scss b/ui-components/src/sections/ListSection.scss index 6f513724f8..093ef9b386 100644 --- a/ui-components/src/sections/ListSection.scss +++ b/ui-components/src/sections/ListSection.scss @@ -4,4 +4,4 @@ @screen md { @apply mt-0; } -} \ No newline at end of file +}