Skip to content

Commit

Permalink
Konverter til validert type så tidleg som mogleg og rydd i/forenkle k…
Browse files Browse the repository at this point in the history
…oden
  • Loading branch information
slovrid committed Jan 23, 2025
1 parent a32e253 commit 091c1af
Show file tree
Hide file tree
Showing 15 changed files with 371 additions and 445 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 + ")";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -452,12 +452,14 @@ static List<BoolQueryBuilder> byggAktivitetFilterQuery(Filtervalg filtervalg, Bo
* som er lov å sortere på i OpenSearch er det viktig at vi ikke legger til nye sorteringsfelter i {@link Sorteringsfelt}
* uten å sørge for at disse også er tilgjengelige i {@link OppfolgingsBruker}.
*/
static SearchSourceBuilder sorterQueryParametere(String sortOrder, String
sortField, SearchSourceBuilder searchSourceBuilder, Filtervalg filtervalg, BrukerinnsynTilganger brukerinnsynTilganger) {
SortOrder order = "ascending".equals(sortOrder) ? SortOrder.ASC : SortOrder.DESC;

/* På sikt (tm) skal vi typesikre sortField slik at vi får Sorteringsfelt her, gjerne allereie på Controller-nivå. I denne omgangen lagar eg berre enumen for sorteringsfelta. 2024-11-28, Ingrid. */
Sorteringsfelt sorteringsfelt = Sorteringsfelt.nameFromValue(sortField);
static SearchSourceBuilder sorterQueryParametere(
Sorteringsrekkefolge sorteringsrekkefolge,
Sorteringsfelt sorteringsfelt,
SearchSourceBuilder searchSourceBuilder,
Filtervalg filtervalg,
BrukerinnsynTilganger brukerinnsynTilganger
) {
SortOrder sorteringsrekkefolgeOpenSearch = Sorteringsrekkefolge.STIGENDE.equals(sorteringsrekkefolge) ? SortOrder.ASC : SortOrder.DESC;

// Vi må assigne til en ny variabel for at kompilatoren sin exhaustiveness-check skal slå inn.
// Dette er strengt tatt ikke nødvendig da vi bare kunne returnert searchSourceBuilder direkte, men da ville vi
Expand All @@ -468,150 +470,150 @@ static SearchSourceBuilder sorterQueryParametere(String sortOrder, String
yield searchSourceBuilder;
}
case VALGTE_AKTIVITETER -> {
sorterValgteAktiviteter(filtervalg, searchSourceBuilder, order);
sorterValgteAktiviteter(filtervalg, searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case MOTER_MED_NAV_IDAG -> {
searchSourceBuilder.sort("alle_aktiviteter_mote_startdato", order);
searchSourceBuilder.sort("alle_aktiviteter_mote_startdato", sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case MOTESTATUS -> {
searchSourceBuilder.sort("aktivitet_mote_startdato", order);
searchSourceBuilder.sort("aktivitet_mote_startdato", sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case I_AVTALT_AKTIVITET -> {
FieldSortBuilder builder = new FieldSortBuilder("aktivitet_utlopsdatoer")
.order(order)
.order(sorteringsrekkefolgeOpenSearch)
.sortMode(MIN);
searchSourceBuilder.sort(builder);
yield searchSourceBuilder;
}
case FODSELSNUMMER -> {
searchSourceBuilder.sort("fnr.raw", order);
searchSourceBuilder.sort("fnr.raw", sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case UTLOPTE_AKTIVITETER -> {
searchSourceBuilder.sort("nyesteutlopteaktivitet", order);
searchSourceBuilder.sort("nyesteutlopteaktivitet", sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case ARBEIDSLISTE_FRIST -> {
searchSourceBuilder.sort("arbeidsliste_frist", order);
searchSourceBuilder.sort("arbeidsliste_frist", sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case AAP_TYPE -> {
searchSourceBuilder.sort("ytelse", order);
searchSourceBuilder.sort("ytelse", sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case AAP_VURDERINGSFRIST -> {
sorterAapVurderingsfrist(searchSourceBuilder, order, filtervalg);
sorterAapVurderingsfrist(searchSourceBuilder, sorteringsrekkefolgeOpenSearch, filtervalg);
yield searchSourceBuilder;
}
case AAP_RETTIGHETSPERIODE -> {
sorterAapRettighetsPeriode(searchSourceBuilder, order);
sorterAapRettighetsPeriode(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case GJELDENDE_VEDTAK_14A_INNSATSGRUPPE -> {
searchSourceBuilder.sort("gjeldendeVedtak14a.innsatsgruppe", order);
searchSourceBuilder.sort("gjeldendeVedtak14a.innsatsgruppe", sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case GJELDENDE_VEDTAK_14A_HOVEDMAL -> {
searchSourceBuilder.sort("gjeldendeVedtak14a.hovedmal", order);
searchSourceBuilder.sort("gjeldendeVedtak14a.hovedmal", sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case GJELDENDE_VEDTAK_14A_VEDTAKSDATO -> {
sorterGjeldendeVedtak14aVedtaksdato(searchSourceBuilder, order);
sorterGjeldendeVedtak14aVedtaksdato(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case UTKAST_14A_STATUS -> {
searchSourceBuilder.sort("utkast_14a_status", order);
searchSourceBuilder.sort("utkast_14a_status", sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case ARBEIDSLISTE_KATEGORI -> {
searchSourceBuilder.sort("arbeidsliste_kategori", order);
searchSourceBuilder.sort("arbeidsliste_kategori", sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case SISTE_ENDRING_DATO -> {
sorterSisteEndringTidspunkt(searchSourceBuilder, order, filtervalg);
sorterSisteEndringTidspunkt(searchSourceBuilder, sorteringsrekkefolgeOpenSearch, filtervalg);
yield searchSourceBuilder;
}
case ARBEIDSLISTE_OVERSKRIFT -> {
sorterArbeidslisteOverskrift(searchSourceBuilder, order);
sorterArbeidslisteOverskrift(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case FODELAND -> {
sorterFodeland(searchSourceBuilder, order);
sorterFodeland(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case STATSBORGERSKAP -> {
sorterStatsborgerskap(searchSourceBuilder, order);
sorterStatsborgerskap(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case STATSBORGERSKAP_GYLDIG_FRA -> {
sorterStatsborgerskapGyldigFra(searchSourceBuilder, order);
sorterStatsborgerskapGyldigFra(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case TOLKESPRAK -> {
sorterTolkeSpraak(filtervalg, searchSourceBuilder, order);
sorterTolkeSpraak(filtervalg, searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case TOLKEBEHOV_SIST_OPPDATERT -> {
searchSourceBuilder.sort("tolkBehovSistOppdatert", order);
searchSourceBuilder.sort("tolkBehovSistOppdatert", sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case ENSLIGE_FORSORGERE_UTLOP_YTELSE -> {
sorterEnsligeForsorgereUtlopsDato(searchSourceBuilder, order);
sorterEnsligeForsorgereUtlopsDato(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case ENSLIGE_FORSORGERE_VEDTAKSPERIODETYPE -> {
sorterEnsligeForsorgereVedtaksPeriode(searchSourceBuilder, order);
sorterEnsligeForsorgereVedtaksPeriode(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case ENSLIGE_FORSORGERE_AKTIVITETSPLIKT -> {
sorterEnsligeForsorgereAktivitetsPlikt(searchSourceBuilder, order);
sorterEnsligeForsorgereAktivitetsPlikt(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case ENSLIGE_FORSORGERE_OM_BARNET -> {
sorterEnsligeForsorgereOmBarnet(searchSourceBuilder, order);
sorterEnsligeForsorgereOmBarnet(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case BARN_UNDER_18_AR -> {
sorterBarnUnder18(searchSourceBuilder, order, brukerinnsynTilganger, filtervalg);
sorterBarnUnder18(searchSourceBuilder, sorteringsrekkefolgeOpenSearch, brukerinnsynTilganger, filtervalg);
yield searchSourceBuilder;
}
case BRUKERS_SITUASJON_SIST_ENDRET -> {
searchSourceBuilder.sort("brukers_situasjon_sist_endret", order);
searchSourceBuilder.sort("brukers_situasjon_sist_endret", sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case UTDANNING_OG_SITUASJON_SIST_ENDRET -> {
searchSourceBuilder.sort("utdanning_og_situasjon_sist_endret", order);
searchSourceBuilder.sort("utdanning_og_situasjon_sist_endret", sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case HUSKELAPP_FRIST -> {
sorterHuskelappFrist(searchSourceBuilder, order);
sorterHuskelappFrist(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case HUSKELAPP -> {
sorterHuskelappEksistere(searchSourceBuilder, order);
sorterHuskelappEksistere(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case HUSKELAPP_KOMMENTAR -> {
searchSourceBuilder.sort("huskelapp.kommentar", order);
searchSourceBuilder.sort("huskelapp.kommentar", sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case FARGEKATEGORI -> {
searchSourceBuilder.sort("fargekategori", order);
searchSourceBuilder.sort("fargekategori", sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case TILTAKSHENDELSE_DATO_OPPRETTET -> {
sorterTiltakshendelseOpprettetDato(searchSourceBuilder, order);
sorterTiltakshendelseOpprettetDato(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case TILTAKSHENDELSE_TEKST -> {
searchSourceBuilder.sort("tiltakshendelse.tekst", order);
searchSourceBuilder.sort("tiltakshendelse.tekst", sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
case UTGATT_VARSEL_DATO -> {
sorterUtgattVarselHendelseDato(searchSourceBuilder, order);
sorterUtgattVarselHendelseDato(searchSourceBuilder, sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
// Vi har eksplisitt latt være å definere en "default" case i switch-en for å tvinge oss selv til å håndtere
Expand All @@ -621,7 +623,7 @@ static SearchSourceBuilder sorterQueryParametere(String sortOrder, String
FORRIGE_DATO_FOR_AVTALT_AKTIVITET, UTKAST_14A_STATUS_ENDRET, UTKAST_14A_ANSVARLIG_VEILEDER,
BOSTED_KOMMUNE, BOSTED_BYDEL, BOSTED_SIST_OPPDATERT, OPPFOLGING_STARTET, UTLOPSDATO, VEILEDER_IDENT,
DAGPENGER_UTLOP_UKE, DAGPENGER_PERM_UTLOP_UKE -> {
searchSourceBuilder.sort(sorteringsfelt.sorteringsverdi, order);
searchSourceBuilder.sort(sorteringsfelt.sorteringsverdi, sorteringsrekkefolgeOpenSearch);
yield searchSourceBuilder;
}
};
Expand Down
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
Loading

0 comments on commit 091c1af

Please sign in to comment.