diff --git a/package.json b/package.json index eee13a8c..a71ae19a 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,6 @@ "scripts": { "dev": "next dev", "build": "npm run codegen && npm-run-all build:**", - "build:assets": "cp node_modules/@utrecht/assets/favicon.ico public/", "build:next": "next build", "clean": "rimraf .next/ src/generated/", "download": "curl --output src/openapi/openapi.yaml https://api.huwelijksplanner.online/openapi.yaml", diff --git a/pages/extra/index.tsx b/pages/extra/index.tsx index 01314af1..256014bf 100644 --- a/pages/extra/index.tsx +++ b/pages/extra/index.tsx @@ -78,13 +78,19 @@ export default function MultistepForm1() { if (marriageOptions.id) { HuwelijkService.huwelijkGet({ id: marriageOptions.id.toString() }).then((response: any) => { + const kosten = response.results.find( + (result: any) => + result.eigenschap === + "https://api.huwelijksplanner.online/api/ztc/v1/eigenschappen/416de8b8-d5d1-4f44-9a1e-1846d552292c" + ); // Kosten - HuwelijkService.huwelijkPostEigenschap({ + HuwelijkService.huwelijkPatchEigenschap({ + id: kosten.id, requestBody: { - zaak: `https://api.huwelijksplanner.online/api/zrc/v1/zaken/${response.id ?? ""}`, + zaak: `https://api.huwelijksplanner.online/api/zrc/v1/zaken/${marriageOptions.id ?? ""}`, eigenschap: "https://api.huwelijksplanner.online/api/ztc/v1/eigenschappen/416de8b8-d5d1-4f44-9a1e-1846d552292c", - waarde: getCosts(formData["marriage-certificate-kind"]).toString() ?? "", + waarde: `EUR ${getCosts(formData["marriage-certificate-kind"]).toString()}` ?? "", }, }).finally(() => { setMarriageOptions({ diff --git a/pages/index.tsx b/pages/index.tsx index fcaf487a..581ad043 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -1,6 +1,7 @@ import Head from "next/head"; import { useTranslation } from "next-i18next"; import { serverSideTranslations } from "next-i18next/serverSideTranslations"; +import { useContext } from "react"; import { ButtonLink, Document, @@ -23,6 +24,7 @@ import { } from "../src/components"; import { PageFooterTemplate } from "../src/components/huwelijksplanner/PageFooterTemplate"; import { PageHeaderTemplate } from "../src/components/huwelijksplanner/PageHeaderTemplate"; +import { MarriageOptionsContext } from "../src/context/MarriageOptionsContext"; export const getServerSideProps = async ({ locale }: { locale: string }) => ({ props: { @@ -32,6 +34,7 @@ export const getServerSideProps = async ({ locale }: { locale: string }) => ({ export default function HuwelijksplannerStep0() { const { t } = useTranslation(["common", "huwelijksplanner-step-0"]); + const [_, setMarriageOptions] = useContext(MarriageOptionsContext); return ( @@ -64,7 +67,19 @@ export default function HuwelijksplannerStep0() { Je datum is geregeld! - + + setMarriageOptions({ + id: "", + maxWitnessPerPartner: 0, + minWitnessPerPartner: 0, + partners: [], + witnesses: [], + }) + } + appearance="primary-action-button" + href="/trouw-opties" + > Start diff --git a/pages/persoonsgegevens/[person].tsx b/pages/persoonsgegevens/[person].tsx index 52f184b2..93ef3d66 100644 --- a/pages/persoonsgegevens/[person].tsx +++ b/pages/persoonsgegevens/[person].tsx @@ -34,9 +34,7 @@ import { PageFooterTemplate } from "../../src/components/huwelijksplanner/PageFo import { PageHeaderTemplate } from "../../src/components/huwelijksplanner/PageHeaderTemplate"; import { PersonalDataList } from "../../src/components/huwelijksplanner/PersonalDataList"; import { MarriageOptionsContext } from "../../src/context/MarriageOptionsContext"; -import { HuwelijkWithId } from "../../src/data/huwelijksplanner-state"; -import { resolveEmbedded } from "../../src/embedded"; -import { AssentService, HuwelijkService } from "../../src/generated"; +import { HuwelijkService } from "../../src/generated"; import { useIngeschrevenpersoonGetByBsn } from "../../src/hooks/useIngeschrevenpersoonGetByBsn"; import { getBsnFromJWT } from "../../src/openapi/authentication"; @@ -80,7 +78,6 @@ export default function MultistepForm1() { const [loadingAmbtenaar, setLoadingAmbtenaar] = useState(false); const [loadingLocatie, setLoadingLocatie] = useState(false); const [loadingKosten, setLoadingKosten] = useState(false); - const [loadingPartner, setLoadingPartner] = useState(false); const [loading, setLoading] = useState(false); const pageInitialized = useRef(false); const invalidStateDescriptionId = useId(); @@ -106,18 +103,11 @@ export default function MultistepForm1() { loadingAmbtenaar === true && loadingLocatie === true && loadingKosten === true && - loadingPartner === true && !huwelijkId ) { HuwelijkService.huwelijkGet({ id: huwelijkIdCreate ?? " " }).then((response: any) => { if (!reservation) return; - const partner = response.results.find( - (result: any) => - result.eigenschap === - "https://api.huwelijksplanner.online/api/ztc/v1/eigenschappen/4dee2797-1faf-4dc0-95f8-ddc4956302f3" - ); - const moment = response.results.find( (result: any) => result.eigenschap === @@ -127,7 +117,6 @@ export default function MultistepForm1() { setMarriageOptions({ ...marriageOptions, id: huwelijkIdCreate || "", - partners: [partner.waarde], reservation: { ...reservation, "ceremony-end": addMinutes(new Date(moment.waarde || ""), 15).toString(), @@ -140,7 +129,7 @@ export default function MultistepForm1() { } else { if (!huwelijkId) setLoading(true); } - }, [loadingType, loadingCeremonie, loadingMoment, loadingAmbtenaar, loadingLocatie, loadingKosten, loadingPartner]); + }, [loadingType, loadingCeremonie, loadingMoment, loadingAmbtenaar, loadingLocatie, loadingKosten]); useEffect(() => { if ( @@ -236,7 +225,7 @@ export default function MultistepForm1() { // Kosten HuwelijkService.huwelijkPostEigenschap({ requestBody: { - zaak: `https://api.huwelijksplanner.online/api/zrc/v1/zaken/${huwelijkIdCreate ?? ""}`, + zaak: `https://api.huwelijksplanner.online/api/zrc/v1/zaken/${response.id ?? ""}`, eigenschap: "https://api.huwelijksplanner.online/api/ztc/v1/eigenschappen/416de8b8-d5d1-4f44-9a1e-1846d552292c", waarde: getCosts(reservation) ?? "", @@ -244,18 +233,6 @@ export default function MultistepForm1() { }).finally(() => { setLoadingKosten(true); }); - - // Partner - HuwelijkService.huwelijkPostEigenschap({ - requestBody: { - zaak: `https://api.huwelijksplanner.online/api/zrc/v1/zaken/${response.id ?? ""}`, - eigenschap: - "https://api.huwelijksplanner.online/api/ztc/v1/eigenschappen/4dee2797-1faf-4dc0-95f8-ddc4956302f3", - waarde: JSON.stringify(persoonData) ?? "", - }, - }).finally(() => { - setLoadingPartner(true); - }); }) .finally(() => { setLoading(false); @@ -291,14 +268,15 @@ export default function MultistepForm1() { const partner = JSON.parse(partnerString.waarde); // Partner - HuwelijkService.huwelijkPostEigenschap({ + HuwelijkService.huwelijkPatchEigenschap({ + id: partnerString.id, requestBody: { - zaak: `https://api.huwelijksplanner.online/api/zrc/v1/zaken/${response.id ?? ""}`, + zaak: `https://api.huwelijksplanner.online/api/zrc/v1/zaken/${huwelijkId ?? ""}`, eigenschap: "https://api.huwelijksplanner.online/api/ztc/v1/eigenschappen/4dee2797-1faf-4dc0-95f8-ddc4956302f3", waarde: JSON.stringify([ - { partner }, + { ...partner }, { ...persoonData, requester: getBsnFromJWT(), @@ -323,23 +301,15 @@ export default function MultistepForm1() { HuwelijkService.huwelijkGet({ id: huwelijkIdCreate ?? " " }).then((response: any) => { if (!reservation) return; - const partnerString = response.results.find( - (result: any) => - result.eigenschap === - "https://api.huwelijksplanner.online/api/ztc/v1/eigenschappen/4dee2797-1faf-4dc0-95f8-ddc4956302f3" - ); - - const partner = JSON.parse(partnerString.waarde); - // Partner HuwelijkService.huwelijkPostEigenschap({ requestBody: { - zaak: `https://api.huwelijksplanner.online/api/zrc/v1/zaken/${response.id ?? ""}`, + zaak: `https://api.huwelijksplanner.online/api/zrc/v1/zaken/${huwelijkIdCreate ?? ""}`, eigenschap: "https://api.huwelijksplanner.online/api/ztc/v1/eigenschappen/4dee2797-1faf-4dc0-95f8-ddc4956302f3", waarde: JSON.stringify({ - ...partner, + ...persoonData, requester: getBsnFromJWT(), contact: { @@ -354,7 +324,7 @@ export default function MultistepForm1() { }, }).then(() => { const newPartner: any = JSON.stringify({ - ...partner, + ...persoonData, requester: getBsnFromJWT(), contact: { diff --git a/pages/voorgenomen-huwelijk/betalen/succes.tsx b/pages/voorgenomen-huwelijk/betalen/succes.tsx index 80d41807..05f67426 100644 --- a/pages/voorgenomen-huwelijk/betalen/succes.tsx +++ b/pages/voorgenomen-huwelijk/betalen/succes.tsx @@ -1,13 +1,15 @@ import { UtrechtBadgeStatus } from "@utrecht/web-component-library-react"; -import merge from "lodash.merge"; +import { addWeeks } from "date-fns"; +import _ from "lodash"; import Head from "next/head"; import { useRouter } from "next/router"; import { useTranslation } from "next-i18next"; import { serverSideTranslations } from "next-i18next/serverSideTranslations"; -import { useEffect, useState } from "react"; +import { useContext, useEffect, useState } from "react"; import { Alert, Aside, + Button, DataList, DataListActions, DataListItem, @@ -36,14 +38,9 @@ import { } from "../../../src/components"; import { PageFooterTemplate } from "../../../src/components/huwelijksplanner/PageFooterTemplate"; import { PageHeaderTemplate } from "../../../src/components/huwelijksplanner/PageHeaderTemplate"; -import { - exampleState, - HuwelijksplannerPartner, - HuwelijksplannerState, - Invitee, - Reservation, -} from "../../../src/data/huwelijksplanner-state"; -import { HuwelijksplannerAPI } from "../../../src/openapi/index"; +import { MarriageOptionsContext } from "../../../src/context/MarriageOptionsContext"; +import { exampleState, HuwelijksplannerState, Reservation } from "../../../src/data/huwelijksplanner-state"; +import { HuwelijkService } from "../../../src/generated"; export const getServerSideProps = async ({ locale }: { locale: string }) => ({ props: { @@ -54,42 +51,74 @@ export const getServerSideProps = async ({ locale }: { locale: string }) => ({ export default function HuwelijksplannerStep0() { const { t } = useTranslation(["huwelijksplanner-step-0", "huwelijksplanner", "form", "common"]); const [data, setData] = useState({ ...exampleState }); - const { locale = "nl" } = useRouter(); + const [get, setGet] = useState(0); + const [partnerData, setPartnerData] = useState({}); + const [witnessData, setWitnessData] = useState({}); + const { push, locale = "nl" } = useRouter(); + const [marriageOptions] = useContext(MarriageOptionsContext); useEffect(() => { - const huwelijkId = "6e69d32c-afdb-4aef-85cc-fd5ff743a84b"; + if (marriageOptions.id) { + HuwelijkService.huwelijkGet({ id: marriageOptions.id }).then((response: any) => { + const partnerString = response.results.find( + (result: any) => + result.eigenschap === + "https://api.huwelijksplanner.online/api/ztc/v1/eigenschappen/4dee2797-1faf-4dc0-95f8-ddc4956302f3" + ); + const partners = JSON.parse(partnerString.waarde); + setPartnerData(partners); + + const witnessString = response.results.find( + (result: any) => + result.eigenschap === + "https://api.huwelijksplanner.online/api/ztc/v1/eigenschappen/7e950e1d-04ab-482e-a066-299711d4b4ed" + ); + const witnesses = JSON.parse(witnessString.waarde); + setWitnessData(witnesses); + }); + } + }, [marriageOptions.id]); - HuwelijksplannerAPI.getHuwelijk(huwelijkId).then((huwelijk) => { - setData( - merge(data, { - "ceremony-start": huwelijk.moment, - reservation: { - "ceremony-start": huwelijk.moment, - }, - }) - ); - }); - }, [data]); + const getLocation = (location: string) => { + switch (location) { + case "e1b2aa89-dcd8-4b77-96fc-d41501cbc57f": + return `Stadskantoor ${process.env.NEXT_PUBLIC_ORGANISATION_NAME_SHORT ?? "Utrecht"}`; - const isValidMinWitnesses = (data: HuwelijksplannerState) => { + default: + return `Stadskantoor ${process.env.NEXT_PUBLIC_ORGANISATION_NAME_SHORT ?? "Utrecht"}`; + } + }; + + const isValidMinWitnesses = (data: any) => { // Return `true` for valid when every partner has reached the minimum amount of witnesses - return data.witnesses.length >= data.minWitnessPerPartner * 2; + return data.length >= 1 * 2; }; + function parseISOString(s: any) { + const b = s.split(/\D+/); + return new Date(Date.UTC(b[0], --b[1], b[2], b[3], b[4], b[5], b[6])); + } + const MarriageProcessSteps = ({ data }: { data: HuwelijksplannerState; locale: string }) => ( tussen vandaag en{" "} - {data["inviteWitnessEndDate"] ? ( - + {marriageOptions.reservation?.["ceremony-start"] !== undefined ? ( + ) : ( "" )}{" "} @@ -102,8 +131,19 @@ export default function HuwelijksplannerStep0() { steps: [ { id: "dc18f54d-aadd-498f-b518-2fc74ce8e9b6", - status: isValidMinWitnesses(data) ? "checked" : undefined, - title: `tussen vandaag en ${data["inviteWitnessEndDate"]}`, + status: isValidMinWitnesses(witnessData) ? "checked" : undefined, + title: `tussen vandaag en ${ + marriageOptions.reservation?.["ceremony-start"] !== undefined + ? new Intl.DateTimeFormat(locale, { + weekday: "long", + year: "numeric", + month: "long", + day: "numeric", + }).format( + new Date(addWeeks(parseISOString(marriageOptions.reservation?.["ceremony-start"] ?? ""), -2)) + ) + : "" + }`, }, ], }, @@ -121,14 +161,15 @@ export default function HuwelijksplannerStep0() { id: "1fc162c6-f1ab-4d1b-9007-d891cbd5614b", title: "Trouwdag", marker: 4, - date: data.reservation - ? (() as any) + date: marriageOptions.reservation + ? (() as any) : "", meta: - data.reservation && data.reservation["ceremony-location"] === "Locatie Stadskantoor" ? ( + marriageOptions.reservation && + marriageOptions.reservation["ceremony-location"] === "e1b2aa89-dcd8-4b77-96fc-d41501cbc57f" ? ( Jullie gaan trouwen op de vierde verdieping van het{" "} - Stadskantoor Utrecht. + Stadskantoor {process.env.NEXT_PUBLIC_ORGANISATION_NAME_SHORT ?? "Utrecht"}. ) : ( "" @@ -258,16 +299,18 @@ export default function HuwelijksplannerStep0() { */ ); - const PartnerDataList = ({ partner }: { partner: HuwelijksplannerPartner }) => ( + const PartnerDataList = ({ partner }: { partner: any }) => ( {t("form:name")} - {partner.name} + + {partner.naam.voornamen} {partner.naam.voorvoegsel} {partner.naam.geslachtsnaam} + {t("form:tel")} - {partner.tel} + {partner.contact.telefoonnummers[0].telefoonnummer} {t("form:email")} - {partner.email} + {partner.contact.emails[0].email} ); - const WitnessDataList = ({ witness }: { witness: Invitee; locale: string }) => ( + const WitnessDataList = ({ witness }: { witness: any; locale: string }) => ( {t("form:name")} @@ -312,7 +355,7 @@ export default function HuwelijksplannerStep0() { {t("form:email")} - {witness.email} + {witness.contact.emails[0].email} {t("huwelijksplanner:ceremony-location")} - {reservation["ceremony-location"]} + {getLocation(reservation["ceremony-location"])} ); @@ -373,13 +416,21 @@ export default function HuwelijksplannerStep0() { - {`${t("huwelijksplanner-payment-success:title")} - ${t("common:website-name")}`} + {`Succes - ${process.env.NEXT_PUBLIC_ORGANISATION_NAME}`} + {/* DEV */} + {/* */} Melding Voorgenomen Huwelijk Stap 5 van 5 – Je huwelijksdatum is geregeld @@ -389,7 +440,11 @@ export default function HuwelijksplannerStep0() { Gelukt - {data["reservation"] ? : ""} + {marriageOptions.reservation ? ( + + ) : ( + "" + )} Jullie reservering is geslaagd en we hebben de melding van het voorgenomen huwelijk ontvangen. @@ -404,21 +459,29 @@ export default function HuwelijksplannerStep0() {
Dit hebben jullie doorgegeven {data.reservation ? ( - + ) : ( "" )} + {/* DEV */} + {/* */}
Partners - {data.partners.map((partner, index) => ( - - ))} + {!_.isEmpty(partnerData) && + partnerData?.map((partner: any, index: number) => ( + + ))}
Getuigen - {data.witnesses.map((witness, index) => ( - - ))} + {!_.isEmpty(witnessData) && + witnessData.map((witness: any, index: number) => ( + + ))}