Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TSFF-1157: Egen kontrakt for oppgave #493

Merged
merged 6 commits into from
Mar 3, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions oppgave-ungdomsytelse/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>k9-format</artifactId>
<groupId>no.nav.k9</groupId>
<version>${revision}${sha1}${changelist}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>oppgave-ungdomsytelse</artifactId>


<dependencies>
<dependency>
<groupId>no.nav.k9</groupId>
<artifactId>soknad</artifactId>
</dependency>
</dependencies>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
package no.nav.k9.oppgave;

import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.node.ObjectNode;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import no.nav.k9.oppgave.bekreftelse.Bekreftelse;
import no.nav.k9.søknad.Innsending;
import no.nav.k9.søknad.JsonUtils;
import no.nav.k9.søknad.felles.DtoKonstanter;
import no.nav.k9.søknad.felles.Kildesystem;
import no.nav.k9.søknad.felles.Versjon;
import no.nav.k9.søknad.felles.personopplysninger.Søker;
import no.nav.k9.søknad.felles.type.Språk;
import no.nav.k9.søknad.felles.type.SøknadId;

import java.io.IOException;
import java.time.ZonedDateTime;
import java.util.Objects;
import java.util.Optional;

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
public class OppgaveBekreftelse implements Innsending {

@Valid
@NotNull
@JsonProperty(value = "søknadId", required = true)
private SøknadId søknadId;

@Valid
@NotNull
@JsonProperty(value = "versjon", required = true)
private Versjon versjon;

@Valid
@NotNull
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DtoKonstanter.DATO_TID_FORMAT, timezone = DtoKonstanter.TIDSSONE)
@JsonProperty(value = "mottattDato", required = true)
private ZonedDateTime mottattDato;

@Valid
@NotNull
@JsonProperty(value = "søker", required = true)
private Søker søker;

@Valid
@JsonProperty(value = "språk", required = false)
private Språk språk = Språk.NORSK_BOKMÅL;

@JsonManagedReference
@Valid
@NotNull
@JsonProperty(value = "bekreftelse", required = true)
private Bekreftelse bekreftelse;


@Valid
@JsonProperty(value = "kildesystem", required = false)
private Kildesystem kildesystem;

public OppgaveBekreftelse() {
//
}

@JsonCreator
public OppgaveBekreftelse(@JsonProperty(value = "søknadId", required = true) @Valid @NotNull SøknadId søknadId,
@JsonProperty(value = "versjon", required = true) @Valid @NotNull Versjon versjon,
@JsonProperty(value = "mottattDato", required = true) @Valid @NotNull ZonedDateTime mottattDato,
@JsonProperty(value = "søker", required = true) @Valid @NotNull Søker søker,
@JsonProperty(value = "språk", required = false) @Valid Språk språk,
@JsonProperty(value = "bekreftelse", required = true) @Valid @NotNull Bekreftelse bekreftelse) {
this.søknadId = Objects.requireNonNull(søknadId, "søknadId");
this.versjon = Objects.requireNonNull(versjon, "versjon");
this.mottattDato = Objects.requireNonNull(mottattDato, "mottattDato");
this.søker = Objects.requireNonNull(søker, "søker");
this.bekreftelse = Objects.requireNonNull(bekreftelse, "bekreftelse");
this.språk = språk;
}

public OppgaveBekreftelse(@JsonProperty(value = "søknadId", required = true) @Valid @NotNull SøknadId søknadId,
@JsonProperty(value = "versjon", required = true) @Valid @NotNull Versjon versjon,
@JsonProperty(value = "mottattDato", required = true) @Valid @NotNull ZonedDateTime mottattDato,
@JsonProperty(value = "søker", required = true) @Valid @NotNull Søker søker,
@JsonProperty(value = "bekreftelse", required = true) @Valid @NotNull Bekreftelse bekreftelse) {
this(søknadId, versjon, mottattDato, søker, Språk.NORSK_BOKMÅL, bekreftelse);
}

@Override
public SøknadId getSøknadId() {
return søknadId;
}

@Override
public Versjon getVersjon() {
return versjon;
}

@Override
public ZonedDateTime getMottattDato() {
return mottattDato;
}

public Språk getSpråk() {
return språk;
}



@Override
public Søker getSøker() {
return søker;
}

@SuppressWarnings("unchecked")
public <B extends Bekreftelse> B getBekreftelse() {
return (B) bekreftelse;
}


public Optional<Kildesystem> getKildesystem() {
return Optional.ofNullable(kildesystem);
}

public void setSøknadId(SøknadId søknadId) {
this.søknadId = Objects.requireNonNull(søknadId, "søknadId");
}

public void setVersjon(Versjon versjon) {
this.versjon = Objects.requireNonNull(versjon);;
}

public void setMottattDato(ZonedDateTime mottattDato) {
this.mottattDato = Objects.requireNonNull(mottattDato, "mottattDato");
}

public void setSøker(Søker søker) {
this.søker = Objects.requireNonNull(søker, "søker");
}

public void setBekreftelse(Bekreftelse bekreftelse) {
this.bekreftelse = Objects.requireNonNull(bekreftelse, "bekreftelse");
}

public void setKildesystem(Kildesystem kildesystem) {
this.kildesystem = kildesystem;
}

public OppgaveBekreftelse medMottattDato(ZonedDateTime mottattDato) {
this.mottattDato = Objects.requireNonNull(mottattDato, "mottattDato");
return this;
}

public OppgaveBekreftelse medSpråk(Språk språk) {
this.språk = språk;
return this;
}

public OppgaveBekreftelse medSøknadId(String søknadId) {
this.søknadId = new SøknadId(Objects.requireNonNull(søknadId, "søknadId"));
return this;
}

public OppgaveBekreftelse medSøknadId(SøknadId søknadId) {
this.søknadId = Objects.requireNonNull(søknadId, "søknadId");
return this;
}

public OppgaveBekreftelse medVersjon(String versjon) {
this.versjon = new Versjon(Objects.requireNonNull(versjon, "versjon"));
return this;
}

public OppgaveBekreftelse medVersjon(Versjon versjon) {
this.versjon = Objects.requireNonNull(versjon, "versjon");
return this;
}

public OppgaveBekreftelse medSøker(Søker søker) {
this.søker = Objects.requireNonNull(søker, "søker");
return this;
}

public OppgaveBekreftelse medBekreftelse(Bekreftelse bekreftelse) {
this.bekreftelse = Objects.requireNonNull(bekreftelse, "bekreftelse");
return this;
}


public OppgaveBekreftelse medKildesystem(Kildesystem kildesystem) {
this.kildesystem = kildesystem;
return this;
}

public static final class SerDes {
private SerDes() {
}

public static String serialize(OppgaveBekreftelse oppgave) {
return JsonUtils.toString(oppgave);
}

public static OppgaveBekreftelse deserialize(String oppgave) {
return JsonUtils.fromString(oppgave, OppgaveBekreftelse.class);
}

public static OppgaveBekreftelse deserialize(ObjectNode node) {
try {
return JsonUtils.getObjectMapper().treeToValue(node, OppgaveBekreftelse.class);
} catch (IOException e) {
throw new IllegalArgumentException("Kunne ikke konvertere til Oppgave.class", e);
}
}

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package no.nav.k9.oppgave.bekreftelse;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonValue;
import jakarta.validation.Valid;
import no.nav.k9.oppgave.bekreftelse.ung.periodeendring.EndretFomDatoBekreftelse;
import no.nav.k9.oppgave.bekreftelse.ung.periodeendring.EndretTomDatoBekreftelse;
import no.nav.k9.søknad.ytelse.DataBruktTilUtledning;

@Valid
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes(value = {
@JsonSubTypes.Type(name = Bekreftelse.UNG_ENDRET_FOM_DATO, value = EndretFomDatoBekreftelse.class),
@JsonSubTypes.Type(name = Bekreftelse.UNG_ENDRET_TOM_DATO, value = EndretTomDatoBekreftelse.class),
})
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
public interface Bekreftelse {

String UNG_ENDRET_FOM_DATO = "UNG_ENDRET_FOM_DATO";
String UNG_ENDRET_TOM_DATO = "UNG_ENDRET_TOM_DATO";

Bekreftelse.Type getType();

/**
* Data brukt til utledning av bekreftelse.
*/
DataBruktTilUtledning getDataBruktTilUtledning();

Bekreftelse medDataBruktTilUtledning(DataBruktTilUtledning dataBruktTilUtledning);

enum Type {
UNG_ENDRET_FOM_DATO(Bekreftelse.UNG_ENDRET_FOM_DATO),
UNG_ENDRET_TOM_DATO(Bekreftelse.UNG_ENDRET_TOM_DATO);


@JsonValue
private final String kode;

Type(String kode) {
this.kode = kode;
}

public String kode() {
return kode;
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package no.nav.k9.oppgave.bekreftelse.ung.periodeendring;

import no.nav.k9.oppgave.bekreftelse.Bekreftelse;

import java.time.LocalDate;

public interface DatoEndring extends Bekreftelse {

LocalDate getNyDato();

boolean harBrukerGodtattEndringen();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package no.nav.k9.oppgave.bekreftelse.ung.periodeendring;

import no.nav.k9.oppgave.bekreftelse.Bekreftelse;
import no.nav.k9.søknad.ytelse.DataBruktTilUtledning;

import java.time.LocalDate;

public class EndretFomDatoBekreftelse implements DatoEndring {

private LocalDate nyFomDato;
private boolean harBrukerGodtattEndringen;
private DataBruktTilUtledning dataBruktTilUtledning;


public EndretFomDatoBekreftelse(LocalDate nyFomDato, boolean harBrukerGodtattEndringen) {
this.nyFomDato = nyFomDato;
this.harBrukerGodtattEndringen = harBrukerGodtattEndringen;
}

public LocalDate getNyFomDato() {
return nyFomDato;
}

@Override
public Type getType() {
return Type.UNG_ENDRET_FOM_DATO;
}

@Override
public DataBruktTilUtledning getDataBruktTilUtledning() {
return dataBruktTilUtledning;
}

@Override
public Bekreftelse medDataBruktTilUtledning(DataBruktTilUtledning dataBruktTilUtledning) {
this.dataBruktTilUtledning = dataBruktTilUtledning;
return this;
}

@Override
public LocalDate getNyDato() {
return nyFomDato;
}

@Override
public boolean harBrukerGodtattEndringen() {
return harBrukerGodtattEndringen;
}
}
Loading
Loading