Skip to content

Commit

Permalink
fix. input fra PR
Browse files Browse the repository at this point in the history
* La til @transactional på jobber - laget ny service slik at proxy for @-skal fungere
* La til ny utforEndring som kan brukes for å oppdtere tidspunkt + status + sende event for Avtale
  • Loading branch information
eirikv committed Nov 14, 2024
1 parent a9be8c4 commit 7d97695
Show file tree
Hide file tree
Showing 5 changed files with 121 additions and 128 deletions.
112 changes: 41 additions & 71 deletions src/main/java/no/nav/tag/tiltaksgjennomforing/avtale/Avtale.java
Original file line number Diff line number Diff line change
Expand Up @@ -285,9 +285,7 @@ public void endreAvtale(
if (tiltakstyperMedTilskuddsperioder.contains(tiltakstype)) {
nyeTilskuddsperioder();
}
sistEndretNå();
oppdaterStatus();
registerEvent(new AvtaleEndret(this, AvtaleHendelseUtførtAvRolle.fraAvtalerolle(utfortAvRolle), identifikator));
utforEndring(new AvtaleEndret(this, AvtaleHendelseUtførtAvRolle.fraAvtalerolle(utfortAvRolle), identifikator));
}

public void endreAvtale(
Expand Down Expand Up @@ -345,9 +343,7 @@ public void endreAvtaleArena(
avbrutt = false;
avbruttDato = null;
avbruttGrunn = null;
sistEndretNå();
oppdaterStatus();
registerEvent(new AnnullertAvSystem(this, Identifikator.ARENA));
utforEndring(new AnnullertAvSystem(this, Identifikator.ARENA));
} else {
annullertTidspunkt = null;
annullertGrunn = null;
Expand All @@ -357,9 +353,7 @@ public void endreAvtaleArena(
if (tiltakstyperMedTilskuddsperioder != null && tiltakstyperMedTilskuddsperioder.contains(tiltakstype)) {
nyeTilskuddsperioder();
}
sistEndretNå();
oppdaterStatus();
registerEvent(new AvtaleEndretAvArena(this));
utforEndring(new AvtaleEndretAvArena(this));
}
}

Expand Down Expand Up @@ -508,22 +502,22 @@ private void sjekkOmAvtalenKanEndres() {
void opphevGodkjenningerSomArbeidsgiver() {
boolean varGodkjentAvDeltaker = erGodkjentAvDeltaker();
opphevGodkjenninger();
registerEvent(new GodkjenningerOpphevetAvArbeidsgiver(this, new GamleVerdier(varGodkjentAvDeltaker, false)));
utforEndring(new GodkjenningerOpphevetAvArbeidsgiver(this, new GamleVerdier(varGodkjentAvDeltaker, false)));
if (varGodkjentAvDeltaker) {
registerEvent(new DeltakersGodkjenningOpphevetAvArbeidsgiver(this));
utforEndring(new DeltakersGodkjenningOpphevetAvArbeidsgiver(this));
}
}

void opphevGodkjenningerSomVeileder() {
boolean varGodkjentAvDeltaker = erGodkjentAvDeltaker();
boolean varGodkjentAvArbeidsgiver = erGodkjentAvArbeidsgiver();
opphevGodkjenninger();
registerEvent(new GodkjenningerOpphevetAvVeileder(this, new GamleVerdier(varGodkjentAvDeltaker, varGodkjentAvArbeidsgiver)));
utforEndring(new GodkjenningerOpphevetAvVeileder(this, new GamleVerdier(varGodkjentAvDeltaker, varGodkjentAvArbeidsgiver)));
if (varGodkjentAvDeltaker) {
registerEvent(new DeltakersGodkjenningOpphevetAvVeileder(this));
utforEndring(new DeltakersGodkjenningOpphevetAvVeileder(this));
}
if (varGodkjentAvArbeidsgiver) {
registerEvent(new ArbeidsgiversGodkjenningOpphevetAvVeileder(this));
utforEndring(new ArbeidsgiversGodkjenningOpphevetAvVeileder(this));
}
}

Expand All @@ -534,16 +528,19 @@ private void opphevGodkjenninger() {
gjeldendeInnhold.setGodkjentPaVegneAv(false);
gjeldendeInnhold.setGodkjentPaVegneGrunn(null);
gjeldendeInnhold.setGodkjentAvNavIdent(null);
oppdaterStatus();
sistEndretNå();
}

private void sistEndretNå() {
this.sistEndret = Now.instant();
private void utforEndring() {
utforEndring(null);
}

private void oppdaterStatus() {
private <T> void utforEndring(T event) {
this.status = Status.fra(this);
this.sistEndret = Now.instant();

if (event != null) {
registerEvent(event);
}
}

void sjekkSistEndret(Instant sistEndret) {
Expand All @@ -560,8 +557,7 @@ void godkjennForArbeidsgiver(Identifikator utfortAv) {
throw new FeilkodeException(Feilkode.KAN_IKKE_GODKJENNE_ARBEIDSGIVER_HAR_ALLEREDE_GODKJENT);
}
gjeldendeInnhold.setGodkjentAvArbeidsgiver(Now.localDateTime());
sistEndretNå();
registerEvent(new GodkjentAvArbeidsgiver(this, utfortAv));
utforEndring(new GodkjentAvArbeidsgiver(this, utfortAv));
}

void godkjennForVeileder(NavIdent utfortAv) {
Expand Down Expand Up @@ -593,14 +589,12 @@ void godkjennForVeileder(NavIdent utfortAv) {
avtaleInngått(tidspunkt, Avtalerolle.VEILEDER, utfortAv);
}
gjeldendeInnhold.setIkrafttredelsestidspunkt(tidspunkt);
sistEndretNå();
registerEvent(new GodkjentAvVeileder(this, utfortAv));
utforEndring(new GodkjentAvVeileder(this, utfortAv));
}

private void avtaleInngått(LocalDateTime tidspunkt, Avtalerolle utførtAvRolle, NavIdent utførtAv) {
gjeldendeInnhold.setAvtaleInngått(tidspunkt);
oppdaterStatus();
registerEvent(new AvtaleInngått(this, AvtaleHendelseUtførtAvRolle.fraAvtalerolle(utførtAvRolle), utførtAv));
utforEndring(new AvtaleInngått(this, AvtaleHendelseUtførtAvRolle.fraAvtalerolle(utførtAvRolle), utførtAv));
}

void godkjennForVeilederOgDeltaker(NavIdent utfortAv, GodkjentPaVegneGrunn paVegneAvGrunn) {
Expand Down Expand Up @@ -636,8 +630,7 @@ void godkjennForVeilederOgDeltaker(NavIdent utfortAv, GodkjentPaVegneGrunn paVeg
if (!tiltakstype.skalBesluttes()) {
avtaleInngått(tidspunkt, Avtalerolle.VEILEDER, utfortAv);
}
sistEndretNå();
registerEvent(new GodkjentPaVegneAvDeltaker(this, utfortAv));
utforEndring(new GodkjentPaVegneAvDeltaker(this, utfortAv));
}

void godkjennForVeilederOgArbeidsgiver(NavIdent utfortAv, GodkjentPaVegneAvArbeidsgiverGrunn godkjentPaVegneAvArbeidsgiverGrunn) {
Expand Down Expand Up @@ -669,8 +662,7 @@ void godkjennForVeilederOgArbeidsgiver(NavIdent utfortAv, GodkjentPaVegneAvArbei
if (!tiltakstype.skalBesluttes()) {
avtaleInngått(tidspunkt, Avtalerolle.VEILEDER, utfortAv);
}
sistEndretNå();
registerEvent(new GodkjentPaVegneAvArbeidsgiver(this, utfortAv));
utforEndring(new GodkjentPaVegneAvArbeidsgiver(this, utfortAv));
}

public void godkjennForVeilederOgDeltakerOgArbeidsgiver(NavIdent utfortAv, GodkjentPaVegneAvDeltakerOgArbeidsgiverGrunn paVegneAvDeltakerOgArbeidsgiverGrunn) {
Expand Down Expand Up @@ -706,8 +698,7 @@ public void godkjennForVeilederOgDeltakerOgArbeidsgiver(NavIdent utfortAv, Godkj
if (!tiltakstype.skalBesluttes()) {
avtaleInngått(tidspunkt, Avtalerolle.VEILEDER, utfortAv);
}
sistEndretNå();
registerEvent(new GodkjentPaVegneAvDeltakerOgArbeidsgiver(this, utfortAv));
utforEndring(new GodkjentPaVegneAvDeltakerOgArbeidsgiver(this, utfortAv));
}

void godkjennForDeltaker(Identifikator utfortAv) {
Expand All @@ -716,17 +707,15 @@ void godkjennForDeltaker(Identifikator utfortAv) {
throw new FeilkodeException(Feilkode.KAN_IKKE_GODKJENNE_DELTAKER_HAR_ALLEREDE_GODKJENT);
}
gjeldendeInnhold.setGodkjentAvDeltaker(Now.localDateTime());
sistEndretNå();
registerEvent(new GodkjentAvDeltaker(this, utfortAv));
utforEndring(new GodkjentAvDeltaker(this, utfortAv));
}

void godkjennForMentor(Identifikator utfortAv) {
if (erGodkjentTaushetserklæringAvMentor()) {
throw new FeilkodeException(Feilkode.KAN_IKKE_GODKJENNE_MENTOR_HAR_ALLEREDE_GODKJENT);
}
gjeldendeInnhold.setGodkjentTaushetserklæringAvMentor(Now.localDateTime());
sistEndretNå();
registerEvent(new SignertAvMentor(this, utfortAv));
utforEndring(new SignertAvMentor(this, utfortAv));
}

void sjekkOmAltErKlarTilGodkjenning() {
Expand Down Expand Up @@ -777,9 +766,7 @@ public void annuller(Veileder veileder, String annullerGrunn) {
if (AnnullertGrunn.FEILREGISTRERING.equals(annullerGrunn)) {
setFeilregistrert(true);
}
sistEndretNå();
oppdaterStatus();
registerEvent(new AnnullertAvVeileder(this, veileder.getIdentifikator()));
utforEndring(new AnnullertAvVeileder(this, veileder.getIdentifikator()));
}

public void utlop(AvtaleUtlopHandling handling) {
Expand All @@ -791,9 +778,7 @@ public void utlop(AvtaleUtlopHandling handling) {
setAnnullertTidspunkt(Now.instant());
setAnnullertGrunn(AnnullertGrunn.UTLØPT);
setFeilregistrert(true);
sistEndretNå();
oppdaterStatus();
registerEvent(new AnnullertAvSystem(this, Identifikator.SYSTEM));
utforEndring(new AnnullertAvSystem(this, Identifikator.SYSTEM));
}
}
}
Expand All @@ -810,12 +795,11 @@ public void overtaAvtale(NavIdent nyNavIdent) {
NavIdent gammelNavIdent = this.getVeilederNavIdent();
this.setVeilederNavIdent(nyNavIdent);
getGjeldendeInnhold().reberegnLønnstilskudd();
sistEndretNå();
if (gammelNavIdent == null) {
nyeTilskuddsperioder();
this.registerEvent(new AvtaleOpprettetAvArbeidsgiverErFordelt(this));
utforEndring(new AvtaleOpprettetAvArbeidsgiverErFordelt(this));
} else {
registerEvent(new AvtaleNyVeileder(this, gammelNavIdent));
utforEndring(new AvtaleNyVeileder(this, gammelNavIdent));
}
}

Expand Down Expand Up @@ -871,8 +855,7 @@ public void godkjennTilskuddsperiode(NavIdent beslutter, String enhet) {
godkjennForBeslutter(tidspunkt, beslutter);
avtaleInngått(tidspunkt, Avtalerolle.BESLUTTER, beslutter);
}
sistEndretNå();
registerEvent(new TilskuddsperiodeGodkjent(this, gjeldendePeriode, beslutter, resendingsnummer));
utforEndring(new TilskuddsperiodeGodkjent(this, gjeldendePeriode, beslutter, resendingsnummer));
}

private void godkjennForBeslutter(LocalDateTime tidspunkt, NavIdent beslutter) {
Expand All @@ -888,8 +871,7 @@ private void godkjennForBeslutter(LocalDateTime tidspunkt, NavIdent beslutter) {
}
TilskuddPeriode gjeldendePeriode = gjeldendeTilskuddsperiode();
gjeldendePeriode.avslå(beslutter, avslagsårsaker, avslagsforklaring);
sistEndretNå();
registerEvent(new TilskuddsperiodeAvslått(this, beslutter, gjeldendePeriode));
utforEndring(new TilskuddsperiodeAvslått(this, beslutter, gjeldendePeriode));
}

public void togglegodkjennEtterregistrering(NavIdent beslutter) {
Expand All @@ -898,11 +880,10 @@ public void togglegodkjennEtterregistrering(NavIdent beslutter) {
throw new FeilkodeException(Feilkode.KAN_IKKE_MERKES_FOR_ETTERREGISTRERING_AVTALE_GODKJENT);
}
setGodkjentForEtterregistrering(!this.godkjentForEtterregistrering);
sistEndretNå();
if (this.godkjentForEtterregistrering) {
registerEvent(new GodkjentForEtterregistrering(this, beslutter));
utforEndring(new GodkjentForEtterregistrering(this, beslutter));
} else {
registerEvent(new FjernetEtterregistrering(this, beslutter));
utforEndring(new FjernetEtterregistrering(this, beslutter));
}
}

Expand Down Expand Up @@ -1217,9 +1198,7 @@ public void forkortAvtale(LocalDate nySluttDato, String grunn, String annetGrunn
getGjeldendeInnhold().endreSluttDato(nySluttDato);
sendTilbakeTilBeslutter();
forkortTilskuddsperioder(nySluttDato);
sistEndretNå();
oppdaterStatus();
registerEvent(new AvtaleForkortet(this, nyAvtaleInnholdVersjon, nySluttDato, grunn, annetGrunn, utførtAv));
utforEndring(new AvtaleForkortet(this, nyAvtaleInnholdVersjon, nySluttDato, grunn, annetGrunn, utførtAv));
}

public void forlengAvtale(LocalDate nySluttDato, NavIdent utførtAv) {
Expand All @@ -1238,9 +1217,7 @@ public void forlengAvtale(LocalDate nySluttDato, NavIdent utførtAv) {
getGjeldendeInnhold().endreSluttDato(nySluttDato);
sendTilbakeTilBeslutter();
forlengTilskuddsperioder(gammelSluttDato, nySluttDato);
sistEndretNå();
oppdaterStatus();
registerEvent(new AvtaleForlenget(this, utførtAv));
utforEndring(new AvtaleForlenget(this, utførtAv));
}

private void sjekkStartOgSluttDato(LocalDate startDato, LocalDate sluttDato) {
Expand All @@ -1264,9 +1241,8 @@ public void endreTilskuddsberegning(EndreTilskuddsberegning endreTilskuddsberegn
gjeldendeInnhold = getGjeldendeInnhold().nyGodkjentVersjon(AvtaleInnholdType.ENDRE_TILSKUDDSBEREGNING);
this.hentBeregningStrategi().endreBeregning(this, endreTilskuddsberegning);
endreBeløpITilskuddsperioder();
sistEndretNå();
getGjeldendeInnhold().setIkrafttredelsestidspunkt(Now.localDateTime());
registerEvent(new TilskuddsberegningEndret(this, utførtAv));
utforEndring(new TilskuddsberegningEndret(this, utførtAv));
}

// Metode for å rydde opp i beregnede felter som ikke har blitt satt etter at lønnstilskuddsprosent manuelt i databasen har blitt satt inn
Expand Down Expand Up @@ -1340,9 +1316,8 @@ public void endreKontaktInformasjon(EndreKontaktInformasjon endreKontaktInformas
gjeldendeInnhold = getGjeldendeInnhold().nyGodkjentVersjon(AvtaleInnholdType.ENDRE_KONTAKTINFO);
getGjeldendeInnhold().endreKontaktInfo(endreKontaktInformasjon);
getGjeldendeInnhold().setIkrafttredelsestidspunkt(Now.localDateTime());
sistEndretNå();
sendTilbakeTilBeslutter();
registerEvent(new KontaktinformasjonEndret(this, utførtAv));
utforEndring(new KontaktinformasjonEndret(this, utførtAv));
}

public void endreStillingsbeskrivelse(EndreStillingsbeskrivelse endreStillingsbeskrivelse, NavIdent utførtAv) {
Expand All @@ -1363,9 +1338,8 @@ public void endreStillingsbeskrivelse(EndreStillingsbeskrivelse endreStillingsbe
gjeldendeInnhold = getGjeldendeInnhold().nyGodkjentVersjon(AvtaleInnholdType.ENDRE_STILLING);
getGjeldendeInnhold().endreStillingsInfo(endreStillingsbeskrivelse);
getGjeldendeInnhold().setIkrafttredelsestidspunkt(Now.localDateTime());
sistEndretNå();
sendTilbakeTilBeslutter();
registerEvent(new StillingsbeskrivelseEndret(this, utførtAv));
utforEndring(new StillingsbeskrivelseEndret(this, utførtAv));
}

public void endreOppfølgingOgTilrettelegging(EndreOppfølgingOgTilrettelegging endreOppfølgingOgTilrettelegging, NavIdent utførtAv) {
Expand All @@ -1382,9 +1356,8 @@ public void endreStillingsbeskrivelse(EndreStillingsbeskrivelse endreStillingsbe
gjeldendeInnhold = gjeldendeInnhold.nyGodkjentVersjon(AvtaleInnholdType.ENDRE_OPPFØLGING_OG_TILRETTELEGGING);
gjeldendeInnhold.endreOppfølgingOgTilretteleggingInfo(endreOppfølgingOgTilrettelegging);
gjeldendeInnhold.setIkrafttredelsestidspunkt(Now.localDateTime());
sistEndretNå();
sendTilbakeTilBeslutter();
registerEvent(new OppfølgingOgTilretteleggingEndret(this, utførtAv));
utforEndring(new OppfølgingOgTilretteleggingEndret(this, utførtAv));
}

public void endreMål(EndreMål endreMål, NavIdent utførtAv) {
Expand All @@ -1408,9 +1381,8 @@ public void endreStillingsbeskrivelse(EndreStillingsbeskrivelse endreStillingsbe
getGjeldendeInnhold().getMaal().addAll(nyeMål);
getGjeldendeInnhold().getMaal().forEach(m -> m.setAvtaleInnhold(getGjeldendeInnhold()));
getGjeldendeInnhold().setIkrafttredelsestidspunkt(Now.localDateTime());
sistEndretNå();
sendTilbakeTilBeslutter();
registerEvent(new MålEndret(this, utførtAv));
utforEndring(new MålEndret(this, utførtAv));
}

public void endreInkluderingstilskudd(EndreInkluderingstilskudd endreInkluderingstilskudd, NavIdent utførtAv) {
Expand Down Expand Up @@ -1446,9 +1418,8 @@ public void endreInkluderingstilskudd(EndreInkluderingstilskudd endreInkludering
getGjeldendeInnhold().getInkluderingstilskuddsutgift().addAll(nyeInkluderingstilskuddsutgifter);
getGjeldendeInnhold().getInkluderingstilskuddsutgift().forEach(i -> i.setAvtaleInnhold(getGjeldendeInnhold()));
getGjeldendeInnhold().setIkrafttredelsestidspunkt(Now.localDateTime());
sistEndretNå();
sendTilbakeTilBeslutter();
registerEvent(new InkluderingstilskuddEndret(this, utførtAv));
utforEndring(new InkluderingstilskuddEndret(this, utførtAv));
}

public void endreOmMentor(EndreOmMentor endreOmMentor, NavIdent utførtAv) {
Expand All @@ -1466,9 +1437,8 @@ public void endreOmMentor(EndreOmMentor endreOmMentor, NavIdent utførtAv) {
gjeldendeInnhold = getGjeldendeInnhold().nyGodkjentVersjon(AvtaleInnholdType.ENDRE_OM_MENTOR);
getGjeldendeInnhold().endreOmMentor(endreOmMentor);
getGjeldendeInnhold().setIkrafttredelsestidspunkt(Now.localDateTime());
sistEndretNå();
sendTilbakeTilBeslutter();
registerEvent(new OmMentorEndret(this, utførtAv));
utforEndring(new OmMentorEndret(this, utførtAv));
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

import lombok.extern.slf4j.Slf4j;
import no.nav.tag.tiltaksgjennomforing.Miljø;
import no.nav.tag.tiltaksgjennomforing.avtale.AvtaleRepository;
import no.nav.tag.tiltaksgjennomforing.avtale.Status;
import no.nav.tag.tiltaksgjennomforing.avtale.service.AvtalestatusService;
import no.nav.tag.tiltaksgjennomforing.leader.LeaderPodCheck;
import org.springframework.context.annotation.Profile;
import org.springframework.scheduling.annotation.Scheduled;
Expand All @@ -14,38 +13,22 @@
@Profile({ Miljø.DEV_GCP_LABS, Miljø.DEV_FSS, Miljø.PROD_FSS })
public class AvtalestatusEndretJobb {

private final AvtaleRepository avtaleRepository;
private final AvtalestatusService avtalestatusService;
private final LeaderPodCheck leaderPodCheck;

public AvtalestatusEndretJobb(
AvtaleRepository avtaleRepository,
AvtalestatusService avtalestatusService,
LeaderPodCheck leaderPodCheck
) {
this.avtaleRepository = avtaleRepository;
this.avtalestatusService = avtalestatusService;
this.leaderPodCheck = leaderPodCheck;
}

@Scheduled(cron = "0 0 0 * * *")
public void run() {
if (!leaderPodCheck.isLeaderPod()) {
return;
if (leaderPodCheck.isLeaderPod()) {
avtalestatusService.oppdaterAvtalerSomKreverEndringAvStatus();
}

avtaleRepository.findAvtalerForEndringAvStatus().forEach(avtale -> {
Status status = Status.fra(avtale);
if (avtale.getStatus().equals(status)) {
return;
}

log.info(
"Avtale med id {} oppdateres med ny status {}. Tidligere status var {}.",
avtale.getId(),
status,
avtale.getStatus()
);
avtale.setStatus(status);
avtaleRepository.save(avtale);
});
}

}
Loading

0 comments on commit 7d97695

Please sign in to comment.