Skip to content

Commit

Permalink
SVP: Rydder opp i arbeidsforhold og legger til strengere validering s… (
Browse files Browse the repository at this point in the history
#2737)

SVP: Rydder opp i arbeidsforhold og legger til strengere validering som samsvarer med frontend
  • Loading branch information
espenwaaga authored Oct 23, 2024
1 parent ffd6874 commit 64a694c
Show file tree
Hide file tree
Showing 16 changed files with 66 additions and 131 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.dto.endringssøknad.EndringssøknadDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.dto.endringssøknad.EndringssøknadForeldrepengerDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.dto.foreldrepenger.ForeldrepengesøknadDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.VirksomhetDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.ArbeidsforholdDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.SvangerskapspengesøknadDto;

@Import({InnsendingController.class, ApiExceptionHandler.class})
Expand Down Expand Up @@ -111,7 +111,7 @@ void foreldrepengesoknadAnnenInntektValidering() throws Exception {
void svangerskapspengerValidering() throws Exception {
var svpSøknad = mapper.readValue(bytesFra("json/svangerskapspengesøknad.json"), SvangerskapspengesøknadDto.class);
var tilrettelegging = svpSøknad.tilretteleggingsbehov().get(0);
var virksomhet = (VirksomhetDto) tilrettelegging.arbeidsforhold();
var virksomhet = (ArbeidsforholdDto.VirksomhetDto) tilrettelegging.arbeidsforhold();
var result = mvc.perform(post(InnsendingController.INNSENDING_CONTROLLER_PATH + "/svangerskapspenger")
.contentType(MediaType.APPLICATION_JSON)
.content(mapper.writeValueAsString(svpSøknad)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,7 @@
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.dto.ÅpenPeriodeDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.VedleggDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.VedleggReferanse;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.ArbeidsforholdDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.FrilanserDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.PrivatArbeidsgiverDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.SelvstendigNæringsdrivendeDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.VirksomhetDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.ArbeidsforholdDto;

public class DokumentasjonReferanseMapper {

Expand Down Expand Up @@ -49,10 +45,10 @@ public static List<VedleggReferanse> dokumentasjonSomDokumentererTilrettelegggin

private static boolean matcherArbeidsforhold(ArbeidsforholdDto arbeidsforholdVedlegg, ArbeidsforholdDto arbeidsforholdSøknad) {
return switch (arbeidsforholdSøknad) {
case VirksomhetDto v -> arbeidsforholdVedlegg instanceof VirksomhetDto afVedlegg && afVedlegg.id().equals(v.id());
case PrivatArbeidsgiverDto p -> arbeidsforholdVedlegg instanceof PrivatArbeidsgiverDto afVedlegg && afVedlegg.id().equals(p.id());
case SelvstendigNæringsdrivendeDto ignored -> arbeidsforholdVedlegg instanceof SelvstendigNæringsdrivendeDto;
case FrilanserDto ignored -> arbeidsforholdVedlegg instanceof FrilanserDto;
case ArbeidsforholdDto.VirksomhetDto v -> arbeidsforholdVedlegg instanceof ArbeidsforholdDto.VirksomhetDto afVedlegg && afVedlegg.id().equals(v.id());
case ArbeidsforholdDto.PrivatArbeidsgiverDto p -> arbeidsforholdVedlegg instanceof ArbeidsforholdDto.PrivatArbeidsgiverDto afVedlegg && afVedlegg.id().equals(p.id());
case ArbeidsforholdDto.SelvstendigNæringsdrivendeDto ignored -> arbeidsforholdVedlegg instanceof ArbeidsforholdDto.SelvstendigNæringsdrivendeDto;
case ArbeidsforholdDto.FrilanserDto ignored -> arbeidsforholdVedlegg instanceof ArbeidsforholdDto.FrilanserDto;
default -> throw new IllegalStateException("Unexpected value: " + arbeidsforholdSøknad);
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import no.nav.foreldrepenger.common.domain.felles.DokumentType;
import no.nav.foreldrepenger.common.domain.felles.InnsendingsType;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.dto.ÅpenPeriodeDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.ArbeidsforholdDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.ArbeidsforholdDto;

public record VedleggDto(UUID uuid,
@NotNull DokumentType skjemanummer,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger;


import static com.fasterxml.jackson.annotation.JsonTypeInfo.As.PROPERTY;
import static com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME;

import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;

import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import no.nav.foreldrepenger.common.domain.Fødselsnummer;
import no.nav.foreldrepenger.common.domain.Orgnummer;

@JsonTypeInfo(use = NAME, include = PROPERTY, property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(value = ArbeidsforholdDto.VirksomhetDto.class, name = "virksomhet"),
@JsonSubTypes.Type(value = ArbeidsforholdDto.PrivatArbeidsgiverDto.class, name = "privat"),
@JsonSubTypes.Type(value = ArbeidsforholdDto.SelvstendigNæringsdrivendeDto.class, name = "selvstendig"),
@JsonSubTypes.Type(value = ArbeidsforholdDto.FrilanserDto.class, name = "frilanser")
})
public interface ArbeidsforholdDto {

record VirksomhetDto(@Valid @NotNull Orgnummer id) implements ArbeidsforholdDto {}
record PrivatArbeidsgiverDto(@Valid @NotNull Fødselsnummer id) implements ArbeidsforholdDto {}
record FrilanserDto() implements ArbeidsforholdDto {}
record SelvstendigNæringsdrivendeDto() implements ArbeidsforholdDto {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,13 @@
import java.time.LocalDate;

import jakarta.validation.Valid;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.ArbeidsforholdDto;
import jakarta.validation.constraints.AssertTrue;
import jakarta.validation.constraints.NotNull;

public record AvtaltFerieDto(@Valid ArbeidsforholdDto arbeidsforhold, LocalDate fom, LocalDate tom) {
public record AvtaltFerieDto(@Valid @NotNull ArbeidsforholdDto arbeidsforhold, @NotNull LocalDate fom, @NotNull LocalDate tom) {

@AssertTrue(message = "Kan bare legge til avtalt ferie for virksomhet")
public boolean isArbeidsforholdVirksomhet() {
return arbeidsforhold instanceof ArbeidsforholdDto.VirksomhetDto || arbeidsforhold instanceof ArbeidsforholdDto.PrivatArbeidsgiverDto;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public record SvangerskapspengesøknadDto(LocalDate mottattdato,
utenlandsopphold = Optional.ofNullable(utenlandsopphold).orElse(List.of());
tilretteleggingsbehov = Optional.ofNullable(tilretteleggingsbehov).orElse(List.of());
andreInntekterSiste10Mnd = Optional.ofNullable(andreInntekterSiste10Mnd).orElse(List.of());
vedlegg = Optional.ofNullable(vedlegg).orElse(List.of());
avtaltFerie = Optional.ofNullable(avtaltFerie).orElse(List.of());
vedlegg = Optional.ofNullable(vedlegg).orElse(List.of());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,6 @@
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.ArbeidsforholdDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.FrilanserDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.SelvstendigNæringsdrivendeDto;

public record TilretteleggingbehovDto(@Valid @NotNull ArbeidsforholdDto arbeidsforhold,
@NotNull LocalDate behovForTilretteleggingFom,
Expand All @@ -29,7 +26,7 @@ public record TilretteleggingbehovDto(@Valid @NotNull ArbeidsforholdDto arbeidsf

@AssertTrue(message = "Tilrettelegging av næring eller frilans må ha satt risikofaktorer og tilretteleggingstiltak")
public boolean isRisikofaktorerOgTilretteleggingtiltakSattForNæringFrilans() {
if (arbeidsforhold instanceof FrilanserDto || arbeidsforhold instanceof SelvstendigNæringsdrivendeDto) {
if (arbeidsforhold instanceof ArbeidsforholdDto.FrilanserDto || arbeidsforhold instanceof ArbeidsforholdDto.SelvstendigNæringsdrivendeDto) {
return risikofaktorer != null && tilretteleggingstiltak != null;
}
return true;
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,7 @@
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.NæringDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.VedleggDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.SvangerskapspengesøknadDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.ArbeidsforholdDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.FrilanserDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.PrivatArbeidsgiverDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.SelvstendigNæringsdrivendeDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.VirksomhetDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.ArbeidsforholdDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.TilretteleggingbehovDto;


Expand Down Expand Up @@ -83,10 +79,10 @@ private static Tilretteleggingbehov tilTilretteleggingBehov(Tilretteleggingbehov
private static Arbeidsforhold tilArbeidsforhold(TilretteleggingbehovDto tilretteleggingbehov) {
var arbeidsforhold = tilretteleggingbehov.arbeidsforhold();
return switch (arbeidsforhold) {
case VirksomhetDto virksomhet -> new Virksomhet(virksomhet.id());
case PrivatArbeidsgiverDto privat -> new PrivatArbeidsgiver(privat.id());
case SelvstendigNæringsdrivendeDto ignore -> new SelvstendigNæringsdrivende(tilretteleggingbehov.risikofaktorer(), tilretteleggingbehov.tilretteleggingstiltak());
case FrilanserDto ignore -> new Frilanser(tilretteleggingbehov.risikofaktorer(), tilretteleggingbehov.tilretteleggingstiltak());
case ArbeidsforholdDto.VirksomhetDto virksomhet -> new Virksomhet(virksomhet.id());
case ArbeidsforholdDto.PrivatArbeidsgiverDto privat -> new PrivatArbeidsgiver(privat.id());
case ArbeidsforholdDto.SelvstendigNæringsdrivendeDto ignore -> new SelvstendigNæringsdrivende(tilretteleggingbehov.risikofaktorer(), tilretteleggingbehov.tilretteleggingstiltak());
case ArbeidsforholdDto.FrilanserDto ignore -> new Frilanser(tilretteleggingbehov.risikofaktorer(), tilretteleggingbehov.tilretteleggingstiltak());
default -> throw new IllegalStateException("Utviklerfeil: Arbeidsforhold kan bare være virksomhet, privat, næring, frilans, men er " + arbeidsforhold);
};
}
Expand All @@ -99,9 +95,9 @@ private static List<Tilretteleggingbehov.Tilrettelegging> tilTilrettelegging(Lis

private static Tilretteleggingbehov.Tilrettelegging tilTilrettelegging(TilretteleggingbehovDto.TilretteleggingDto tilrettelegging) {
return switch (tilrettelegging) {
case TilretteleggingbehovDto.TilretteleggingDto.Hel hel -> new Tilretteleggingbehov.Tilrettelegging.Hel(hel.fom());
case TilretteleggingbehovDto.TilretteleggingDto.Del del -> new Tilretteleggingbehov.Tilrettelegging.Delvis(del.fom(), del.stillingsprosent());
case TilretteleggingbehovDto.TilretteleggingDto.Ingen ingen -> new Tilretteleggingbehov.Tilrettelegging.Ingen(ingen.fom());
case TilretteleggingbehovDto.TilretteleggingDto.Hel(var fom) -> new Tilretteleggingbehov.Tilrettelegging.Hel(fom);
case TilretteleggingbehovDto.TilretteleggingDto.Del(var fom, var stillingsprosent) -> new Tilretteleggingbehov.Tilrettelegging.Delvis(fom, stillingsprosent);
case TilretteleggingbehovDto.TilretteleggingDto.Ingen(var fom) -> new Tilretteleggingbehov.Tilrettelegging.Ingen(fom);
default -> throw new IllegalArgumentException("Ugyldig tilrettelegging: " + tilrettelegging);
};
}
Expand All @@ -113,40 +109,12 @@ private static Opptjening tilOpptjening(NæringDto næring, FrilansDto frilans,

private static List<AvtaltFerie> tilFerieperioder(SvangerskapspengesøknadDto s) {
return safeStream(s.avtaltFerie()).map(af -> {
var arbeidsforhold = tilArbeidsforhold(af.arbeidsforhold());
var arbeidsforhold = switch (af.arbeidsforhold()) {
case ArbeidsforholdDto.VirksomhetDto virksomhet -> new Virksomhet(virksomhet.id());
case ArbeidsforholdDto.PrivatArbeidsgiverDto privat -> new PrivatArbeidsgiver(privat.id());
default ->throw new IllegalStateException("Utviklerfeil: Arbeidsforhold kan bare være virksomhet eller privat for avtalt ferie, men er " + af.arbeidsforhold());
};
return new AvtaltFerie(arbeidsforhold, af.fom(), af.tom());
}).toList();
}

private static Arbeidsforhold tilArbeidsforhold(ArbeidsforholdDto arbeidsforhold) {
if (arbeidsforhold instanceof VirksomhetDto virksomhet) {
return tilVirksomhet(virksomhet);
}
if (arbeidsforhold instanceof PrivatArbeidsgiverDto privat) {
return tilPrivatArbeidsgiver(privat);
}
if (arbeidsforhold instanceof SelvstendigNæringsdrivendeDto næring) {
return tilSelvstendigNæringsdrivende(næring);
}
if (arbeidsforhold instanceof FrilanserDto frilans) {
return tilFrilanser(frilans);
}
throw new IllegalStateException("Utviklerfeil: Arbeidsforhold kan bare være virksomhet, privat, næring, frilans, men er " + arbeidsforhold);
}

private static Frilanser tilFrilanser(FrilanserDto frilans) {
return new Frilanser(frilans.risikofaktorer(), frilans.tilretteleggingstiltak());
}

private static SelvstendigNæringsdrivende tilSelvstendigNæringsdrivende(SelvstendigNæringsdrivendeDto næring) {
return new SelvstendigNæringsdrivende(næring.risikofaktorer(), næring.tilretteleggingstiltak());
}

private static PrivatArbeidsgiver tilPrivatArbeidsgiver(PrivatArbeidsgiverDto privat) {
return new PrivatArbeidsgiver(privat.id());
}

private static Virksomhet tilVirksomhet(VirksomhetDto virksomhet) {
return new Virksomhet(virksomhet.id());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

import no.nav.foreldrepenger.common.domain.felles.DokumentType;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.VedleggDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.ArbeidsforholdDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.ArbeidsforholdDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.dto.ÅpenPeriodeDto;

public class DokumentasjonUtil {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@
import java.util.ArrayList;
import java.util.List;

import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.ArbeidsforholdDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.FrilanserDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.arbeidsforhold.SelvstendigNæringsdrivendeDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.ArbeidsforholdDto;
import no.nav.foreldrepenger.selvbetjening.kontrakt.innsending.v2.dto.svangerskapspenger.TilretteleggingbehovDto;


Expand All @@ -20,7 +18,7 @@ public class TilretteleggingBehovBuilder {
public TilretteleggingBehovBuilder(ArbeidsforholdDto arbeidsforhold, LocalDate behovForTilretteleggingFom) {
this.arbeidsforhold = arbeidsforhold;
this.behovForTilretteleggingFom = behovForTilretteleggingFom;
if (arbeidsforhold instanceof SelvstendigNæringsdrivendeDto || arbeidsforhold instanceof FrilanserDto) {
if (arbeidsforhold instanceof ArbeidsforholdDto.SelvstendigNæringsdrivendeDto || arbeidsforhold instanceof ArbeidsforholdDto.FrilanserDto) {
this.risikofaktorer = "Risikofaktorer her";
this.tilretteleggingstiltak = "Tilretteleggingstiltak her";
}
Expand Down
Loading

0 comments on commit 64a694c

Please sign in to comment.