Skip to content

Commit

Permalink
Merge branch 'master' into dependabot/maven/interne-deps-76abc52044
Browse files Browse the repository at this point in the history
  • Loading branch information
dijjal authored Jan 19, 2024
2 parents 13c7476 + 91eeb28 commit 77bd099
Show file tree
Hide file tree
Showing 9 changed files with 112 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ public void fjernSaksbehandlerFraListe(Long oppgaveFiltreringId, String saksbeha
}

public List<Avdeling> hentAvdelinger() {
return organisasjonRepository.hentAvdelinger();
return organisasjonRepository.hentAktiveAvdelinger();
}

public void settSorteringTidsintervallDato(Long oppgaveFiltreringId, LocalDate fomDato, LocalDate tomDato) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package no.nav.foreldrepenger.los.felles.util;

public class RegexPatterns {

public static final String ENHETSNUMMER = "\\d{4}";

private RegexPatterns() {
throw new IllegalAccessError("Skal ikke instansieres");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,14 @@ public class Avdeling extends BaseEntitet {
@OneToMany(mappedBy = "avdeling", fetch = FetchType.LAZY)
private List<OppgaveFiltrering> oppgaveFiltrering;

@Convert(converter = BooleanToStringConverter.class)
@Column(name = "KREVER_KODE_6")
@Convert(converter = BooleanToStringConverter.class)
private Boolean kreverKode6 = Boolean.FALSE;

@Column(name = "AKTIV")
@Convert(converter = BooleanToStringConverter.class)
private Boolean erAktiv = Boolean.TRUE;

public Avdeling() {
}

Expand Down Expand Up @@ -75,4 +79,12 @@ public List<OppgaveFiltrering> getOppgaveFiltrering() {
public Boolean getKreverKode6() {
return kreverKode6;
}

public Boolean getErAktiv() {
return erAktiv;
}

public void setErAktiv(boolean erAktiv) {
this.erAktiv = erAktiv;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,10 @@ public Optional<Avdeling> hentAvdelingFraEnhet(String avdelingEnhet) {
return hentUniktResultat(query);
}

public List<Avdeling> hentAvdelinger() {
var listeTypedQuery = entityManager.createQuery("FROM avdeling ", Avdeling.class);
return listeTypedQuery.getResultList();
public List<Avdeling> hentAktiveAvdelinger() {
var query = entityManager.createQuery("FROM avdeling WHERE erAktiv = :erAktiv", Avdeling.class);
query.setParameter("erAktiv", true);
return query.getResultList();
}

public List<SaksbehandlerGruppe> hentSaksbehandlerGrupper(String avdelingEnhet) {
Expand Down Expand Up @@ -103,6 +104,12 @@ public void slettSaksbehandlerGruppe(long gruppeId, String avdelingEnhet) {
entityManager.flush();
}

public void deaktiverAvdeling(String avdelingEnhet) {
var avdeling = hentAvdelingFraEnhet(avdelingEnhet).orElseThrow(() -> new IllegalStateException("Fant ikke avdeling"));
avdeling.setErAktiv(false);
entityManager.persist(avdeling);
}

private static void sjekkGruppeEnhetTilknytning(long gruppeId, String avdelingEnhet, SaksbehandlerGruppe gruppe) {
if (gruppe == null || !gruppe.getAvdeling().getAvdelingEnhet().equals(avdelingEnhet)) {
throw fantIkkeGruppeException(gruppeId, avdelingEnhet);
Expand All @@ -118,5 +125,4 @@ private static TomtResultatException fantIkkeSaksbehandlerException(String saksb
String.format("Fant ikke saksbehandler %s tilknyttet avdeling %s", saksbehandlerIdent, avdelingEnhet));
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public String hentAnsattNavn(String ident) {

public List<String> hentAvdelingerNavnForAnsatt(String ident) {
if (aktuelleEnhetIder == null) {
aktuelleEnhetIder = organisasjonRepository.hentAvdelinger().stream().map(Avdeling::getAvdelingEnhet).toList();
aktuelleEnhetIder = organisasjonRepository.hentAktiveAvdelinger().stream().map(Avdeling::getAvdelingEnhet).toList();
}
return enhetstilgangTjeneste.hentEnhetstilganger(ident)
.stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import no.nav.foreldrepenger.los.oppgave.OppgaveTjeneste;
import no.nav.foreldrepenger.los.organisasjon.OrganisasjonRepository;
import no.nav.foreldrepenger.los.tjenester.admin.dto.DriftAvdelingEnhetDto;
import no.nav.foreldrepenger.los.tjenester.admin.dto.EnkelBehandlingIdDto;
import no.nav.vedtak.hendelser.behandling.Kildesystem;
import no.nav.vedtak.sikkerhet.abac.BeskyttetRessurs;
Expand All @@ -28,12 +30,15 @@ public class AdminRestTjeneste {

private SynkroniseringHendelseTaskOppretterTjeneste synkroniseringHendelseTaskOppretterTjeneste;
private OppgaveTjeneste oppgaveTjeneste;
private OrganisasjonRepository organisasjonRepository;

@Inject
public AdminRestTjeneste(SynkroniseringHendelseTaskOppretterTjeneste synkroniseringHendelseTaskOppretterTjeneste,
OppgaveTjeneste oppgaveTjeneste) {
OppgaveTjeneste oppgaveTjeneste,
OrganisasjonRepository organisasjonRepository) {
this.synkroniseringHendelseTaskOppretterTjeneste = synkroniseringHendelseTaskOppretterTjeneste;
this.oppgaveTjeneste = oppgaveTjeneste;
this.organisasjonRepository = organisasjonRepository;
}

public AdminRestTjeneste() {
Expand Down Expand Up @@ -82,4 +87,14 @@ public Response slettTidligsteMultiAktiv(@NotNull @Valid EnkelBehandlingIdDto be
return Response.ok().build();
}

@POST
@Path("/deaktiver-avdeling")
@Consumes(MediaType.APPLICATION_JSON)
@Operation(description = "Deaktiverer avdeling", tags = "admin")
@BeskyttetRessurs(actionType = ActionType.CREATE, resourceType = ResourceType.DRIFT)
public Response deaktiverAvdeling(@NotNull @Valid DriftAvdelingEnhetDto avdelingEnhetDto) {
organisasjonRepository.deaktiverAvdeling(avdelingEnhetDto.avdelingEnhet());
return Response.ok().build();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package no.nav.foreldrepenger.los.tjenester.admin.dto;

import com.fasterxml.jackson.annotation.JsonProperty;

import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import no.nav.foreldrepenger.los.felles.util.RegexPatterns;
import no.nav.vedtak.sikkerhet.abac.AbacDataAttributter;
import no.nav.vedtak.sikkerhet.abac.AbacDto;

public record DriftAvdelingEnhetDto(@JsonProperty("avdelingEnhet")
@NotNull
@Pattern(regexp = RegexPatterns.ENHETSNUMMER)
String avdelingEnhet) implements AbacDto {
@Override
public AbacDataAttributter abacAttributter() {
return AbacDataAttributter.opprett();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
ALTER TABLE AVDELING
ADD AKTIV VARCHAR(1 char) DEFAULT 'J' NOT NULL;

COMMENT ON COLUMN AVDELING.AKTIV IS 'Styrer om avdeling er aktiv';
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package no.nav.foreldrepenger.los.organisasjon;

import jakarta.persistence.EntityManager;
import no.nav.foreldrepenger.los.JpaExtension;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;

import static org.assertj.core.api.Assertions.assertThat;

@ExtendWith(MockitoExtension.class)
@ExtendWith(JpaExtension.class)
class OrganisasjonRepositoryTest {
private OrganisasjonRepository repository;
private EntityManager entityManager;

@BeforeEach
void setUp(EntityManager entityManager) {
this.entityManager = entityManager;
repository = new OrganisasjonRepository(entityManager);
}

@Test
void deaktiverAvdeling() {
var enhetsNummer = "4802";
var avdelinger = repository.hentAktiveAvdelinger().stream().map(Avdeling::getAvdelingEnhet);

repository.deaktiverAvdeling(enhetsNummer);
entityManager.flush(); // håndteres av transaksjon i rammeverk

var etterDeaktiver = repository.hentAktiveAvdelinger().stream().map(Avdeling::getAvdelingEnhet);

assertThat(avdelinger).contains(enhetsNummer);
assertThat(etterDeaktiver).isNotEmpty().doesNotContain(enhetsNummer);
}
}

0 comments on commit 77bd099

Please sign in to comment.