Skip to content

Commit

Permalink
Merge branch 'main' into flytt-altinn-acl
Browse files Browse the repository at this point in the history
  • Loading branch information
fredrikpe committed Oct 10, 2024
2 parents b71aa21 + 3f4cf12 commit 7527055
Show file tree
Hide file tree
Showing 34 changed files with 299 additions and 406 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package no.nav.mulighetsrommet.domain.dbo

import kotlinx.serialization.Serializable
import no.nav.mulighetsrommet.domain.dto.ArenaDeltakerStatus
import no.nav.mulighetsrommet.domain.dto.NorskIdent
import no.nav.mulighetsrommet.domain.dto.Organisasjonsnummer
import no.nav.mulighetsrommet.domain.serializers.LocalDateTimeSerializer
Expand All @@ -24,21 +25,3 @@ data class ArenaDeltakerDbo(
@Serializable(with = LocalDateTimeSerializer::class)
val registrertIArenaDato: LocalDateTime,
)

enum class ArenaDeltakerStatus {
AVSLAG,
IKKE_AKTUELL,
TAKKET_NEI_TIL_TILBUD,
TILBUD,
TAKKET_JA_TIL_TILBUD,
INFORMASJONSMOTE,
AKTUELL,
VENTELISTE,
GJENNOMFORES,
DELTAKELSE_AVBRUTT,
GJENNOMFORING_AVBRUTT,
GJENNOMFORING_AVLYST,
FULLFORT,
IKKE_MOTT,
FEILREGISTRERT,
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package no.nav.mulighetsrommet.domain.dto

enum class ArbeidsgiverAvtaleStatus(val description: String) {
/**
* Tiltaket er påbegynt, men kan fortsatt mangle noe data som er påkrevd for at det skal kunne gjennomføres.
* Kan anses som en "kladd".
*/
PAABEGYNT("Påbegynt"),

/**
* Bl.a. når man mangler godkjenning av "controller", men kan muligens også være andre godkjenninger som
* kreves.
*/
MANGLER_GODKJENNING("Mangler godkjenning"),

/**
* Status er basert på startdato for avtale. Kan anta at avtalen er klar, men startdato er i fremtiden.
*/
KLAR_FOR_OPPSTART("Klar for oppstart"),

/**
* Avtale gjennomføres.
* Bruker deltar på tiltaket.
*/
GJENNOMFORES("Gjennomføres"),

/**
* Avtale har blitt avsluttet.
* Bruker har deltatt på tiltaket.
*/
AVSLUTTET("Avsluttet"),

/**
* Avtale ble avbrutt.
*/
AVBRUTT("Avbrutt"),

/**
* Tiltaket ble aldri noe av.
*/
ANNULLERT("Annullert"),
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package no.nav.mulighetsrommet.domain.dto

enum class ArenaDeltakerStatus(val description: String) {
AKTUELL("Aktuell"),
AVSLAG("Fått avslag"),
DELTAKELSE_AVBRUTT("Deltakelse avbrutt"),
FEILREGISTRERT("Feilregistrert"),
FULLFORT("Fullført"),
GJENNOMFORES("Gjennomføres"),
GJENNOMFORING_AVBRUTT("Gjennomføring avbrutt"),
GJENNOMFORING_AVLYST("Gjennomføring avlyst"),
IKKE_AKTUELL("Ikke aktuell"),
IKKE_MOTT("Ikke møtt"),
INFORMASJONSMOTE("Informasjonsmøte"),
TAKKET_JA_TIL_TILBUD("Takket ja til tilbud"),
TAKKET_NEI_TIL_TILBUD("Takket nei til tilbud"),
TILBUD("Godkjent tiltaksplass"),
VENTELISTE("Venteliste"),
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package no.nav.mulighetsrommet.domain.dto

import kotlinx.serialization.Serializable
import no.nav.mulighetsrommet.domain.serializers.LocalDateTimeSerializer
import java.time.LocalDateTime

@Serializable
data class DeltakerStatus(
val type: Type,
val aarsak: Aarsak?,
@Serializable(with = LocalDateTimeSerializer::class)
val opprettetDato: LocalDateTime,
) {
enum class Type(val description: String) {
AVBRUTT("Avbrutt"),
AVBRUTT_UTKAST("Avbrutt utkast"),
DELTAR("Deltar"),
FEILREGISTRERT("Feilregistrert"),
FULLFORT("Fullført"),
HAR_SLUTTET("Har sluttet"),
IKKE_AKTUELL("Ikke aktuell"),
KLADD("Kladd"),
PABEGYNT_REGISTRERING("Påbegynt registrering"),
SOKT_INN("Søkt om plass"),
UTKAST_TIL_PAMELDING("Utkast til påmelding"),
VENTELISTE("På venteliste"),
VENTER_PA_OPPSTART("Venter på oppstart"),
VURDERES("Vurderes"),
}

enum class Aarsak(val description: String) {
ANNET("Annet"),
AVLYST_KONTRAKT("Avlyst kontrakt"),
FATT_JOBB("Fått jobb"),
FEILREGISTRERT("Feilregistrert"),
FERDIG("Ferdig"),
FIKK_IKKE_PLASS("Fikk ikke plass"),
IKKE_MOTT("Møter ikke opp"),
OPPFYLLER_IKKE_KRAVENE("Oppfyller ikke kravene"),
SAMARBEIDET_MED_ARRANGOREN_ER_AVBRUTT("Samarbeidet med arrangøren er avbrutt"),
SYK("Syk"),
TRENGER_ANNEN_STOTTE("Trenger annen støtte"),
UTDANNING("Utdanning"),
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ package no.nav.mulighetsrommet.domain.dto
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import no.nav.mulighetsrommet.domain.Tiltakskode
import no.nav.mulighetsrommet.domain.dbo.ArenaDeltakerStatus
import no.nav.mulighetsrommet.domain.dto.amt.AmtDeltakerStatus
import no.nav.mulighetsrommet.domain.serializers.LocalDateSerializer
import no.nav.mulighetsrommet.domain.serializers.UUIDSerializer
import java.time.LocalDate
Expand Down Expand Up @@ -69,7 +67,7 @@ sealed class Tiltakshistorikk {
override val sluttDato: LocalDate?,
@Serializable(with = UUIDSerializer::class)
val id: UUID,
val status: AmtDeltakerStatus,
val status: DeltakerStatus,
val gjennomforing: Gjennomforing,
val arrangor: Arrangor,
) : Tiltakshistorikk() {
Expand All @@ -87,7 +85,7 @@ sealed class Tiltakshistorikk {
@Serializable(with = UUIDSerializer::class)
val avtaleId: UUID,
val tiltakstype: Tiltakstype,
val status: Status,
val status: ArbeidsgiverAvtaleStatus,
val arbeidsgiver: Arbeidsgiver,
) : Tiltakshistorikk() {
override val opphav = Opphav.TEAM_TILTAK
Expand All @@ -100,47 +98,6 @@ sealed class Tiltakshistorikk {
INKLUDERINGSTILSKUDD,
SOMMERJOBB,
}

enum class Status {
/**
* Tiltaket er påbegynt, men kan fortsatt mangle noe data som er påkrevd for at det skal kunne gjennomføres.
* Kan anses som en "kladd".
*/
PAABEGYNT,

/**
* Bl.a. når man mangler godkjenning av "controller", men kan muligens også være andre godkjenninger som
* kreves.
*/
MANGLER_GODKJENNING,

/**
* Status er basert på startdato for avtale. Kan anta at avtalen er klar, men startdato er i fremtiden.
*/
KLAR_FOR_OPPSTART,

/**
* Avtale gjennomføres.
* Bruker deltar på tiltaket.
*/
GJENNOMFORES,

/**
* Avtale har blitt avsluttet.
* Bruker har deltatt på tiltaket.
*/
AVSLUTTET,

/**
* Avtale ble avbrutt.
*/
AVBRUTT,

/**
* Tiltaket ble aldri noe av.
*/
ANNULLERT,
}
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package no.nav.mulighetsrommet.domain.dto.amt

import kotlinx.serialization.Serializable
import no.nav.mulighetsrommet.domain.dto.DeltakerStatus
import no.nav.mulighetsrommet.domain.serializers.LocalDateSerializer
import no.nav.mulighetsrommet.domain.serializers.LocalDateTimeSerializer
import no.nav.mulighetsrommet.domain.serializers.UUIDSerializer
Expand All @@ -19,51 +20,11 @@ data class AmtDeltakerV1Dto(
val startDato: LocalDate?,
@Serializable(with = LocalDateSerializer::class)
val sluttDato: LocalDate?,
val status: AmtDeltakerStatus,
val status: DeltakerStatus,
@Serializable(with = LocalDateTimeSerializer::class)
val registrertDato: LocalDateTime,
@Serializable(with = LocalDateTimeSerializer::class)
val endretDato: LocalDateTime,
val dagerPerUke: Float?,
val prosentStilling: Float?,
)

@Serializable
data class AmtDeltakerStatus(
val type: Type,
val aarsak: Aarsak?,
@Serializable(with = LocalDateTimeSerializer::class)
val opprettetDato: LocalDateTime,
) {
enum class Type {
AVBRUTT,
AVBRUTT_UTKAST,
DELTAR,
FEILREGISTRERT,
FULLFORT,
HAR_SLUTTET,
IKKE_AKTUELL,
KLADD,
PABEGYNT_REGISTRERING,
SOKT_INN,
UTKAST_TIL_PAMELDING,
VENTELISTE,
VENTER_PA_OPPSTART,
VURDERES,
}

enum class Aarsak {
SYK,
FATT_JOBB,
TRENGER_ANNEN_STOTTE,
FIKK_IKKE_PLASS,
UTDANNING,
FERDIG,
AVLYST_KONTRAKT,
IKKE_MOTT,
FEILREGISTRERT,
OPPFYLLER_IKKE_KRAVENE,
ANNET,
SAMARBEIDET_MED_ARRANGOREN_ER_AVBRUTT,
}
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
import { useQuery } from "@tanstack/react-query";
import { useSuspenseQuery } from "@tanstack/react-query";
import { QueryKeys } from "@/api/QueryKeys";
import { TiltaksgjennomforingerService } from "@mr/api-client";

export function useTiltaksgjennomforingDeltakerSummary(id?: string) {
return useQuery({
return useSuspenseQuery({
queryKey: QueryKeys.tiltaksgjennomforingDeltakerSummary(id!),
queryFn() {
return TiltaksgjennomforingerService.getTiltaksgjennomforingDeltakerSummary({
id: id!,
});
},
throwOnError: false,
enabled: !!id,
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ export const AvbrytGjennomforingModal = ({ modalRef, tiltaksgjennomforing }: Pro
}
body={
<>
{deltakerSummary && deltakerSummary.antallDeltakere > 0 && (
{deltakerSummary.antallDeltakere > 0 && (
<Alert variant="warning">
{`Det finnes ${deltakerSummary.antallDeltakere} deltaker${deltakerSummary.antallDeltakere > 1 ? "e" : ""} på gjennomføringen. Ved å
avbryte denne vil det føre til statusendring på alle deltakere som har en aktiv status.`}
Expand Down
10 changes: 7 additions & 3 deletions frontend/mr-admin-flate/src/components/skjema/InfoContainer.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
import { PropsWithChildren } from "react";
import styles from "./InfoContainer.module.scss";
import React from "react";
import { Laster } from "../laster/Laster";

interface Props {
dataTestId?: string;
}
export function InfoContainer({ dataTestId, children }: PropsWithChildren<Props>) {
return (
<div className={styles.info_container} data-testid={dataTestId}>
{children}
</div>
<React.Suspense fallback={<Laster tekst="Laster innhold..." />}>
<div className={styles.info_container} data-testid={dataTestId}>
{children}
</div>
</React.Suspense>
);
}
Original file line number Diff line number Diff line change
@@ -1,38 +1,35 @@
import { Toggles } from "@mr/api-client";
import { Heading } from "@navikt/ds-react";
import * as Highcharts from "highcharts";
import HighchartsReact from "highcharts-react-official";
import { Toggles } from "@mr/api-client";
import { useRef } from "react";
import { useFeatureToggle } from "../../api/features/useFeatureToggle";
import { useTiltaksgjennomforingDeltakerSummary } from "../../api/tiltaksgjennomforing/useTiltaksgjennomforingDeltakerSummary";
import { useFeatureToggle } from "@/api/features/useFeatureToggle";
import { useTiltaksgjennomforingDeltakerSummary } from "@/api/tiltaksgjennomforing/useTiltaksgjennomforingDeltakerSummary";
import styles from "./NokkeltallDeltakere.module.scss";

interface Props {
tiltaksgjennomforingId: string;
}

export function NokkeltallDeltakere({ tiltaksgjennomforingId }: Props) {
export function NokkeltallDeltakere(props: Props) {
const { data: enableDebug } = useFeatureToggle(
Toggles.MULIGHETSROMMET_ADMIN_FLATE_ENABLE_DEBUGGER,
);
const { data: deltakerSummary } = useTiltaksgjennomforingDeltakerSummary(tiltaksgjennomforingId);
const chartComponentRef = useRef<HighchartsReact.RefObject>(null);

if (!enableDebug) return null;
if (!enableDebug) {
return null;
}

if (!deltakerSummary) return null;
return <NokkeltallDeltakereGraph {...props} />;
}

const summaryUtenTotal = {
"Påbegynt registrering": deltakerSummary.pabegyntRegistrering,
"Venter på oppstart": deltakerSummary.antallDeltakereSomVenter,
Deltar: deltakerSummary.antallAktiveDeltakere,
"Har sluttet": deltakerSummary.antallAvsluttedeDeltakere,
"Ikke aktuelle": deltakerSummary.antallIkkeAktuelleDeltakere,
};
function NokkeltallDeltakereGraph({ tiltaksgjennomforingId }: Props) {
const { data: deltakerSummary } = useTiltaksgjennomforingDeltakerSummary(tiltaksgjennomforingId);
const chartComponentRef = useRef<HighchartsReact.RefObject>(null);

const dataArray = Object.keys(summaryUtenTotal).map((key) => ({
name: key,
y: summaryUtenTotal[key as keyof typeof summaryUtenTotal],
const dataArray = deltakerSummary.deltakereByStatus.map(({ status, count }) => ({
name: status,
y: count,
}));

const blaafarge = "#66CBEC";
Expand Down
Loading

0 comments on commit 7527055

Please sign in to comment.