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

Opprydding/forbetring av logikk/validering/typing relatert til sorteringsfelt og -rekkefølge #1843

Merged
merged 4 commits into from
Jan 23, 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
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
Loading