Skip to content

Commit

Permalink
IS-3061: Refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
eirikdahlen authored and ingring committed Feb 12, 2025
1 parent 6e423af commit f4c31a4
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 206 deletions.
43 changes: 2 additions & 41 deletions src/sider/dialogmoter/Motelandingsside.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import { InnkallingDialogmotePanel } from "./components/innkalling/InnkallingDia
import SideLaster from "../../components/SideLaster";
import { DialogmoteOnskePanel } from "./motebehov/DialogmoteOnskePanel";
import { useDialogmoterQuery } from "@/data/dialogmote/dialogmoteQueryHooks";
import { useMotebehovQuery } from "@/data/motebehov/motebehovQueryHooks";
import { useLedereQuery } from "@/data/leder/ledereQueryHooks";
import { DialogmoteFerdigstilteReferatPanel } from "@/sider/dialogmoter/components/DialogmoteFerdigstilteReferatPanel";
import { DialogmoteStatus } from "@/data/dialogmote/types/dialogmoteTypes";
Expand All @@ -16,14 +15,6 @@ import { Menypunkter } from "@/components/globalnavigasjon/GlobalNavigasjon";
import { MotehistorikkPanel } from "@/sider/dialogmoter/components/motehistorikk/MotehistorikkPanel";
import { MoteSvarHistorikk } from "@/sider/dialogmoter/components/motehistorikk/MoteSvarHistorikk";
import MotebehovHistorikk from "@/sider/dialogmoter/components/motehistorikk/MotebehovHistorikk";
import {
getMotebehovInActiveTilfelle,
getUbehandletSvarOgMeldtBehov,
sorterMotebehovDataEtterDato,
} from "@/utils/motebehovUtils";
import { MotebehovVeilederDTO } from "@/data/motebehov/types/motebehovTypes";
import { OppfolgingstilfelleDTO } from "@/data/oppfolgingstilfelle/person/types/OppfolgingstilfellePersonDTO";
import { useOppfolgingstilfellePersonQuery } from "@/data/oppfolgingstilfelle/person/oppfolgingstilfellePersonQueryHooks";

const texts = {
pageTitle: "Møtelandingsside",
Expand All @@ -42,53 +33,23 @@ export function Motelandingsside() {
isError: henterDialogmoteunntakFeilet,
isLoading: henterDialogmoteunntak,
} = useDialogmoteunntakQuery();
const useGetMotebehov = useMotebehovQuery();
const { isLoading: henterLedere, isError: henterLedereFeilet } =
useLedereQuery();

const henter =
henterDialogmoter ||
henterDialogmoteunntak ||
useGetMotebehov.isLoading ||
henterLedere;
const henter = henterDialogmoter || henterDialogmoteunntak || henterLedere;
const hentingFeilet =
henterLedereFeilet ||
useGetMotebehov.isError ||
henterDialogmoterFeilet ||
henterDialogmoteunntakFeilet;

const { latestOppfolgingstilfelle } = useOppfolgingstilfellePersonQuery();

function showDialogmotebehovPanel(
motebehov: MotebehovVeilederDTO[],
latestOppfolgingstilfelle: OppfolgingstilfelleDTO | undefined
): boolean {
const motebehovInLatestOppfolgingstilfelle = getMotebehovInActiveTilfelle(
motebehov?.sort(sorterMotebehovDataEtterDato),
latestOppfolgingstilfelle
);

if (
motebehovInLatestOppfolgingstilfelle.length > 0 &&
latestOppfolgingstilfelle
) {
return true;
} else {
return getUbehandletSvarOgMeldtBehov(motebehov).length > 0;
}
}

return (
<Side tittel={texts.pageTitle} aktivtMenypunkt={Menypunkter.DIALOGMOTE}>
<SideLaster henter={henter} hentingFeilet={hentingFeilet}>
<Sidetopp tittel={texts.dialogmoter} />

<Tredelt.Container>
<Tredelt.FirstColumn>
{showDialogmotebehovPanel(
useGetMotebehov.data,
latestOppfolgingstilfelle
) && <DialogmoteOnskePanel />}
<DialogmoteOnskePanel />
<InnkallingDialogmotePanel aktivtDialogmote={aktivtDialogmote} />
<DialogmoteFerdigstilteReferatPanel
ferdigstilteMoter={historiskeDialogmoter.filter(
Expand Down
2 changes: 1 addition & 1 deletion src/sider/dialogmoter/motebehov/DialogmoteOnskePanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { DialogmotePanel } from "@/sider/dialogmoter/components/DialogmotePanel"
import React from "react";

const texts = {
onskerOmDialogmote: "Behov om dialogmøte",
onskerOmDialogmote: "Behov for dialogmøte",
};

export const DialogmoteOnskePanel = () => {
Expand Down
88 changes: 55 additions & 33 deletions src/sider/dialogmoter/motebehov/MotebehovKvittering.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,23 @@ export const setSvarTekst = (
}
};

const ikonAlternativTekst = (deltakerOnskerMote?: boolean) => {
const ikonAlternativTekst = (
skjemaType: MotebehovSkjemaType | null,
deltakerOnskerMote?: boolean
) => {
switch (deltakerOnskerMote) {
case true: {
return "Svart ja.";
return skjemaType === MotebehovSkjemaType.SVAR_BEHOV
? "Svart ja."
: "Meldt behov.";
}
case false: {
return "Svart nei.";
}
default: {
return "Ikke svart.";
return skjemaType === MotebehovSkjemaType.SVAR_BEHOV
? "Ikke svart."
: "Ikke meldt behov.";
}
}
};
Expand Down Expand Up @@ -91,16 +98,19 @@ export const MotebehovKvitteringInnholdArbeidstaker = ({
const sykmeldt = useNavBrukerData();
const arbeidstakerOnskerMote =
arbeidstakersMotebehov?.motebehovSvar?.harMotebehov;
const skjemaTypeMotebehov =
skjemaType ?? arbeidstakersMotebehov?.skjemaType ?? null;

const arbeidstakerTekst = composePersonSvarText(
"Den sykmeldte: ",
skjemaType ?? arbeidstakersMotebehov?.skjemaType ?? null,
skjemaTypeMotebehov,
sykmeldt?.navn ? capitalizeAllWords(sykmeldt.navn) : sykmeldt?.navn,
arbeidstakerOnskerMote,
arbeidstakersMotebehov?.opprettetDato
);

const ikonAltTekst = `Sykmeldt ${ikonAlternativTekst(
skjemaTypeMotebehov,
arbeidstakerOnskerMote
)}`;

Expand Down Expand Up @@ -133,24 +143,25 @@ export function MotebehovArbeidsgiverKvittering({
motebehov,
skjemaType,
}: {
motebehov: MotebehovVeilederDTO | undefined;
motebehov: MotebehovVeilederDTO;
skjemaType?: MotebehovSkjemaType | null;
}) {
const arbeidsgiverOnskerMote = motebehov?.motebehovSvar?.harMotebehov;
const arbeidsgiverOnskerMote = motebehov.motebehovSvar.harMotebehov;
const skjemaTypeMotebehov = skjemaType ?? motebehov.skjemaType;
const ikonAltTekst = `Arbeidsgiver ${arbeidsgiverNavnEllerTomStreng(
motebehov?.opprettetAvNavn ?? null
)} ${ikonAlternativTekst(arbeidsgiverOnskerMote)}`;
motebehov.opprettetAvNavn
)} ${ikonAlternativTekst(skjemaTypeMotebehov, arbeidsgiverOnskerMote)}`;

return (
<MotebehovKvitteringInnhold
deltakerOnskerMote={arbeidsgiverOnskerMote}
ikonAltTekst={ikonAltTekst}
motebehov={motebehov}
tekst={composeArbeidsgiverSvarText(
motebehov?.opprettetAvNavn ?? null,
skjemaType ?? motebehov?.skjemaType ?? null,
motebehov.opprettetAvNavn,
skjemaTypeMotebehov,
arbeidsgiverOnskerMote,
motebehov?.opprettetDato
motebehov.opprettetDato
)}
/>
);
Expand All @@ -170,7 +181,7 @@ export const MotebehovKvitteringInnholdArbeidsgiverUtenMotebehov = ({
(leder: NarmesteLederRelasjonDTO, index: number) => {
const ikonAltTekst = `Arbeidsgiver ${arbeidsgiverNavnEllerTomStreng(
leder.narmesteLederNavn
)} ${ikonAlternativTekst(undefined)}`;
)} ${ikonAlternativTekst(skjemaType)}`;
return (
<MotebehovKvitteringInnhold
key={index}
Expand Down Expand Up @@ -200,28 +211,30 @@ function MotebehovInCurrentTilfelle({
(motebehov) => !isArbeidstakerMotebehov(motebehov)
);

function findSkjemaType(motebehov: MotebehovVeilederDTO | undefined) {
function findSkjemaType(
motebehov: MotebehovVeilederDTO | undefined
): MotebehovSkjemaType | null {
if (motebehovArbeidstaker && motebehovArbeidsgiver) {
return motebehov?.skjemaType;
return motebehov?.skjemaType ?? null;
} else if (motebehovArbeidstaker && !motebehovArbeidsgiver) {
return motebehovArbeidstaker?.skjemaType;
} else if (motebehovArbeidsgiver && !motebehovArbeidstaker) {
return motebehovArbeidsgiver?.skjemaType;
} else {
return undefined;
return null;
}
}

return (
<div>
<div className="flex flex-col gap-2">
<MotebehovKvitteringInnholdArbeidstaker
arbeidstakersMotebehov={motebehovArbeidstaker}
skjemaType={findSkjemaType(motebehovArbeidstaker) ?? null}
skjemaType={findSkjemaType(motebehovArbeidstaker)}
/>
<MotebehovArbeidsgiverInCurrentTilfelle
motebehov={motebehovArbeidsgiver}
oppfolgingstilfelle={oppfolgingstilfelle}
skjemaType={findSkjemaType(motebehovArbeidstaker) ?? null}
skjemaType={findSkjemaType(motebehovArbeidstaker)}
/>
</div>
);
Expand Down Expand Up @@ -257,26 +270,25 @@ function MotebehovArbeidsgiverInCurrentTilfelle({
}

function UbehandledeMotebehovUtenforTilfelle({
sorterteMotebehov,
sorterteMotebehovUtenforTilfelle,
}: {
sorterteMotebehov: MotebehovVeilederDTO[];
sorterteMotebehovUtenforTilfelle: MotebehovVeilederDTO[];
}) {
const ubehandledeEldreMotebehov =
getUbehandletSvarOgMeldtBehov(sorterteMotebehov);
const ubehandledeEldreMotebehov = getUbehandletSvarOgMeldtBehov(
sorterteMotebehovUtenforTilfelle
);
const motebehovArbeidstaker = ubehandledeEldreMotebehov.find(
isArbeidstakerMotebehov
);
const motebehovArbeidsgiver = ubehandledeEldreMotebehov.find(
(motebehov) => !isArbeidstakerMotebehov(motebehov)
);

return (
<div>
{(motebehovArbeidstaker || motebehovArbeidsgiver) && (
<BodyShort>
Ubehandlede møtebehov fra tidligere oppfølgingstilfelle
</BodyShort>
)}
return motebehovArbeidstaker || motebehovArbeidsgiver ? (
<div className="flex flex-col gap-2">
<BodyShort size="small">
Ubehandlede møtebehov fra tidligere oppfølgingstilfelle:
</BodyShort>
{motebehovArbeidstaker && (
<MotebehovKvitteringInnholdArbeidstaker
arbeidstakersMotebehov={motebehovArbeidstaker}
Expand All @@ -290,27 +302,37 @@ function UbehandledeMotebehovUtenforTilfelle({
/>
)}
</div>
) : (
<BodyShort size="small">
Alle tidligere møtebehov er behandlet, se møtebehovhistorikken for flere
detaljer.
</BodyShort>
);
}

export default function MotebehovKvittering() {
const { data: motebehov } = useMotebehovQuery();

const { latestOppfolgingstilfelle } = useOppfolgingstilfellePersonQuery();

const sortertMotebehov = motebehov.sort(sorterMotebehovDataEtterDato);

const motebehovInActiveTilfelle = getMotebehovInActiveTilfelle(
sortertMotebehov,
latestOppfolgingstilfelle
);
const harMotebehovInTilfelle = !!(
motebehovInActiveTilfelle.length > 0 && latestOppfolgingstilfelle
);

return motebehovInActiveTilfelle.length > 0 && latestOppfolgingstilfelle ? (
return sortertMotebehov.length === 0 ? (
<BodyShort>Ingen tidligere møtebehov</BodyShort>
) : harMotebehovInTilfelle ? (
<MotebehovInCurrentTilfelle
motebehovInTilfelle={motebehovInActiveTilfelle}
oppfolgingstilfelle={latestOppfolgingstilfelle}
/>
) : (
<UbehandledeMotebehovUtenforTilfelle sorterteMotebehov={sortertMotebehov} />
<UbehandledeMotebehovUtenforTilfelle
sorterteMotebehovUtenforTilfelle={sortertMotebehov}
/>
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export default function MotebehovKvitteringInnhold({
tekst,
}: Props) {
return (
<div className="flex items-center mt-4">
<div className="flex items-center">
<img
src={setSvarIkon(deltakerOnskerMote)}
alt={ikonAltTekst}
Expand All @@ -48,8 +48,6 @@ export default function MotebehovKvitteringInnhold({
<i>{motebehov?.motebehovSvar?.forklaring}</i>
</VStack>
)}
{motebehov?.behandletTidspunkt &&
"Behandlet: " + motebehov?.behandletTidspunkt}
</VStack>
</div>
);
Expand Down
Loading

0 comments on commit f4c31a4

Please sign in to comment.