Skip to content

Commit

Permalink
Merge pull request #22 from OpenWebconcept/feature/DIT-205/ingeschrev…
Browse files Browse the repository at this point in the history
…enpersonen-query

feature/DIT-205/ingeschrevenpersonen-query
  • Loading branch information
remko48 authored Jan 10, 2024
2 parents 2972cb2 + cb6cac9 commit f4a181a
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 16 deletions.
2 changes: 1 addition & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
},
"[typescript]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
"editor.defaultFormatter": "vscode.typescript-language-features"
},
"[javascript]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
Expand Down
27 changes: 12 additions & 15 deletions src/features/klant/persoon/service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
fetchLoggedIn,
throwIfNotOk,
parseJson,
parsePagination,
parseWithoutPagination,
ServiceResult,
type ServiceData,
enforceOneOrZero,
Expand All @@ -16,7 +16,7 @@ import { mutate } from "swrv";
import type { Ref } from "vue";
import type { Persoon } from "./types";

const personenRootUrl = window.gatewayBaseUri + "/api/ingeschrevenpersonen";
const personenRootUrl = window.gatewayBaseUri + "/api/brp_proxy/ingeschrevenpersonen";

type QueryParam = [string, string][];

Expand Down Expand Up @@ -49,18 +49,18 @@ const queryDictionary: PersoonQueryParams = {
bsn: (search) => [["burgerservicenummer", search]],
geboortedatumAchternaam: (search) => [
[
"embedded.geboorte.embedded.datumOnvolledig.datum",
"geboorte__datum",
formatIsoDate(search.geboortedatum),
],
["embedded.naam.geslachtsnaam", search.achternaam],
],
postcodeHuisnummer: ({ postcode, huisnummer }) => [
[
"embedded.verblijfplaats.postcode",
"verblijfplaats__postcode",
`${postcode.numbers}${postcode.digits}`,
],

["embedded.verblijfplaats.huisnummer[int_compare]", huisnummer],
["verblijfplaats__huisnummer", huisnummer],
],
};

Expand All @@ -71,8 +71,8 @@ function getQueryParams<K extends PersoonSearchField>(params: PersoonQuery<K>) {
}

function mapPersoon(json: any): Persoon {
const { verblijfplaats, naam, geboorte } = json?.embedded ?? {};
const { plaats, land } = geboorte?.embedded ?? {};
const { verblijfplaats, naam, geboorte } = json ?? {};
const { plaats, land } = geboorte ?? {};

const {
postcode,
Expand All @@ -83,7 +83,7 @@ function mapPersoon(json: any): Persoon {
huisnummertoevoeging,
} = verblijfplaats ?? {};

const datum = geboorte?.embedded?.datumOnvolledig ?? {};
const datum = geboorte?.datum ?? {};

const geboortedatum =
datum && new Date(datum.jaar, datum.maand - 1, datum.dag);
Expand All @@ -97,9 +97,9 @@ function mapPersoon(json: any): Persoon {
voornaam: naam?.voornamen,
voorvoegselAchternaam: naam?.voorvoegsel,
achternaam: naam?.geslachtsnaam,
geboorteplaats: plaats,
geboorteland: land,
woonplaats,
geboorteplaats: plaats ?? "-",
geboorteland: land ?? "-",
woonplaats: woonplaats ?? "-",
straat,
huisletter,
huisnummertoevoeging,
Expand All @@ -118,8 +118,6 @@ function getPersoonSearchUrl<K extends PersoonSearchField>(
url.searchParams.set(...tuple);
});

url.searchParams.set("extend[]", "all");

if (page !== undefined && page !== 1) {
url.searchParams.set("_page", page.toString());
}
Expand All @@ -131,7 +129,6 @@ function getPersoonUrlByBsn(bsn: string) {
if (!bsn) return "";
const url = new URL(personenRootUrl);
url.searchParams.set("burgerservicenummer", bsn);
url.searchParams.set("extend[]", "all");
return url.toString();
}

Expand All @@ -148,7 +145,7 @@ export const searchPersonen = (url: string) => {
return fetchLoggedIn(url)
.then(throwIfNotOk)
.then(parseJson)
.then((p) => parsePagination(p, mapPersoon))
.then((p) => parseWithoutPagination(p, mapPersoon))
.then((p) => {
p.page.forEach((persoon) => {
const key = getPersoonUniqueBsnId(persoon.bsn);
Expand Down
28 changes: 28 additions & 0 deletions src/services/gateway.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,34 @@ export async function parsePagination<T>(
};
}

export async function parseWithoutPagination<T>(
json: unknown,
map: (jObj: unknown) => T
): Promise<Paginated<Awaited<T>>> {
const { _embedded } = json as {
[key: string]: any;
};

if (
!Array.isArray(_embedded?.ingeschrevenpersonen)

)
throw new Error(
"unexpected in gateway json. expected pagination: " + JSON.stringify(json)
);

// just in case the mapper is async, we wrap the result in a Promise
const promises = _embedded?.ingeschrevenpersonen.map((x: any) => Promise.resolve(map(x)));

return {
page: await Promise.all(promises),
pageNumber: 1,
pageSize: promises.length,
totalPages: 1,
totalRecords: promises.length,
};
}

//date format helper: 2005-12-30UTC01:02:03
export const getFormattedUtcDate = () => {
const formatDateTimeElement = (x: number) => ("0" + x).slice(-2);
Expand Down

0 comments on commit f4a181a

Please sign in to comment.