diff --git a/src/data/virksomhet/virksomhetQueryHooks.ts b/src/data/virksomhet/virksomhetQueryHooks.ts index 569d4e526..65092c3d6 100644 --- a/src/data/virksomhet/virksomhetQueryHooks.ts +++ b/src/data/virksomhet/virksomhetQueryHooks.ts @@ -7,7 +7,7 @@ import { import { useQuery } from "@tanstack/react-query"; import { minutesToMillis } from "@/utils/utils"; -const virksomhetQueryKeys = { +export const virksomhetQueryKeys = { virksomhet: (virksomhetsnummer: string) => ["virksomhet", virksomhetsnummer], }; diff --git a/src/mocks/common/mockConstants.ts b/src/mocks/common/mockConstants.ts index 5b530bd92..bbd4f0c27 100644 --- a/src/mocks/common/mockConstants.ts +++ b/src/mocks/common/mockConstants.ts @@ -107,6 +107,11 @@ export const NARMESTE_LEDER_DEFAULT = { personident: "02690001009", }; +const ANNEN_NARMESTE_LEDER = { + navn: "Sara Sjef", + personident: "02790001009", +}; + export const LEDERE_DEFAULT = [ { uuid: "3", @@ -125,6 +130,15 @@ export const LEDERE_DEFAULT = [ }, ]; +export const ANNEN_LEDER_AKTIV = { + ...LEDERE_DEFAULT[0], + uuid: "4", + virksomhetsnummer: VIRKSOMHET_BRANNOGBIL.virksomhetsnummer, + virksomhetsnavn: VIRKSOMHET_BRANNOGBIL.virksomhetsnavn, + narmesteLederPersonIdentNumber: ANNEN_NARMESTE_LEDER.personident, + narmesteLederNavn: ANNEN_NARMESTE_LEDER.navn, +}; + export const VEILEDER_BRUKER_KNYTNING_DEFAULT: VeilederBrukerKnytningDTO = { personident: ARBEIDSTAKER_DEFAULT.personIdent, tildeltVeilederident: VEILEDER_IDENT_DEFAULT, diff --git a/src/mocks/isoppfolgingstilfelle/oppfolgingstilfellePersonMock.ts b/src/mocks/isoppfolgingstilfelle/oppfolgingstilfellePersonMock.ts index 9da3153e6..c81f77fea 100644 --- a/src/mocks/isoppfolgingstilfelle/oppfolgingstilfellePersonMock.ts +++ b/src/mocks/isoppfolgingstilfelle/oppfolgingstilfellePersonMock.ts @@ -7,6 +7,18 @@ import { import { OppfolgingstilfellePersonDTO } from "@/data/oppfolgingstilfelle/person/types/OppfolgingstilfellePersonDTO"; import { addWeeks } from "@/utils/datoUtils"; +export const currentOppfolgingstilfelle = { + arbeidstakerAtTilfelleEnd: true, + start: addWeeks(new Date(), -40), + end: addWeeks(new Date(), 20), + virksomhetsnummerList: [ + VIRKSOMHET_PONTYPANDY.virksomhetsnummer, + VIRKSOMHET_BRANNOGBIL.virksomhetsnummer, + VIRKSOMHET_UTEN_NARMESTE_LEDER.virksomhetsnummer, + ], + antallSykedager: 294, + varighetUker: 48, +}; export const oppfolgingstilfellePersonMock: OppfolgingstilfellePersonDTO = { oppfolgingstilfelleList: [ { @@ -25,18 +37,7 @@ export const oppfolgingstilfellePersonMock: OppfolgingstilfellePersonDTO = { antallSykedager: 294, varighetUker: 48, }, - { - arbeidstakerAtTilfelleEnd: true, - start: addWeeks(new Date(), -40), - end: addWeeks(new Date(), 20), - virksomhetsnummerList: [ - VIRKSOMHET_PONTYPANDY.virksomhetsnummer, - VIRKSOMHET_BRANNOGBIL.virksomhetsnummer, - VIRKSOMHET_UTEN_NARMESTE_LEDER.virksomhetsnummer, - ], - antallSykedager: 294, - varighetUker: 48, - }, + currentOppfolgingstilfelle, ], personIdent: ARBEIDSTAKER_DEFAULT.personIdent, }; diff --git a/src/sider/oppfolgingsplan/oppfolgingsplaner/AktiveOppfolgingsplaner.tsx b/src/sider/oppfolgingsplan/oppfolgingsplaner/AktiveOppfolgingsplaner.tsx index 53cfa17da..526ea050d 100644 --- a/src/sider/oppfolgingsplan/oppfolgingsplaner/AktiveOppfolgingsplaner.tsx +++ b/src/sider/oppfolgingsplan/oppfolgingsplaner/AktiveOppfolgingsplaner.tsx @@ -78,12 +78,10 @@ export default function AktiveOppfolgingsplaner({ currentOppfolgingstilfelle ) : []; - const activeNarmesteLederIfSingle = - activeNarmesteLedere.length === 1 ? activeNarmesteLedere[0] : undefined; const isBeOmOppfolgingsplanVisible = toggles.isBeOmOppfolgingsplanEnabled && !!currentOppfolgingstilfelle && - !!activeNarmesteLederIfSingle; + activeNarmesteLedere.length > 0; return (
@@ -111,7 +109,7 @@ export default function AktiveOppfolgingsplaner({ {isBeOmOppfolgingsplanVisible && ( )} diff --git a/src/sider/oppfolgingsplan/oppfolgingsplaner/BeOmOppfolgingsplan.tsx b/src/sider/oppfolgingsplan/oppfolgingsplaner/BeOmOppfolgingsplan.tsx index 535d88508..127395e88 100644 --- a/src/sider/oppfolgingsplan/oppfolgingsplaner/BeOmOppfolgingsplan.tsx +++ b/src/sider/oppfolgingsplan/oppfolgingsplaner/BeOmOppfolgingsplan.tsx @@ -5,6 +5,8 @@ import { Box, Button, Heading, + Radio, + RadioGroup, ReadMore, } from "@navikt/ds-react"; import { PaperplaneIcon } from "@navikt/aksel-icons"; @@ -26,10 +28,11 @@ import { import { useOppfolgingsplanForesporselDocument } from "@/hooks/oppfolgingsplan/useOppfolgingsplanForesporselDocument"; import { oppfolgingstilfelle } from "../../../../test/aktivitetskrav/vurdering/vurderingTestUtils"; import LabelAndText from "@/components/LabelAndText"; +import { Controller, useForm } from "react-hook-form"; +import { useVirksomhetQuery } from "@/data/virksomhet/virksomhetQueryHooks"; const texts = { - aktivForesporsel: - "Obs! Det ble bedt om oppfølgingsplan fra denne arbeidsgiveren", + aktivForesporsel: "Obs! Det ble bedt om oppfølgingsplan fra", header: "Be om oppfølgingsplan", description: { info1: "Her kan du be om oppfølgingsplan fra arbeidsgiver.", @@ -38,6 +41,7 @@ const texts = { info3: "Nærmeste leder vil motta et varsel på e-post.", }, virksomhet: "Virksomhet:", + missingVirksomhet: "Vennligst velg arbeidsgiver", narmesteLeder: "Nærmeste leder:", button: "Send forespørsel", foresporselSendt: "Forespørsel om oppfølgingsplan sendt", @@ -82,21 +86,34 @@ function ReadMoreContent() { } interface Props { - aktivNarmesteLeder: NarmesteLederRelasjonDTO; + activeNarmesteLedere: NarmesteLederRelasjonDTO[]; currentOppfolgingstilfelle: OppfolgingstilfelleDTO; } +interface FormValues { + narmesteLeder: NarmesteLederRelasjonDTO; +} + export default function BeOmOppfolgingsplan({ - aktivNarmesteLeder, + activeNarmesteLedere, currentOppfolgingstilfelle, }: Props) { const personident = useValgtPersonident(); - const getOppfolgingsplanForesporsel = useGetOppfolgingsplanForesporselQuery(); + const { data } = useGetOppfolgingsplanForesporselQuery(); + const lastForesporsel = data?.[0]; + const { virksomhetsnavn: lastForesporselVirksomhetsnavn } = + useVirksomhetQuery(lastForesporsel?.virksomhetsnummer ?? ""); const postOppfolgingsplanForesporsel = usePostOppfolgingsplanForesporsel(); const { getForesporselDocument } = useOppfolgingsplanForesporselDocument(); - - const lastForesporselCreatedAt = - getOppfolgingsplanForesporsel.data?.[0]?.createdAt; + const defaultNarmesteLeder = + activeNarmesteLedere.length === 1 ? activeNarmesteLedere[0] : undefined; + const { control, watch, handleSubmit } = useForm({ + defaultValues: { + narmesteLeder: defaultNarmesteLeder, + }, + }); + const narmesteLeder = watch("narmesteLeder"); + const lastForesporselCreatedAt = lastForesporsel?.createdAt; const isAktivForesporsel = !!lastForesporselCreatedAt && !!currentOppfolgingstilfelle && @@ -106,19 +123,20 @@ export default function BeOmOppfolgingsplan({ oppfolgingstilfelle ) : false; - const aktivForesporselTekst = `${ - texts.aktivForesporsel + + const aktivForesporselTekst = `${texts.aktivForesporsel} ${ + lastForesporselVirksomhetsnavn ?? lastForesporsel?.virksomhetsnummer } ${tilLesbarDatoMedArUtenManedNavn(lastForesporselCreatedAt)}`; - function onClick() { + function submit(values: FormValues) { const foresporsel: NewOppfolgingsplanForesporselDTO = { arbeidstakerPersonident: personident, - virksomhetsnummer: aktivNarmesteLeder.virksomhetsnummer, + virksomhetsnummer: values.narmesteLeder.virksomhetsnummer, narmestelederPersonident: - aktivNarmesteLeder.narmesteLederPersonIdentNumber, + values.narmesteLeder.narmesteLederPersonIdentNumber, document: getForesporselDocument({ - narmesteLeder: aktivNarmesteLeder.narmesteLederNavn, - virksomhetNavn: aktivNarmesteLeder.virksomhetsnavn, + narmesteLeder: values.narmesteLeder.narmesteLederNavn, + virksomhetNavn: values.narmesteLeder.virksomhetsnavn, }), }; postOppfolgingsplanForesporsel.mutate(foresporsel, { @@ -127,7 +145,7 @@ export default function BeOmOppfolgingsplan({ } return ( - <> +
{isAktivForesporsel && ( {aktivForesporselTekst} @@ -144,16 +162,48 @@ export default function BeOmOppfolgingsplan({ {texts.description.info1} {texts.description.info2}
-
- - ( + { + const selectedNarmesteLeder = activeNarmesteLedere.find( + (nl) => nl.uuid === value + ); + field.onChange(selectedNarmesteLeder); + }} + > + {activeNarmesteLedere.map( + ({ virksomhetsnavn, uuid }, index) => ( + + {virksomhetsnavn} + + ) + )} + + )} /> -
+ )} + {narmesteLeder && ( +
+ + +
+ )}
{texts.description.info3} @@ -166,8 +216,8 @@ export default function BeOmOppfolgingsplan({ ) : (