From 29ae1df5ad05c149ef53e9abd0e8b64144879c68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Solga=CC=8Ard?= Date: Wed, 2 Oct 2024 15:53:15 +0200 Subject: [PATCH] IS-2621: Add stansdato datepicker --- .../manglendeMedvirkningTypes.ts | 32 +++-- .../useSendVurderingManglendeMedvirkning.tsx | 14 +- ...seManglendeMedvirkningVurderingDocument.ts | 6 +- .../mockIsmanglendemedvirkning.ts | 3 + .../forhandsvarsel/ForhandsvarselSkjema.tsx | 8 +- .../ikkeaktuell/IkkeAktuellSkjema.tsx | 8 +- .../oppfylt/OppfyltSkjema.tsx | 8 +- .../stans/StansSkjema.tsx | 134 +++++++++--------- .../stans/StansdatoDatePicker.tsx | 41 ++++++ .../unntak/UnntakSkjema.tsx | 8 +- .../ForhandsvarselTest.tsx | 4 +- test/manglendemedvirkning/IkkeAktuellTest.tsx | 4 +- test/manglendemedvirkning/OppfyltTest.tsx | 4 +- test/manglendemedvirkning/StansTest.tsx | 21 +-- test/manglendemedvirkning/UnntakTest.tsx | 4 +- .../vurderingDocuments.ts | 4 +- 16 files changed, 180 insertions(+), 123 deletions(-) create mode 100644 src/sider/manglendemedvirkning/stans/StansdatoDatePicker.tsx diff --git a/src/data/manglendemedvirkning/manglendeMedvirkningTypes.ts b/src/data/manglendemedvirkning/manglendeMedvirkningTypes.ts index 63122b350..697fe0026 100644 --- a/src/data/manglendemedvirkning/manglendeMedvirkningTypes.ts +++ b/src/data/manglendemedvirkning/manglendeMedvirkningTypes.ts @@ -6,23 +6,34 @@ interface VurderingRequestDTO { document: DocumentComponentDto[]; } -export interface NewForhandsvarselVurderingRequestDTO - extends VurderingRequestDTO { +export interface ForhandsvarselVurdering extends VurderingRequestDTO { vurderingType: VurderingType.FORHANDSVARSEL; varselSvarfrist: Date; } -export interface NewFinalVurderingRequestDTO extends VurderingRequestDTO { - vurderingType: - | VurderingType.OPPFYLT - | VurderingType.STANS - | VurderingType.UNNTAK - | VurderingType.IKKE_AKTUELL; +export interface StansVurdering extends VurderingRequestDTO { + vurderingType: VurderingType.STANS; + stansdato: Date; +} + +export interface OppfyltVurdering extends VurderingRequestDTO { + vurderingType: VurderingType.OPPFYLT; +} + +export interface UnntakVurdering extends VurderingRequestDTO { + vurderingType: VurderingType.UNNTAK; +} + +export interface IkkeAktuellVurdering extends VurderingRequestDTO { + vurderingType: VurderingType.IKKE_AKTUELL; } export type NewVurderingRequestDTO = - | NewForhandsvarselVurderingRequestDTO - | NewFinalVurderingRequestDTO; + | ForhandsvarselVurdering + | StansVurdering + | OppfyltVurdering + | UnntakVurdering + | IkkeAktuellVurdering; export interface VurderingResponseDTO { uuid: string; @@ -31,6 +42,7 @@ export interface VurderingResponseDTO { vurderingType: VurderingType; veilederident: string; begrunnelse: string; + stansdato?: Date; document: DocumentComponentDto[]; varsel: Varsel | null; } diff --git a/src/data/manglendemedvirkning/useSendVurderingManglendeMedvirkning.tsx b/src/data/manglendemedvirkning/useSendVurderingManglendeMedvirkning.tsx index 36aa29f74..3f2e45e2f 100644 --- a/src/data/manglendemedvirkning/useSendVurderingManglendeMedvirkning.tsx +++ b/src/data/manglendemedvirkning/useSendVurderingManglendeMedvirkning.tsx @@ -3,14 +3,12 @@ import { useMutation, useQueryClient } from "@tanstack/react-query"; import { ISMANGLENDEMEDVIRKNING_ROOT } from "@/apiConstants"; import { post } from "@/api/axios"; import { - NewForhandsvarselVurderingRequestDTO, - NewFinalVurderingRequestDTO, - VurderingResponseDTO, NewVurderingRequestDTO, + VurderingResponseDTO, } from "@/data/manglendemedvirkning/manglendeMedvirkningTypes"; import { manglendeMedvirkningQueryKeys } from "@/data/manglendemedvirkning/manglendeMedvirkningQueryHooks"; -function useSendVurdering() { +export function useSendVurdering() { const personident = useValgtPersonident(); const queryClient = useQueryClient(); const path = `${ISMANGLENDEMEDVIRKNING_ROOT}/manglende-medvirkning/vurderinger`; @@ -28,11 +26,3 @@ function useSendVurdering() { }, }); } - -export function useSendVurderingManglendeMedvirkning() { - return useSendVurdering(); -} - -export function useSendForhandsvarselManglendeMedvirkning() { - return useSendVurdering(); -} diff --git a/src/hooks/manglendemedvirkning/useManglendeMedvirkningVurderingDocument.ts b/src/hooks/manglendemedvirkning/useManglendeMedvirkningVurderingDocument.ts index bbc5fe43e..994b5eff6 100644 --- a/src/hooks/manglendemedvirkning/useManglendeMedvirkningVurderingDocument.ts +++ b/src/hooks/manglendemedvirkning/useManglendeMedvirkningVurderingDocument.ts @@ -7,10 +7,10 @@ import { import { useDocumentComponents } from "@/hooks/useDocumentComponents"; import { getForhandsvarselManglendeMedvirkningTexts, - getUnntakManglendeMedvirkningTexts, getIkkeAktuellManglendeMedvirkningTexts, getOppfyltManglendeMedvirkningTexts, getStansTexts, + getUnntakManglendeMedvirkningTexts, } from "@/data/manglendemedvirkning/manglendeMedvirkningDocumentTexts"; type ForhandsvarselDocumentValues = { @@ -34,7 +34,7 @@ type IkkeAktuellDocumentValues = { type StansDocumentValues = { begrunnelse: string; - varselSvarfrist: Date; + stansdato: Date; }; interface Documents { @@ -145,7 +145,7 @@ export function useManglendeMedvirkningVurderingDocument(): Documents { function getStansDocument( values: StansDocumentValues ): DocumentComponentDto[] { - const stansTexts = getStansTexts(values.varselSvarfrist); + const stansTexts = getStansTexts(values.stansdato); return [ createHeaderH1(stansTexts.header), createParagraph(stansTexts.fom), diff --git a/src/mocks/ismanglendemedvirkning/mockIsmanglendemedvirkning.ts b/src/mocks/ismanglendemedvirkning/mockIsmanglendemedvirkning.ts index 18526d336..93cdfe2b3 100644 --- a/src/mocks/ismanglendemedvirkning/mockIsmanglendemedvirkning.ts +++ b/src/mocks/ismanglendemedvirkning/mockIsmanglendemedvirkning.ts @@ -31,6 +31,8 @@ export const mockIsmanglendemedvirkning = [ svarfrist: addDays(new Date(), -1), } : null; + const stansdato = + body.vurderingType === "STANS" ? body.stansdato : undefined; const sentVurdering: VurderingResponseDTO = { uuid: generateUUID(), createdAt: new Date(), @@ -39,6 +41,7 @@ export const mockIsmanglendemedvirkning = [ veilederident: VEILEDER_DEFAULT.ident, begrunnelse: body.begrunnelse, document: body.document, + stansdato: stansdato, varsel: varsel, }; manglendeMedvirkningVurderinger = [ diff --git a/src/sider/manglendemedvirkning/forhandsvarsel/ForhandsvarselSkjema.tsx b/src/sider/manglendemedvirkning/forhandsvarsel/ForhandsvarselSkjema.tsx index 71b6607e7..fe2de0a33 100644 --- a/src/sider/manglendemedvirkning/forhandsvarsel/ForhandsvarselSkjema.tsx +++ b/src/sider/manglendemedvirkning/forhandsvarsel/ForhandsvarselSkjema.tsx @@ -5,9 +5,9 @@ import { Forhandsvisning } from "@/components/Forhandsvisning"; import { ButtonRow } from "@/components/Layout"; import { addDays, addWeeks } from "@/utils/datoUtils"; import { useManglendeMedvirkningVurderingDocument } from "@/hooks/manglendemedvirkning/useManglendeMedvirkningVurderingDocument"; -import { useSendForhandsvarselManglendeMedvirkning } from "@/data/manglendemedvirkning/useSendVurderingManglendeMedvirkning"; +import { useSendVurdering } from "@/data/manglendemedvirkning/useSendVurderingManglendeMedvirkning"; import { - NewForhandsvarselVurderingRequestDTO, + ForhandsvarselVurdering, VurderingType, } from "@/data/manglendemedvirkning/manglendeMedvirkningTypes"; import { useValgtPersonident } from "@/hooks/useValgtBruker"; @@ -42,7 +42,7 @@ interface SkjemaValues { export default function ForhandsvarselSkjema() { const personident = useValgtPersonident(); - const sendForhandsvarsel = useSendForhandsvarselManglendeMedvirkning(); + const sendForhandsvarsel = useSendVurdering(); const { register, watch, @@ -54,7 +54,7 @@ export default function ForhandsvarselSkjema() { useManglendeMedvirkningVurderingDocument(); const submit = (values: SkjemaValues) => { - const forhandsvarselRequestDTO: NewForhandsvarselVurderingRequestDTO = { + const forhandsvarselRequestDTO: ForhandsvarselVurdering = { vurderingType: VurderingType.FORHANDSVARSEL, personident: personident, begrunnelse: values.begrunnelse, diff --git a/src/sider/manglendemedvirkning/ikkeaktuell/IkkeAktuellSkjema.tsx b/src/sider/manglendemedvirkning/ikkeaktuell/IkkeAktuellSkjema.tsx index 71b7e4987..c1124f1f7 100644 --- a/src/sider/manglendemedvirkning/ikkeaktuell/IkkeAktuellSkjema.tsx +++ b/src/sider/manglendemedvirkning/ikkeaktuell/IkkeAktuellSkjema.tsx @@ -10,10 +10,10 @@ import { SkjemaInnsendingFeil } from "@/components/SkjemaInnsendingFeil"; import { Link } from "react-router-dom"; import { manglendeMedvirkningPath } from "@/routers/AppRouter"; import React from "react"; -import { useSendVurderingManglendeMedvirkning } from "@/data/manglendemedvirkning/useSendVurderingManglendeMedvirkning"; +import { useSendVurdering } from "@/data/manglendemedvirkning/useSendVurderingManglendeMedvirkning"; import { useForm } from "react-hook-form"; import { - NewFinalVurderingRequestDTO, + IkkeAktuellVurdering, VurderingType, } from "@/data/manglendemedvirkning/manglendeMedvirkningTypes"; import { useValgtPersonident } from "@/hooks/useValgtBruker"; @@ -49,7 +49,7 @@ export default function IkkeAktuellSkjema() { const { setNotification } = useNotification(); const { getIkkeAktuellDocument } = useManglendeMedvirkningVurderingDocument(); const personident = useValgtPersonident(); - const sendVurdering = useSendVurderingManglendeMedvirkning(); + const sendVurdering = useSendVurdering(); const { register, watch, @@ -59,7 +59,7 @@ export default function IkkeAktuellSkjema() { } = useForm(); const submit = (values: SkjemaValues) => { - const vurderingRequestDTO: NewFinalVurderingRequestDTO = { + const vurderingRequestDTO: IkkeAktuellVurdering = { personident, vurderingType: VurderingType.IKKE_AKTUELL, begrunnelse: values.begrunnelse, diff --git a/src/sider/manglendemedvirkning/oppfylt/OppfyltSkjema.tsx b/src/sider/manglendemedvirkning/oppfylt/OppfyltSkjema.tsx index 0ade648a2..bcbb38690 100644 --- a/src/sider/manglendemedvirkning/oppfylt/OppfyltSkjema.tsx +++ b/src/sider/manglendemedvirkning/oppfylt/OppfyltSkjema.tsx @@ -11,10 +11,10 @@ import { Forhandsvisning } from "@/components/Forhandsvisning"; import { Link } from "react-router-dom"; import { manglendeMedvirkningPath } from "@/routers/AppRouter"; import React from "react"; -import { useSendVurderingManglendeMedvirkning } from "@/data/manglendemedvirkning/useSendVurderingManglendeMedvirkning"; +import { useSendVurdering } from "@/data/manglendemedvirkning/useSendVurderingManglendeMedvirkning"; import { useForm } from "react-hook-form"; import { - NewFinalVurderingRequestDTO, + OppfyltVurdering, VurderingType, } from "@/data/manglendemedvirkning/manglendeMedvirkningTypes"; import { useValgtPersonident } from "@/hooks/useValgtBruker"; @@ -54,7 +54,7 @@ export default function OppfyltSkjema({ forhandsvarselSendtDato }: Props) { const { setNotification } = useNotification(); const { getOppfyltDocument } = useManglendeMedvirkningVurderingDocument(); const personident = useValgtPersonident(); - const sendVurdering = useSendVurderingManglendeMedvirkning(); + const sendVurdering = useSendVurdering(); const { register, watch, @@ -67,7 +67,7 @@ export default function OppfyltSkjema({ forhandsvarselSendtDato }: Props) { begrunnelse: values.begrunnelse, forhandsvarselSendtDato: forhandsvarselSendtDato, }; - const vurderingRequestDTO: NewFinalVurderingRequestDTO = { + const vurderingRequestDTO: OppfyltVurdering = { vurderingType: VurderingType.OPPFYLT, personident, begrunnelse: values.begrunnelse, diff --git a/src/sider/manglendemedvirkning/stans/StansSkjema.tsx b/src/sider/manglendemedvirkning/stans/StansSkjema.tsx index fb4a81f17..f6c464602 100644 --- a/src/sider/manglendemedvirkning/stans/StansSkjema.tsx +++ b/src/sider/manglendemedvirkning/stans/StansSkjema.tsx @@ -1,5 +1,4 @@ import { Forhandsvisning } from "@/components/Forhandsvisning"; -import { useSendVurderingManglendeMedvirkning } from "@/data/manglendemedvirkning/useSendVurderingManglendeMedvirkning"; import { manglendeMedvirkningPath } from "@/routers/AppRouter"; import { BodyShort, @@ -11,15 +10,17 @@ import { Textarea, } from "@navikt/ds-react"; import React from "react"; -import { useForm } from "react-hook-form"; +import { FormProvider, useForm } from "react-hook-form"; import { Link } from "react-router-dom"; import { useManglendeMedvirkningVurderingDocument } from "@/hooks/manglendemedvirkning/useManglendeMedvirkningVurderingDocument"; import { - NewFinalVurderingRequestDTO, + StansVurdering, VurderingType, } from "@/data/manglendemedvirkning/manglendeMedvirkningTypes"; import { useValgtPersonident } from "@/hooks/useValgtBruker"; import { useNotification } from "@/context/notification/NotificationContext"; +import { useSendVurdering } from "@/data/manglendemedvirkning/useSendVurderingManglendeMedvirkning"; +import { StansdatoDatePicker } from "@/sider/manglendemedvirkning/stans/StansdatoDatePicker"; const texts = { heading: "Skriv innstilling til NAY", @@ -51,6 +52,7 @@ const begrunnelseMaxLength = 5000; export interface StansSkjemaValues { begrunnelse: string; + stansdato: Date; } interface Props { @@ -59,27 +61,28 @@ interface Props { export default function StansSkjema({ varselSvarfrist }: Props) { const personident = useValgtPersonident(); - const sendVurdering = useSendVurderingManglendeMedvirkning(); + const sendVurdering = useSendVurdering(); const formMethods = useForm(); const { register, watch, + getValues, formState: { errors }, handleSubmit, } = formMethods; const { getStansDocument } = useManglendeMedvirkningVurderingDocument(); - const { setNotification } = useNotification(); - const submit = (values: StansSkjemaValues) => { - const stansVurdering: NewFinalVurderingRequestDTO = { + function submit(values: StansSkjemaValues) { + const stansVurdering: StansVurdering = { personident: personident, vurderingType: VurderingType.STANS, begrunnelse: values.begrunnelse, + stansdato: values.stansdato, document: getStansDocument({ begrunnelse: values.begrunnelse, - varselSvarfrist: varselSvarfrist, + stansdato: values.stansdato, }), }; @@ -90,66 +93,69 @@ export default function StansSkjema({ varselSvarfrist }: Props) { }); }, }); - }; + } return ( -
- - {texts.heading} - - {texts.p1} -