Skip to content

Commit

Permalink
Merge pull request #80 from navikt/pdl_query
Browse files Browse the repository at this point in the history
Pdl query
  • Loading branch information
richardborge authored Dec 17, 2020
2 parents 0fc60c1 + 1dbb434 commit b6528a6
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 48 deletions.
50 changes: 42 additions & 8 deletions src/main/kotlin/no/nav/klage/oppgave/api/mapper/OppgaveMapper.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,23 @@ package no.nav.klage.oppgave.api.mapper

import no.nav.klage.oppgave.api.view.*
import no.nav.klage.oppgave.clients.gosys.*
import no.nav.klage.oppgave.clients.pdl.Navn
import no.nav.klage.oppgave.clients.pdl.HentPersonBolkResult
import no.nav.klage.oppgave.clients.pdl.PdlClient
import no.nav.klage.oppgave.util.getLogger
import no.nav.klage.oppgave.util.getSecureLogger
import org.springframework.stereotype.Service
import no.nav.klage.oppgave.api.view.Oppgave as OppgaveView
import no.nav.klage.oppgave.clients.gosys.Oppgave as OppgaveBackend

@Service
class OppgaveMapper(val pdlClient: PdlClient) {

companion object {
@Suppress("JAVA_CLASS_ON_COMPANION")
private val logger = getLogger(javaClass.enclosingClass)
private val secureLogger = getSecureLogger()
}

fun mapOppgaveToView(oppgaveBackend: OppgaveBackend, fetchPersoner: Boolean): OppgaveView {
return mapOppgaverToView(listOf(oppgaveBackend), fetchPersoner).single()
}
Expand Down Expand Up @@ -63,17 +71,43 @@ class OppgaveMapper(val pdlClient: PdlClient) {
}

private fun getPersoner(fnrList: List<String>): Map<String, OppgaveView.Person> {
val people = pdlClient.getPersonInfo(fnrList).data?.hentPersonBolk
return people?.map {
val fnr = it.folkeregisteridentifikator.first().identifikasjonsnummer
logger.debug("getPersoner is called with {} fnr", fnrList.size)
secureLogger.debug("getPersoner with fnr: {}", fnrList)

val people = pdlClient.getPersonInfo(fnrList).data?.hentPersonBolk ?: emptyList()

logger.debug("pdl returned {} people", people.size)
secureLogger.debug("pdl returned {}", people)

val fnrToPerson: Map<String, no.nav.klage.oppgave.api.view.Oppgave.Person> = people.map {
val fnr = it.ident
fnr to OppgaveView.Person(
fnr = fnr,
navn = it.navn.firstOrNull()?.toName() ?: "mangler"
navn = it.person.navn.firstOrNull()?.toName() ?: "mangler navn"
)
}?.toMap() ?: emptyMap()
}.toMap()
return fnrList.map {
if (fnrToPerson.containsKey(it)) {
Pair(it, fnrToPerson.getValue(it))
} else {
Pair(it, OppgaveView.Person(fnr = it, navn = "Mangler navn"))
}
}.toMap()
}

private fun OppgaveBackend.getFnrForBruker() = identer?.find { i -> i.gruppe == Gruppe.FOLKEREGISTERIDENT }?.ident
private fun OppgaveBackend.getFnrForBruker(): String? {
logger.debug("getFnrForBruker is called")
secureLogger.debug("getFnrForBruker is called with oppgave: {}", this)

return identer?.find { i -> i.gruppe == Gruppe.FOLKEREGISTERIDENT }?.ident.also {
if (it != null) {
logger.debug("Returning found fnr")
secureLogger.debug("Returning found fnr from oppgave: {}", it)
} else {
logger.debug("No fnr found in oppgave")
}
}
}

private fun Navn.toName() = "$fornavn $etternavn"
private fun HentPersonBolkResult.Person.Navn.toName() = "$fornavn $etternavn"
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,21 @@ package no.nav.klage.oppgave.clients.pdl

data class HentPersonResponse(val data: HentPersonBolk?, val errors: List<PdlError>? = null)

data class HentPersonBolk(val hentPersonBolk: List<Person>?)

data class Person(
val navn: List<Navn>,
val folkeregisteridentifikator: List<Folkeregisteridentifikator>
)

data class Navn(
val fornavn: String,
val mellomnavn: String? = null,
val etternavn: String
)

data class Folkeregisteridentifikator(
val identifikasjonsnummer: String,
val type: String,
val status: String
)
data class HentPersonBolk(val hentPersonBolk: List<HentPersonBolkResult>?)

data class HentPersonBolkResult(
val person: Person,
val ident: String
) {
data class Person(
val navn: List<Navn>
) {
data class Navn(
val fornavn: String,
val etternavn: String
)
}
}

data class PdlError(
val message: String,
Expand Down
15 changes: 6 additions & 9 deletions src/main/resources/pdl/hentPerson.graphql
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
query($identer: [ID!]!){
hentPersonBolk(identer: $identer) {
navn {
fornavn,
mellomnavn,
etternavn
person {
navn {
fornavn,
etternavn
}
},
folkeregisteridentifikator {
identifikasjonsnummer,
type,
status
}
ident
}
}
25 changes: 12 additions & 13 deletions src/test/kotlin/no/nav/klage/oppgave/service/OppgaveFacadeTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ import no.nav.klage.oppgave.api.view.HJEMMEL
import no.nav.klage.oppgave.api.view.TYPE_ANKE
import no.nav.klage.oppgave.api.view.TYPE_KLAGE
import no.nav.klage.oppgave.clients.gosys.*
import no.nav.klage.oppgave.clients.pdl.*
import no.nav.klage.oppgave.clients.pdl.HentPersonBolk
import no.nav.klage.oppgave.clients.pdl.HentPersonBolkResult
import no.nav.klage.oppgave.clients.pdl.HentPersonResponse
import no.nav.klage.oppgave.clients.pdl.PdlClient
import no.nav.klage.oppgave.domain.OppgaverSearchCriteria
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
Expand Down Expand Up @@ -78,20 +81,16 @@ internal class OppgaveFacadeTest {
return HentPersonResponse(
data = HentPersonBolk(
listOf(
Person(
navn = listOf(
Navn(
fornavn = "Test",
etternavn = "Person"
HentPersonBolkResult(
HentPersonBolkResult.Person(
navn = listOf(
HentPersonBolkResult.Person.Navn(
fornavn = "Test",
etternavn = "Person"
)
)
),
folkeregisteridentifikator = listOf(
Folkeregisteridentifikator(
identifikasjonsnummer = "12345678910",
type = "FNR",
status = ""
)
)
ident = "12345678910"
)
)
)
Expand Down

0 comments on commit b6528a6

Please sign in to comment.