diff --git a/vl-kontrakt-fp-formidling/src/main/java/no/nav/foreldrepenger/kontrakter/fpsak/tilkjentytelse/TilkjentYtelseDagytelseDto.java b/vl-kontrakt-fp-formidling/src/main/java/no/nav/foreldrepenger/kontrakter/fpsak/tilkjentytelse/TilkjentYtelseDagytelseDto.java new file mode 100644 index 00000000..79f5e409 --- /dev/null +++ b/vl-kontrakt-fp-formidling/src/main/java/no/nav/foreldrepenger/kontrakter/fpsak/tilkjentytelse/TilkjentYtelseDagytelseDto.java @@ -0,0 +1,50 @@ +package no.nav.foreldrepenger.kontrakter.fpsak.tilkjentytelse; + +import jakarta.validation.Valid; +import jakarta.validation.constraints.DecimalMax; +import jakarta.validation.constraints.DecimalMin; +import jakarta.validation.constraints.Digits; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +public record TilkjentYtelseDagytelseDto(List<@Valid @NotNull TilkjentYtelsePeriodeDto> perioder) { + + public record TilkjentYtelsePeriodeDto(@NotNull LocalDate fom, + @NotNull LocalDate tom, + @Min(0) @Max(Integer.MAX_VALUE) Integer dagsats, + List<@Valid @NotNull TilkjentYtelseAndelDto> andeler) {} + + public record TilkjentYtelseAndelDto(@Pattern(regexp = "\\d{9}|\\d{13}") String arbeidsgiverReferanse, + @Min(0) @Max(Integer.MAX_VALUE) Integer refusjon, + @Min(0) @Max(Integer.MAX_VALUE) Integer tilSoker, + @NotNull @Valid Aktivitetstatus aktivitetstatus, + @Pattern(regexp = "^[\\p{Graph}\\p{Space}\\p{Sc}\\p{L}\\p{M}\\p{N}]+$") String arbeidsforholdId, + @Valid @Digits(integer = 8, fraction = 2) @DecimalMin("0.00") @DecimalMax("10000000.00") BigDecimal stillingsprosent) {} + + public enum Aktivitetstatus { + ARBEIDSAVKLARINGSPENGER, + ARBEIDSTAKER, + DAGPENGER, + FRILANSER, + MILITÆR_ELLER_SIVIL, + SELVSTENDIG_NÆRINGSDRIVENDE, + KOMBINERT_AT_FL, + KOMBINERT_AT_SN, + KOMBINERT_FL_SN, + KOMBINERT_AT_FL_SN, + BRUKERS_ANDEL, + KUN_YTELSE, + TTLSTØTENDE_YTELSE, + VENTELØNN_VARTPENGER, + UDEFINERT, + } + +} + + diff --git "a/vl-kontrakt-fp-formidling/src/main/java/no/nav/foreldrepenger/kontrakter/fpsak/tilkjentytelse/TilkjentYtelseEngangsst\303\270nadDto.java" "b/vl-kontrakt-fp-formidling/src/main/java/no/nav/foreldrepenger/kontrakter/fpsak/tilkjentytelse/TilkjentYtelseEngangsst\303\270nadDto.java" new file mode 100644 index 00000000..b19ec9c9 --- /dev/null +++ "b/vl-kontrakt-fp-formidling/src/main/java/no/nav/foreldrepenger/kontrakter/fpsak/tilkjentytelse/TilkjentYtelseEngangsst\303\270nadDto.java" @@ -0,0 +1,6 @@ +package no.nav.foreldrepenger.kontrakter.fpsak.tilkjentytelse; + +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; + +public record TilkjentYtelseEngangsstønadDto(@Min(0) @Max(Long.MAX_VALUE) Long beregnetTilkjentYtelse) {} diff --git a/vl-kontrakt-fp-formidling/src/test/java/no/nav/foreldrepenger/kontrakter/fpsak/tilkjentytelse/TilkjentYtelseDagytelseDtoTest.java b/vl-kontrakt-fp-formidling/src/test/java/no/nav/foreldrepenger/kontrakter/fpsak/tilkjentytelse/TilkjentYtelseDagytelseDtoTest.java new file mode 100644 index 00000000..392955e7 --- /dev/null +++ b/vl-kontrakt-fp-formidling/src/test/java/no/nav/foreldrepenger/kontrakter/fpsak/tilkjentytelse/TilkjentYtelseDagytelseDtoTest.java @@ -0,0 +1,51 @@ +package no.nav.foreldrepenger.kontrakter.fpsak.tilkjentytelse; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectReader; +import com.fasterxml.jackson.databind.ObjectWriter; +import no.nav.foreldrepenger.kontrakter.formidling.v1.TestJsonMapper; +import org.junit.jupiter.api.Test; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.Collections; + +import static org.assertj.core.api.Assertions.assertThat; + +class TilkjentYtelseDagytelseDtoTest { + + private static final ObjectWriter WRITER = TestJsonMapper.getMapper().writerWithDefaultPrettyPrinter(); + private static final ObjectReader READER = TestJsonMapper.getMapper().reader(); + + @Test + void testRoundtrip() throws JsonProcessingException { + var andelRequest = new TilkjentYtelseDagytelseDto.TilkjentYtelseAndelDto("999999999", + 200000, 100000, TilkjentYtelseDagytelseDto.Aktivitetstatus.ARBEIDSTAKER, + "arb001", BigDecimal.valueOf(100)); + var periodeRequest = new TilkjentYtelseDagytelseDto.TilkjentYtelsePeriodeDto(LocalDate.now(), LocalDate.now().plusDays(10), 0, + Collections.singletonList( + andelRequest)); + var grunnlagRequest = new TilkjentYtelseDagytelseDto(Collections.singletonList(periodeRequest)); + + // Act + var json = WRITER.writeValueAsString(grunnlagRequest); + + var grunnlagResponse = (TilkjentYtelseDagytelseDto) READER.forType(TilkjentYtelseDagytelseDto.class).readValue(json); + + // Assert + assertThat(grunnlagResponse).isNotNull(); + assertThat(grunnlagResponse.perioder()).hasSize(1); + var periodeResponse = grunnlagResponse.perioder().get(0); + assertThat(periodeResponse.fom()).isEqualTo(periodeRequest.fom()); + assertThat(periodeResponse.tom()).isEqualTo(periodeRequest.tom()); + assertThat(periodeResponse.dagsats()).isEqualTo(periodeRequest.dagsats()); + assertThat(periodeResponse.andeler()).hasSize(1); + var andelResponse = periodeResponse.andeler().get(0); + assertThat(andelResponse.aktivitetstatus()).isEqualTo(andelRequest.aktivitetstatus()); + assertThat(andelResponse.arbeidsforholdId()).isEqualTo(andelRequest.arbeidsforholdId()); + assertThat(andelResponse.arbeidsgiverReferanse()).isEqualTo(andelRequest.arbeidsgiverReferanse()); + assertThat(andelResponse.refusjon()).isEqualTo(andelRequest.refusjon()); + assertThat(andelResponse.tilSoker()).isEqualTo(andelRequest.tilSoker()); + assertThat(andelResponse.stillingsprosent()).isEqualByComparingTo(andelRequest.stillingsprosent()); + } +}