Skip to content

Commit

Permalink
fix: display ownership kind correctly
Browse files Browse the repository at this point in the history
  • Loading branch information
Falinor committed Oct 8, 2024
1 parent 76392eb commit e8134d2
Show file tree
Hide file tree
Showing 10 changed files with 44 additions and 45 deletions.
1 change: 1 addition & 0 deletions frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
"react-use": "^17.5.1",
"redux": "^5.0.1",
"ts-essentials": "^10.0.2",
"ts-pattern": "^5.4.0",
"uuid": "^9.0.1",
"web-vitals": "^1.1.2",
"whatwg-fetch": "^3.6.20",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Text } from '../_dsfr';
import { Housing, OwnershipKindLabels } from '../../models/Housing';
import { formatOwnershipKind, Housing } from '../../models/Housing';
import { cadastralClassificationOptions } from '../../models/HousingFilters';
import HousingDetailsSubCard from './HousingDetailsSubCard';

Expand All @@ -21,7 +21,7 @@ function HousingDetailsSubCardProperties({ housing }: Props) {
Type de propriété
</Text>
<Text spacing="mb-1w">
{OwnershipKindLabels[housing.ownershipKind]}
{formatOwnershipKind(housing.ownershipKind)}
</Text>
</div>
<div>
Expand Down Expand Up @@ -49,7 +49,7 @@ function HousingDetailsSubCardProperties({ housing }: Props) {
<Text spacing="mb-1w">
{
cadastralClassificationOptions.find(
(_) => _.value === String(housing.cadastralClassification),
(_) => _.value === String(housing.cadastralClassification)
)?.label
}
</Text>
Expand Down
27 changes: 12 additions & 15 deletions frontend/src/models/Housing.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import { differenceInDays, format } from 'date-fns';
import { match, Pattern } from 'ts-pattern';

import {
EnergyConsumption,
HousingDTO,
HousingKind,
HousingStatus,
INTERNAL_CO_CONDOMINIUM_VALUES,
INTERNAL_MONO_CONDOMINIUM_VALUES,
Occupancy
} from '@zerologementvacant/models';
import { Owner, toOwnerDTO } from './Owner';
Expand Down Expand Up @@ -38,7 +41,7 @@ export interface Housing {
uncomfortable: boolean;
cadastralClassification: number;
taxed: boolean;
ownershipKind: OwnershipKinds;
ownershipKind: string;
buildingHousingCount?: number;
buildingVacancyRate: number;
dataFileYears: string[];
Expand Down Expand Up @@ -128,22 +131,16 @@ export function byAddress(h1: Housing, h2: Housing): Compare {
return byCity;
}

export const hasGeoPerimeters = (housing: Housing) =>
housing.geoPerimeters &&
housing.geoPerimeters.filter((_) => _ !== null).length > 0;

export enum OwnershipKinds {
Single = 'single',
CoOwnership = 'co',
Other = 'other'
export function formatOwnershipKind(kind: string | null): string {
return match(kind)
.with(
Pattern.union(null, ...INTERNAL_MONO_CONDOMINIUM_VALUES),
() => 'Monopropriété'
)
.with(Pattern.union(...INTERNAL_CO_CONDOMINIUM_VALUES), () => 'Copropriété')
.otherwise(() => 'Autre');
}

export const OwnershipKindLabels = {
[OwnershipKinds.Single]: 'Monopropriété',
[OwnershipKinds.CoOwnership]: 'Copropriété',
[OwnershipKinds.Other]: 'Autre'
};

export type HousingSortable = Pick<
Housing,
'rawAddress' | 'owner' | 'occupancy' | 'status'
Expand Down
18 changes: 7 additions & 11 deletions frontend/src/models/HousingFilters.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,7 @@ import {
} from '@zerologementvacant/models';
import { OptionTreeElement, SelectOption } from './SelectOption';
import { HousingStates } from './HousingState';
import {
OCCUPANCY_LABELS,
OwnershipKindLabels,
OwnershipKinds
} from './Housing';
import { OCCUPANCY_LABELS } from './Housing';
import { LocalityKindLabels, LocalityKinds } from './Locality';
import EnergyConsumptionOption from '../components/_app/AppMultiSelect/EnergyConsumptionOption';

Expand Down Expand Up @@ -228,16 +224,16 @@ export const taxedOptions: SelectOption[] = [

export const ownershipKindsOptions: SelectOption<OwnershipKind>[] = [
{
value: OwnershipKinds.Single,
label: OwnershipKindLabels[OwnershipKinds.Single]
value: 'single',
label: 'Monopropriété'
},
{
value: OwnershipKinds.CoOwnership,
label: OwnershipKindLabels[OwnershipKinds.CoOwnership]
value: 'co',
label: 'Copropriété'
},
{
value: OwnershipKinds.Other,
label: OwnershipKindLabels[OwnershipKinds.Other],
value: 'other',
label: 'Autre',
badgeLabel: 'Autre type de propriété'
}
];
Expand Down
4 changes: 2 additions & 2 deletions frontend/test/fixtures.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import randomstring from 'randomstring';

import { Owner } from '../src/models/Owner';
import { Address } from '../src/models/Address';
import { Housing, OccupancyKind, OwnershipKinds } from '../src/models/Housing';
import { Housing, OccupancyKind } from '../src/models/Housing';
import { AuthUser, User } from '../src/models/User';
import { SignupLink } from '../src/models/SignupLink';
import { Prospect } from '../src/models/Prospect';
Expand Down Expand Up @@ -103,7 +103,7 @@ export function genHousing(): Housing {
uncomfortable: false,
cadastralClassification: genNumber(1),
taxed: false,
ownershipKind: OwnershipKinds.Single,
ownershipKind: 'single',
buildingVacancyRate: genNumber(2),
status: HousingStatus.NEVER_CONTACTED,
source: null,
Expand Down
8 changes: 8 additions & 0 deletions packages/models/src/OwnershipKind.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
export const OWNERSHIP_KIND_VALUES = ['single', 'co', 'other'] as const;

export type OwnershipKind = (typeof OWNERSHIP_KIND_VALUES)[number];

export const INTERNAL_MONO_CONDOMINIUM_VALUES = ['single'] as const; // and null
export const INTERNAL_CO_CONDOMINIUM_VALUES = [
'co',
'CL',
'CLV',
'CV'
] as const;
8 changes: 0 additions & 8 deletions server/src/models/HousingApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,14 +87,6 @@ export enum OwnershipKindsApi {
Other = 'other'
}

export const INTERNAL_MONO_CONDOMINIUM_VALUES = ['single'] as const; // and null
export const INTERNAL_CO_CONDOMINIUM_VALUES = [
'co',
'CL',
'CLV',
'CV'
] as const;

export const getOwnershipKindFromValue = (value?: string) => {
return !value
? OwnershipKindsApi.Single
Expand Down
8 changes: 5 additions & 3 deletions server/src/repositories/housingRepository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,18 @@ import { Knex } from 'knex';
import _ from 'lodash';
import fp from 'lodash/fp';

import {
AddressKinds,
INTERNAL_CO_CONDOMINIUM_VALUES,
INTERNAL_MONO_CONDOMINIUM_VALUES
} from '@zerologementvacant/models';
import { HousingSource, PaginationOptions } from '@zerologementvacant/shared';
import db, { toRawArray, where } from '~/infra/database';
import {
EnergyConsumptionGradesApi,
HousingApi,
HousingRecordApi,
HousingSortApi,
INTERNAL_CO_CONDOMINIUM_VALUES,
INTERNAL_MONO_CONDOMINIUM_VALUES,
OccupancyKindApi
} from '~/models/HousingApi';
import { OwnerDBO, ownerTable, parseOwnerApi } from './ownerRepository';
Expand All @@ -32,7 +35,6 @@ import { groupsHousingTable } from './groupRepository';
import { housingOwnersTable } from './housingOwnerRepository';
import { campaignsHousingTable } from './campaignHousingRepository';
import { campaignsTable } from './campaignRepository';
import { AddressKinds } from '@zerologementvacant/models';
import { ReadableStream } from 'node:stream/web';
import { Readable } from 'node:stream';

Expand Down
8 changes: 5 additions & 3 deletions server/src/test/testFixtures.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ import {
import {
ENERGY_CONSUMPTION_GRADES,
HousingApi,
INTERNAL_CO_CONDOMINIUM_VALUES,
INTERNAL_MONO_CONDOMINIUM_VALUES,
OccupancyKindApi
} from '~/models/HousingApi';
import { CampaignApi } from '~/models/CampaignApi';
Expand Down Expand Up @@ -77,7 +75,11 @@ import { AddressApi } from '~/models/AddressApi';
import { HousingNoteApi, NoteApi } from '~/models/NoteApi';
import { SenderApi } from '~/models/SenderApi';
import { DraftApi } from '~/models/DraftApi';
import { HOUSING_KIND_VALUES } from '@zerologementvacant/models';
import {
HOUSING_KIND_VALUES,
INTERNAL_CO_CONDOMINIUM_VALUES,
INTERNAL_MONO_CONDOMINIUM_VALUES
} from '@zerologementvacant/models';

export { genGeoCode } from '@zerologementvacant/utils';

Expand Down
1 change: 1 addition & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -9426,6 +9426,7 @@ __metadata:
rimraf: "npm:^5.0.10"
sass: "npm:^1.79.4"
ts-essentials: "npm:^10.0.2"
ts-pattern: "npm:^5.4.0"
typescript: "npm:^5.6.2"
undici: "npm:^6.19.8"
uuid: "npm:^9.0.1"
Expand Down

0 comments on commit e8134d2

Please sign in to comment.