OrgService.java
package no.nav.data.team.org;
import lombok.extern.slf4j.Slf4j;
import no.nav.data.common.exceptions.NotFoundException;
import no.nav.data.team.resource.NomGraphClient;
import no.nav.nom.graphql.model.*;
import org.springframework.stereotype.Service;
import static java.util.Objects.isNull;
@Slf4j
@Service
public class OrgService {
NomGraphClient nomGraphClient;
public OrgService(NomGraphClient nomGraphClient) {
this.nomGraphClient = nomGraphClient;
}
public boolean isOrgEnhetInArbeidsomraadeOgDirektorat(String nomId) {
var optionalOrgEnhetDto = nomGraphClient.getOrgenhetMedOverOrganisering(nomId);
if (optionalOrgEnhetDto.isEmpty()) return false;
var orgehet = optionalOrgEnhetDto.get();
if (orgehet.getOrganiseringer().size() > 1)
throw new IllegalStateException("OrgEnhetDto har mer enn en organisering på enhet over");
if (isNull(orgehet.getNomNivaa())) {
var orgenhetOver = orgehet.getOrganiseringer().stream().findFirst().map(OrganiseringDto::getOrgEnhet).orElse(null);
if (orgenhetOver == null) return false;
return isOrgEnhetInArbeidsomraadeOgDirektorat(orgenhetOver.getId());
} else return (orgehet.getOrgEnhetsType().equals(OrgEnhetsTypeDto.DIREKTORAT) || orgehet.getOrgEnhetsType().equals(OrgEnhetsTypeDto.KLAGEINSTANS))
&& orgehet.getNomNivaa().equals(NomNivaaDto.ARBEIDSOMRAADE);
}
public String getAvdelingNomId(String nomId) {
if (nomId == null) return null;
var optionalOrgEnhetDto = nomGraphClient.getOrgenhetMedOverOrganisering(nomId);
if (optionalOrgEnhetDto.isEmpty()) return null;
var orgenhet = optionalOrgEnhetDto.get();
if (orgenhet.getOrganiseringer().size() > 1)
throw new IllegalStateException("OrgEnhetDto har mer enn en organisering på enhet over");
if (orgenhet.getOrganiseringer().isEmpty()) throw new IllegalStateException("OrgEnhetDto har ingen organiseringer på enhet over");
var orgenhetOver = orgenhet.getOrganiseringer().getFirst().getOrgEnhet();
if (orgenhetOver.getNomNivaa() != null
&& orgenhetOver.getNomNivaa().equals(NomNivaaDto.ARBEIDSOMRAADE)
&& orgenhetOver.getOrgEnhetsType() != null
&& (orgenhetOver.getOrgEnhetsType().equals(OrgEnhetsTypeDto.DIREKTORAT) || orgenhetOver.getOrgEnhetsType().equals(OrgEnhetsTypeDto.KLAGEINSTANS))) {
return orgenhetOver.getId();
}
throw new NotFoundException("OrgEnhetDto har ikke arbeidsomraade og direktorat på enhet over");
}
public OrgEnhetDto getOrgEnhetOgUnderEnheter(String nomId) {
if (nomId == null) return null;
log.info("nomId: {}", nomId);
var orgEnhetDto = nomGraphClient.getOrgEnhetMedUnderOrganiseringOgLedere(nomId);
log.info("OrgEnhetDto: {}", orgEnhetDto);
return orgEnhetDto;
}
}