Skip to content

Commit

Permalink
Merge pull request #685 from navikt/oppfolgingsenhet-fra-database
Browse files Browse the repository at this point in the history
Bruk oppfølgingsenhet fra database istedetfor å hente synkront fra arena
  • Loading branch information
holymaloney authored Dec 5, 2024
2 parents 82b190c + d8d969b commit 50f6511
Show file tree
Hide file tree
Showing 49 changed files with 1,007 additions and 488 deletions.
5 changes: 5 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,11 @@
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<profiles>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import no.nav.common.types.identer.Id;
import no.nav.veilarboppfolging.oppfolgingsbruker.arena.LocalArenaOppfolging;

import java.time.LocalDate;
import java.time.ZonedDateTime;
Expand All @@ -17,32 +19,24 @@
public class ArenaOppfolgingTilstand {
String formidlingsgruppe;
String servicegruppe;
String rettighetsgruppe;
String oppfolgingsenhet;
LocalDate inaktiveringsdato;
boolean direkteFraArena;
Boolean kanEnkeltReaktiveres;

public static ArenaOppfolgingTilstand fraArenaOppfolging(ArenaOppfolging arenaOppfolging) {
public static ArenaOppfolgingTilstand fraArenaBruker(VeilarbArenaOppfolgingsBruker veilarbArenaOppfolgingsBruker) {
return new ArenaOppfolgingTilstand(
arenaOppfolging.getFormidlingsgruppe(),
arenaOppfolging.getServicegruppe(),
arenaOppfolging.getRettighetsgruppe(),
arenaOppfolging.getOppfolgingsenhet(),
arenaOppfolging.getInaktiveringsdato(),
true,
arenaOppfolging.getKanEnkeltReaktiveres());
veilarbArenaOppfolgingsBruker.getFormidlingsgruppekode(),
veilarbArenaOppfolgingsBruker.getKvalifiseringsgruppekode(),
veilarbArenaOppfolgingsBruker.getNav_kontor(),
Optional.ofNullable(veilarbArenaOppfolgingsBruker.getIserv_fra_dato()).map(ZonedDateTime::toLocalDate).orElse(null)
);
}

public static ArenaOppfolgingTilstand fraArenaBruker(VeilarbArenaOppfolging veilarbArenaOppfolging) {
public static ArenaOppfolgingTilstand fraLocalArenaOppfolging(LocalArenaOppfolging lokaleData) {
return new ArenaOppfolgingTilstand(
veilarbArenaOppfolging.getFormidlingsgruppekode(),
veilarbArenaOppfolging.getKvalifiseringsgruppekode(),
veilarbArenaOppfolging.getRettighetsgruppekode(),
veilarbArenaOppfolging.getNav_kontor(),
Optional.ofNullable(veilarbArenaOppfolging.getIserv_fra_dato()).map(ZonedDateTime::toLocalDate).orElse(null),
false,
null
lokaleData.getFormidlingsgruppe().name(),
lokaleData.getKvalifiseringsgruppe().name(),
Optional.ofNullable(lokaleData.getOppfolgingsenhet()).map(Id::get).orElse(null),
Optional.ofNullable(lokaleData.getIservFraDato()).orElse(null)
);
}

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package no.nav.veilarboppfolging.client.veilarbarena;

import lombok.*;
import lombok.experimental.Accessors;

import java.time.ZonedDateTime;

/**
* Har IKKE feltet kanReaktiveres eller iservFraDato som oppfølgingsStatus {@link no.nav.veilarboppfolging.client.veilarbarena.VeilarbArenaOppfolgingsStatus} har, men har hovedmaalkode
* @see no.nav.veilarboppfolging.client.veilarbarena.VeilarbArenaOppfolgingsStatus
*/
@Data
@Accessors(chain = true)
public class VeilarbArenaOppfolgingsBruker {
private String fodselsnr;
private String formidlingsgruppekode;
private String kvalifiseringsgruppekode;
private String rettighetsgruppekode;
private ZonedDateTime iserv_fra_dato;
private String hovedmaalkode;
private String nav_kontor;
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,13 @@

import java.time.LocalDate;

/**
* Har ikke feltene "hovedmaal" og "kvalifiseringsgruppe" (men servicegruppe er egentlig kvalifiseringsgruppe) som {@link no.nav.veilarboppfolging.client.veilarbarena.VeilarbArenaOppfolgingsBruker} har
* @see no.nav.veilarboppfolging.client.veilarbarena.VeilarbArenaOppfolgingsBruker
*/
@Data
@Accessors(chain = true)
public class ArenaOppfolging {
public class VeilarbArenaOppfolgingsStatus {
private String rettighetsgruppe;
private String formidlingsgruppe;
private String servicegruppe;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@

public interface VeilarbarenaClient extends HealthCheck {

Optional<VeilarbArenaOppfolging> hentOppfolgingsbruker(Fnr fnr);
Optional<VeilarbArenaOppfolgingsBruker> hentOppfolgingsbruker(Fnr fnr);

Optional<ArenaOppfolging> getArenaOppfolgingsstatus(Fnr fnr);
Optional<VeilarbArenaOppfolgingsStatus> getArenaOppfolgingsstatus(Fnr fnr);

Optional<YtelserDTO> getArenaYtelser(Fnr fnr);
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

import lombok.Data;
import lombok.experimental.Accessors;
import no.nav.veilarboppfolging.oppfolgingsbruker.arena.LocalArenaOppfolging;

import java.util.Optional;

/**
* The OppfolgingTable class is used as a transient data carrier from the
Expand All @@ -18,4 +21,5 @@ public class OppfolgingEntity {
private Long gjeldendeManuellStatusId;
private long gjeldendeMaalId;
private long gjeldendeKvpId;
private Optional<LocalArenaOppfolging> localArenaOppfolging;
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,12 @@

import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.val;
import no.nav.common.types.identer.AktorId;
import no.nav.common.types.identer.Fnr;
import no.nav.veilarboppfolging.controller.response.HistorikkHendelse;
import no.nav.veilarboppfolging.repository.*;
import no.nav.veilarboppfolging.repository.entity.*;
import no.nav.veilarboppfolging.utils.KvpUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Arrays;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ AvslutteOppfolgingResultat avslutteOppfolging(AktorId aktorId) {
} else {
Fnr fnr = authService.getFnrOrThrow(aktorId);

log.info("Utgang: Oppfølging avsluttet automatisk grunnet iserv i 28 dager");
AvslutningStatusData avslutningStatus = oppfolgingService.avsluttOppfolging(fnr, SYSTEM_USER_NAME, "Oppfølging avsluttet automatisk grunnet iserv i 28 dager");
// TODO litt i tvil om denne her. Attributtet sier om du per def er under oppfølging i arena, ikke om du er under oppfølging hos oss.
boolean oppfolgingAvsluttet = !avslutningStatus.underOppfolging;
Expand Down
18 changes: 10 additions & 8 deletions src/main/java/no/nav/veilarboppfolging/service/KvpService.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,17 @@
import lombok.extern.slf4j.Slf4j;
import no.nav.common.types.identer.AktorId;
import no.nav.common.types.identer.Fnr;
import no.nav.common.types.identer.Id;
import no.nav.pto_schema.kafka.json.topic.onprem.EndringPaaOppfoelgingsBrukerV2;
import no.nav.veilarboppfolging.BadRequestException;
import no.nav.veilarboppfolging.ForbiddenException;
import no.nav.veilarboppfolging.client.veilarbarena.VeilarbArenaOppfolging;
import no.nav.veilarboppfolging.client.veilarbarena.VeilarbarenaClient;
import no.nav.veilarboppfolging.kafka.KvpPeriode;
import no.nav.veilarboppfolging.oppfolgingsbruker.arena.ArenaOppfolgingService;
import no.nav.veilarboppfolging.repository.KvpRepository;
import no.nav.veilarboppfolging.repository.OppfolgingsStatusRepository;
import no.nav.veilarboppfolging.repository.entity.KvpPeriodeEntity;
import no.nav.veilarboppfolging.repository.entity.OppfolgingEntity;
import no.nav.veilarboppfolging.repository.entity.OppfolgingsenhetEndringEntity;
import no.nav.veilarboppfolging.repository.enums.KodeverkBruker;
import org.springframework.stereotype.Service;
import org.springframework.transaction.support.TransactionTemplate;
Expand All @@ -39,7 +40,7 @@ public class KvpService {

private final KvpRepository kvpRepository;

private final VeilarbarenaClient veilarbarenaClient;
private final ArenaOppfolgingService arenaOppfolgingService;

private final OppfolgingsStatusRepository oppfolgingsStatusRepository;

Expand All @@ -59,8 +60,9 @@ public void startKvp(Fnr fnr, String begrunnelse) {
throw new BadRequestException("Bruker må være under oppfølging for å starte KVP");
}

String enhet = veilarbarenaClient.hentOppfolgingsbruker(fnr)
.map(VeilarbArenaOppfolging::getNav_kontor).orElse(null);
var enhet = Optional.ofNullable(arenaOppfolgingService.hentArenaOppfolgingsEnhetId(fnr))
.map(Id::get)
.orElse(null);

if (!authService.harTilgangTilEnhet(enhet)) {
log.warn(format("Ingen tilgang til enhet '%s'", enhet));
Expand Down Expand Up @@ -94,11 +96,11 @@ public void stopKvp(Fnr fnr, String begrunnelse) {
AktorId aktorId = authService.getAktorIdOrThrow(fnr);

authService.sjekkLesetilgangMedAktorId(aktorId);
String enhet = veilarbarenaClient.hentOppfolgingsbruker(fnr)
.map(VeilarbArenaOppfolging::getNav_kontor).orElse(null);
String enhet = Optional.ofNullable(arenaOppfolgingService.hentArenaOppfolgingsEnhetId(fnr))
.map(Id::get).orElse(null);

if (!authService.harTilgangTilEnhet(enhet)) {
throw new ForbiddenException("Har ikke tilgang på enhet");
throw new ForbiddenException("Har ikkex tilgang på enhet");
}

String veilederId = authService.getInnloggetVeilederIdent();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import no.nav.common.types.identer.AktorId;
import no.nav.common.types.identer.Fnr;
import no.nav.veilarboppfolging.client.digdir_krr.KRRData;
import no.nav.veilarboppfolging.client.veilarbarena.VeilarbArenaOppfolging;
import no.nav.veilarboppfolging.client.digdir_krr.DigdirClient;
import no.nav.veilarboppfolging.oppfolgingsbruker.arena.ArenaOppfolgingService;
import no.nav.veilarboppfolging.repository.ManuellStatusRepository;
Expand Down Expand Up @@ -141,8 +140,8 @@ public void oppdaterManuellStatus(Fnr fnr, boolean manuell, String begrunnelse,
authService.sjekkLesetilgangMedAktorId(aktorId);

if (!authService.erEksternBruker()) {
VeilarbArenaOppfolging arenaOppfolging = arenaOppfolgingService.hentOppfolgingFraVeilarbarena(fnr).orElseThrow();
authService.sjekkTilgangTilEnhet(arenaOppfolging.getNav_kontor());
var enhet = Optional.ofNullable(arenaOppfolgingService.hentArenaOppfolgingsEnhetId(fnr)).orElseThrow();
authService.sjekkTilgangTilEnhet(enhet.get());
}

KRRData kontaktinfo = hentDigdirKontaktinfo(fnr);
Expand Down
Loading

0 comments on commit 50f6511

Please sign in to comment.