Skip to content

Commit

Permalink
Merge pull request #1843 from navikt/sorteringsverdiar
Browse files Browse the repository at this point in the history
Opprydding/forbetring av logikk/validering/typing relatert til sorteringsfelt og -rekkefølge
  • Loading branch information
slovrid authored Jan 23, 2025
2 parents f1201fd + 091c1af commit 578de4a
Show file tree
Hide file tree
Showing 15 changed files with 516 additions and 479 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -61,12 +61,12 @@ public Portefolje hentPortefoljeForEnhet(
@RequestBody Filtervalg filtervalg) {

ValideringsRegler.sjekkEnhet(enhet);
ValideringsRegler.sjekkSortering(sortDirection, sortField);
ValideringsRegler.sjekkFiltervalg(filtervalg);
Sorteringsrekkefolge validertSorteringsrekkefolge = ValideringsRegler.sjekkSorteringsrekkefolge(sortDirection);
Sorteringsfelt validertSorteringsfelt = ValideringsRegler.sjekkSorteringsfelt(sortField);
authService.innloggetVeilederHarTilgangTilOppfolging();
authService.innloggetVeilederHarTilgangTilEnhet(enhet);

BrukereMedAntall brukereMedAntall = opensearchService.hentBrukere(enhet, Optional.empty(), sortDirection, sortField, filtervalg, fra, antall);
BrukereMedAntall brukereMedAntall = opensearchService.hentBrukere(enhet, Optional.empty(), validertSorteringsrekkefolge, validertSorteringsfelt, filtervalg, fra, antall);
List<Bruker> sensurerteBrukereSublist = authService.sensurerBrukere(brukereMedAntall.getBrukere());

return PortefoljeUtils.buildPortefolje(brukereMedAntall.getAntall(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,12 @@ public Portefolje hentPortefoljeForVeileder(

ValideringsRegler.sjekkVeilederIdent(veilederIdent, false);
ValideringsRegler.sjekkEnhet(enhet);
ValideringsRegler.sjekkSortering(sortDirection, sortField);
ValideringsRegler.sjekkFiltervalg(filtervalg);
Sorteringsrekkefolge validertSorteringsrekkefolge = ValideringsRegler.sjekkSorteringsrekkefolge(sortDirection);
Sorteringsfelt validertSorteringsfelt = ValideringsRegler.sjekkSorteringsfelt(sortField);
authService.innloggetVeilederHarTilgangTilOppfolging();
authService.innloggetVeilederHarTilgangTilEnhet(enhet);

BrukereMedAntall brukereMedAntall = opensearchService.hentBrukere(enhet, Optional.of(veilederIdent), sortDirection, sortField, filtervalg, fra, antall);
BrukereMedAntall brukereMedAntall = opensearchService.hentBrukere(enhet, Optional.of(veilederIdent), validertSorteringsrekkefolge, validertSorteringsfelt, filtervalg, fra, antall);
List<Bruker> sensurerteBrukereSublist = authService.sensurerBrukere(brukereMedAntall.getBrukere());

return PortefoljeUtils.buildPortefolje(brukereMedAntall.getAntall(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,13 +101,13 @@ public enum Sorteringsfelt {
this.sorteringsverdi = sorteringsverdi;
}

public static Sorteringsfelt nameFromValue(String value) {
public static Sorteringsfelt toSorteringsfelt(String sorteringsverdi) {
for (Sorteringsfelt sorteringsfelt : values()) {
if (sorteringsfelt.sorteringsverdi.equals(value)) {
if (sorteringsfelt.sorteringsverdi.equals(sorteringsverdi)) {
return sorteringsfelt;
}
}
throw new IllegalArgumentException("Ugyldig verdi for enum: " + value );
throw new IllegalArgumentException("Ugyldig verdi for enum: " + sorteringsverdi);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package no.nav.pto.veilarbportefolje.domene;

public enum Sorteringsrekkefolge {
IKKE_SATT("ikke_satt"),
STIGENDE("ascending"),
SYNKENDE("descending");

/**
* Verdien som blir sendt mellom frontend og backend
*/
public final String sorteringsverdi;

Sorteringsrekkefolge(String sorteringsverdi) {
this.sorteringsverdi = sorteringsverdi;
}

public static Sorteringsrekkefolge toSorteringsrekkefolge(String sorteringsverdi) {
for (Sorteringsrekkefolge sorteringsrekkefolge : values()) {
if (sorteringsrekkefolge.sorteringsverdi.equals(sorteringsverdi)) {
return sorteringsrekkefolge;
}
}
throw new IllegalArgumentException("Ugyldig verdi for enum: " + sorteringsverdi);
}

@Override
public String toString() {
return this.name() + " (" + this.sorteringsverdi + ")";
}
}

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ public class OpensearchService {
public BrukereMedAntall hentBrukere(
String enhetId,
Optional<String> veilederIdent,
String sortOrder,
String sortField,
Sorteringsrekkefolge sorteringsrekkefolge,
Sorteringsfelt sorteringsfelt,
Filtervalg filtervalg,
Integer fra,
Integer antall
Expand Down Expand Up @@ -102,7 +102,7 @@ public BrukereMedAntall hentBrukere(
leggTilBrukerinnsynTilgangFilter(boolQuery, authService.hentVeilederBrukerInnsynTilganger(), BRUKERE_SOM_VEILEDER_HAR_INNSYNSRETT_PÅ);
}

sorterQueryParametere(sortOrder, sortField, searchSourceBuilder, filtervalg, authService.hentVeilederBrukerInnsynTilganger());
sorterQueryParametere(sorteringsrekkefolge, sorteringsfelt, searchSourceBuilder, filtervalg, authService.hentVeilederBrukerInnsynTilganger());

OpensearchResponse response = search(searchSourceBuilder, indexName.getValue(), OpensearchResponse.class);
int totalHits = response.hits().getTotal().getValue();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
import no.nav.pto.veilarbportefolje.arbeidsliste.ArbeidslisteDTO;
import no.nav.pto.veilarbportefolje.arbeidsliste.v1.ArbeidslisteRequest;
import no.nav.pto.veilarbportefolje.arbeidsliste.v2.ArbeidslisteV2Request;
import no.nav.pto.veilarbportefolje.domene.Filtervalg;
import no.nav.pto.veilarbportefolje.domene.Sorteringsfelt;
import no.nav.pto.veilarbportefolje.domene.Sorteringsrekkefolge;
import org.springframework.http.HttpStatus;
import org.springframework.web.server.ResponseStatusException;

Expand All @@ -16,97 +17,36 @@
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;

import static io.vavr.control.Validation.invalid;
import static io.vavr.control.Validation.valid;
import static java.lang.String.format;
import static java.util.Arrays.asList;
import static no.nav.common.utils.StringUtils.nullOrEmpty;
import static no.nav.pto.veilarbportefolje.domene.Sorteringsfelt.*;

public class ValideringsRegler {
private static List<String> sortDirs = asList("ikke_satt", "ascending", "descending");
public static List<String> sortFields = asList(
IKKE_SATT.sorteringsverdi,
VALGTE_AKTIVITETER.sorteringsverdi,
ETTERNAVN.sorteringsverdi,
FODSELSNUMMER.sorteringsverdi,
UTLOPSDATO.sorteringsverdi,
DAGPENGER_UTLOP_UKE.sorteringsverdi,
DAGPENGER_PERM_UTLOP_UKE.sorteringsverdi,
AAP_TYPE.sorteringsverdi,
AAP_VURDERINGSFRIST.sorteringsverdi,
AAP_MAXTID_UKE.sorteringsverdi,
AAP_UNNTAK_UKER_IGJEN.sorteringsverdi,
ARBEIDSLISTE_FRIST.sorteringsverdi,
VENTER_PA_SVAR_FRA_NAV.sorteringsverdi,
VENTER_PA_SVAR_FRA_BRUKER.sorteringsverdi,
UTLOPTE_AKTIVITETER.sorteringsverdi,
STARTDATO_FOR_AVTALT_AKTIVITET.sorteringsverdi,
NESTE_STARTDATO_FOR_AVTALT_AKTIVITET.sorteringsverdi,
FORRIGE_DATO_FOR_AVTALT_AKTIVITET.sorteringsverdi,
I_AVTALT_AKTIVITET.sorteringsverdi,
AAP_RETTIGHETSPERIODE.sorteringsverdi,
MOTER_MED_NAV_IDAG.sorteringsverdi,
MOTESTATUS.sorteringsverdi,
OPPFOLGING_STARTET.sorteringsverdi,
VEILEDER_IDENT.sorteringsverdi,
GJELDENDE_VEDTAK_14A_INNSATSGRUPPE.sorteringsverdi,
GJELDENDE_VEDTAK_14A_HOVEDMAL.sorteringsverdi,
GJELDENDE_VEDTAK_14A_VEDTAKSDATO.sorteringsverdi,
UTKAST_14A_STATUS.sorteringsverdi,
UTKAST_14A_ANSVARLIG_VEILEDER.sorteringsverdi,
UTKAST_14A_STATUS_ENDRET.sorteringsverdi,
ARBEIDSLISTE_KATEGORI.sorteringsverdi,
ARBEIDSLISTE_OVERSKRIFT.sorteringsverdi,
SISTE_ENDRING_DATO.sorteringsverdi,
FODELAND.sorteringsverdi,
STATSBORGERSKAP.sorteringsverdi,
STATSBORGERSKAP_GYLDIG_FRA.sorteringsverdi,
TOLKESPRAK.sorteringsverdi,
TOLKEBEHOV_SIST_OPPDATERT.sorteringsverdi,
BOSTED_KOMMUNE.sorteringsverdi,
BOSTED_BYDEL.sorteringsverdi,
BOSTED_SIST_OPPDATERT.sorteringsverdi,
CV_SVARFRIST.sorteringsverdi,
ENSLIGE_FORSORGERE_UTLOP_YTELSE.sorteringsverdi,
ENSLIGE_FORSORGERE_VEDTAKSPERIODETYPE.sorteringsverdi,
ENSLIGE_FORSORGERE_AKTIVITETSPLIKT.sorteringsverdi,
ENSLIGE_FORSORGERE_OM_BARNET.sorteringsverdi,
BARN_UNDER_18_AR.sorteringsverdi,
BRUKERS_SITUASJON_SIST_ENDRET.sorteringsverdi,
HUSKELAPP_FRIST.sorteringsverdi,
HUSKELAPP_KOMMENTAR.sorteringsverdi,
HUSKELAPP.sorteringsverdi,
FARGEKATEGORI.sorteringsverdi,
UTDANNING_OG_SITUASJON_SIST_ENDRET.sorteringsverdi,
TILTAKSHENDELSE_DATO_OPPRETTET.sorteringsverdi,
TILTAKSHENDELSE_TEKST.sorteringsverdi,
UTGATT_VARSEL_DATO.sorteringsverdi
);

public static void sjekkEnhet(String enhet) {
test("enhet", enhet, enhet.matches("\\d{4}"));
}


public static void sjekkVeilederIdent(String veilederIdent, boolean optional) {

test("veilederident", veilederIdent, optional || veilederIdent.matches("[A-Z]\\d{6}"));
}

public static void sjekkFiltervalg(Filtervalg filtervalg) {
test("filtervalg", filtervalg, filtervalg::valider);
}

public static void sjekkSortering(String sortDirection, String sortField) {
test("sortDirection", sortDirection, sortDirs.contains(sortDirection));
test("sortField", sortField, sortFields.contains(sortField));
public static Sorteringsfelt sjekkSorteringsfelt(String sorteringsFelt) {
try {
return Sorteringsfelt.toSorteringsfelt(sorteringsFelt);
} catch (Exception e) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, format("%s er ikke et gyldig sorteringsfelt", sorteringsFelt));
}
}

private static void test(String navn, Object data, Supplier<Boolean> matches) {
test(navn, data, matches.get());
public static Sorteringsrekkefolge sjekkSorteringsrekkefolge(String sorteringsRekkefolge) {
try {
return Sorteringsrekkefolge.toSorteringsrekkefolge(sorteringsRekkefolge);
} catch (Exception e) {
throw new ResponseStatusException(HttpStatus.BAD_REQUEST, format("%s er ikke en gyldig sorteringsrekkefølge", sorteringsRekkefolge));
}
}

private static void test(String navn, Object data, boolean matches) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@ public void lasteroppeikkelagreteaktiviteteter() {
BrukereMedAntall responseBrukere = opensearchService.hentBrukere(
navKontor.getValue(),
empty(),
"asc",
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
Sorteringsrekkefolge.STIGENDE,
Sorteringsfelt.IKKE_SATT,
new Filtervalg().setFerdigfilterListe(List.of(I_AKTIVITET)),
null,
null);
Expand Down Expand Up @@ -114,8 +114,8 @@ public void lasteroppaktivitetStillingFraNAV() {
BrukereMedAntall responseBrukere = opensearchService.hentBrukere(
navKontor.getValue(),
empty(),
"asc",
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
Sorteringsrekkefolge.STIGENDE,
Sorteringsfelt.IKKE_SATT,
new Filtervalg().setNavnEllerFnrQuery(fodselsnummer.toString()).setFerdigfilterListe(new ArrayList<>()),
null,
null);
Expand Down Expand Up @@ -165,8 +165,8 @@ public void filtrerBrukerePaStillingFraNAV() {
BrukereMedAntall responseBrukere = opensearchService.hentBrukere(
navKontor.getValue(),
empty(),
"asc",
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
Sorteringsrekkefolge.STIGENDE,
Sorteringsfelt.IKKE_SATT,
new Filtervalg().setFerdigfilterListe(List.of(I_AKTIVITET)),
null,
null);
Expand All @@ -179,8 +179,8 @@ public void filtrerBrukerePaStillingFraNAV() {
BrukereMedAntall responseBrukere = opensearchService.hentBrukere(
navKontor.getValue(),
empty(),
"asc",
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
Sorteringsrekkefolge.STIGENDE,
Sorteringsfelt.IKKE_SATT,
new Filtervalg().setStillingFraNavFilter(List.of(StillingFraNAVFilter.CV_KAN_DELES_STATUS_JA)).setFerdigfilterListe(new ArrayList<>()),
null,
null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -184,8 +184,8 @@ public void skal_ikke_indeksere_bruker_med_tiltaksaktivitet_data_naar_status_er_
BrukereMedAntall response1 = opensearchService.hentBrukere(
navKontor.getValue(),
empty(),
"asc",
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
Sorteringsrekkefolge.STIGENDE,
Sorteringsfelt.IKKE_SATT,
new Filtervalg().setFerdigfilterListe(List.of()).setTiltakstyper(List.of("MIDLONTIL")),
null,
null);
Expand All @@ -195,8 +195,8 @@ public void skal_ikke_indeksere_bruker_med_tiltaksaktivitet_data_naar_status_er_
BrukereMedAntall response2 = opensearchService.hentBrukere(
navKontor.getValue(),
empty(),
"asc",
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
Sorteringsrekkefolge.STIGENDE,
Sorteringsfelt.IKKE_SATT,
new Filtervalg().setFerdigfilterListe(List.of()).setTiltakstyper(List.of("VARLONTIL")),
null,
null);
Expand Down Expand Up @@ -291,8 +291,8 @@ public void skal_indeksere_bruker_naar_vi_faar_lonnstilskudd_fra_DAB() {
BrukereMedAntall response1 = opensearchService.hentBrukere(
navKontor.getValue(),
empty(),
"asc",
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
Sorteringsrekkefolge.STIGENDE,
Sorteringsfelt.IKKE_SATT,
new Filtervalg().setFerdigfilterListe(List.of()).setTiltakstyper(List.of("MIDLONTIL")),
null,
null);
Expand All @@ -302,8 +302,8 @@ public void skal_indeksere_bruker_naar_vi_faar_lonnstilskudd_fra_DAB() {
BrukereMedAntall response2 = opensearchService.hentBrukere(
navKontor.getValue(),
empty(),
"asc",
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
Sorteringsrekkefolge.STIGENDE,
Sorteringsfelt.IKKE_SATT,
new Filtervalg().setFerdigfilterListe(List.of()).setTiltakstyper(List.of("VARLONTIL")),
null,
null);
Expand Down Expand Up @@ -343,8 +343,8 @@ public void skal_lese_melding_og_indeksere_bruker_naar_fraDato_og_tilDato_er_nul
BrukereMedAntall response1 = opensearchService.hentBrukere(
navKontor.getValue(),
empty(),
"asc",
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
Sorteringsrekkefolge.STIGENDE,
Sorteringsfelt.IKKE_SATT,
new Filtervalg().setFerdigfilterListe(List.of()).setTiltakstyper(List.of("MIDLONTIL")),
null,
null);
Expand Down Expand Up @@ -642,17 +642,17 @@ public void verifiserAtKafkameldingMedSammeAktivitetIdMenNyVersjonOverskriverGam
BrukereMedAntall responseBrukereMIDLONTIL = opensearchService.hentBrukere(
navKontor.getValue(),
empty(),
"asc",
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
Sorteringsrekkefolge.STIGENDE,
Sorteringsfelt.IKKE_SATT,
new Filtervalg().setFerdigfilterListe(List.of()).setTiltakstyper(List.of("MIDLONTIL")),
null,
null);

BrukereMedAntall responseBrukereLONNTILS = opensearchService.hentBrukere(
navKontor.getValue(),
empty(),
"asc",
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
Sorteringsrekkefolge.STIGENDE,
Sorteringsfelt.IKKE_SATT,
new Filtervalg().setFerdigfilterListe(List.of()).setTiltakstyper(List.of("VARLONTIL")),
null,
null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@

import no.nav.common.types.identer.AktorId;
import no.nav.common.types.identer.Fnr;
import no.nav.pto.veilarbportefolje.domene.BrukereMedAntall;
import no.nav.pto.veilarbportefolje.domene.Brukerstatus;
import no.nav.pto.veilarbportefolje.domene.Filtervalg;
import no.nav.pto.veilarbportefolje.domene.Sorteringsfelt;
import no.nav.pto.veilarbportefolje.domene.*;
import no.nav.pto.veilarbportefolje.domene.value.NavKontor;
import no.nav.pto.veilarbportefolje.domene.value.VeilederId;
import no.nav.pto.veilarbportefolje.opensearch.OpensearchService;
Expand Down Expand Up @@ -76,8 +73,8 @@ public void sisteendring_sortering() {
final BrukereMedAntall brukereMedAntall = opensearchService.hentBrukere(
enhetId.getValue(),
empty(),
"ascending",
Sorteringsfelt.IKKE_SATT.sorteringsverdi,
Sorteringsrekkefolge.STIGENDE,
Sorteringsfelt.IKKE_SATT,
getArbeidslisteFilter(),
null,
null);
Expand All @@ -88,17 +85,17 @@ public void sisteendring_sortering() {
var sortertResponsAscending = opensearchService.hentBrukere(
enhetId.getValue(),
empty(),
"ascending",
Sorteringsfelt.ARBEIDSLISTE_OVERSKRIFT.sorteringsverdi,
Sorteringsrekkefolge.STIGENDE,
Sorteringsfelt.ARBEIDSLISTE_OVERSKRIFT,
getArbeidslisteFilter(),
null,
null);

var sortertResponsDescending = opensearchService.hentBrukere(
enhetId.getValue(),
empty(),
"desc",
Sorteringsfelt.ARBEIDSLISTE_OVERSKRIFT.sorteringsverdi,
Sorteringsrekkefolge.SYNKENDE,
Sorteringsfelt.ARBEIDSLISTE_OVERSKRIFT,
getArbeidslisteFilter(),
null,
null);
Expand Down
Loading

0 comments on commit 578de4a

Please sign in to comment.