diff --git a/melosys-eessi-app/src/main/java/no/nav/melosys/eessi/service/sed/mapper/til_sed/lovvalg/A009Mapper.kt b/melosys-eessi-app/src/main/java/no/nav/melosys/eessi/service/sed/mapper/til_sed/lovvalg/A009Mapper.kt index 185dbf27..45e61f01 100644 --- a/melosys-eessi-app/src/main/java/no/nav/melosys/eessi/service/sed/mapper/til_sed/lovvalg/A009Mapper.kt +++ b/melosys-eessi-app/src/main/java/no/nav/melosys/eessi/service/sed/mapper/til_sed/lovvalg/A009Mapper.kt @@ -13,66 +13,58 @@ import no.nav.melosys.eessi.models.sed.nav.VedtakA009 import no.nav.melosys.eessi.service.sed.helpers.LandkodeMapper.mapTilLandkodeIso2 class A009Mapper : LovvalgSedMapper { - override fun getMedlemskap(sedData: SedDataDto): MedlemskapA009 { - val medlemskapA009 = MedlemskapA009() - medlemskapA009.vedtak = getVedtak(sedData) - medlemskapA009.andreland = getAndreland(sedData) - medlemskapA009.utsendingsland = getUtsendingsland(sedData) - return medlemskapA009 - } + override fun getSedType() = SedType.A009 - private fun getVedtak(sedDataDto: SedDataDto): VedtakA009 { - val vedtak = VedtakA009() - val lovvalgsperiode = sedDataDto.finnLovvalgsperiode() - val gjelderperiode = Periode() + override fun getMedlemskap(sedData: SedDataDto) = MedlemskapA009( + vedtak = getVedtak(sedData), + andreland = getAndreland(sedData), + utsendingsland = getUtsendingsland(sedData) + ) - if (lovvalgsperiode.isPresent) { - vedtak.land = mapTilLandkodeIso2(lovvalgsperiode.get().lovvalgsland) + private fun getVedtak(sedDataDto: SedDataDto): VedtakA009 { + val lovvalgsperiode = sedDataDto.finnLovvalgsperiode().orElse(null) + val gjelderperiode = Periode( //Vil alltid være fast periode - gjelderperiode.fastperiode = lagFastPeriodeFraLovvalgsPeriode(lovvalgsperiode.get()) + fastperiode = lovvalgsperiode?.let { lagFastPeriodeFraLovvalgsPeriode(it) } + ) - if (!erGyldigLovvalgbestemmelse(lovvalgsperiode.get().bestemmelse)) { + lovvalgsperiode?.let { + if (!erGyldigLovvalgbestemmelse(it.bestemmelse)) { throw MappingException("Lovvalgsbestemmelse er ikke av artikkel 12!") } - vedtak.artikkelforordning = lovvalgsperiode.get().bestemmelse!!.value } - setVedtaksdata(vedtak, sedDataDto.vedtakDto) - vedtak.gjeldervarighetyrkesaktivitet = "nei" - vedtak.gjelderperiode = gjelderperiode - return vedtak - } - - - private fun lagFastPeriodeFraLovvalgsPeriode(lovvalgsperiode: Lovvalgsperiode): Fastperiode { - val fastperiode = Fastperiode() - fastperiode.startdato = formaterDato(lovvalgsperiode.fom!!) - fastperiode.sluttdato = formaterDato(lovvalgsperiode.tom!!) - return fastperiode - } - - private fun erGyldigLovvalgbestemmelse(bestemmelse: Bestemmelse?): Boolean { - return bestemmelse == Bestemmelse.ART_12_1 - || bestemmelse == Bestemmelse.ART_12_2 - } - - private fun getUtsendingsland(sedData: SedDataDto): Utsendingsland { - val lovvalgsland = sedData.finnLovvalgslandDefaultNO() - val utsendingsland = Utsendingsland() - utsendingsland.arbeidsgiver = hentArbeidsgivereILand(sedData.arbeidsgivendeVirksomheter!!, lovvalgsland) - return utsendingsland - } - - private fun getAndreland(sedData: SedDataDto): Utsendingsland { - val lovvalgsland = sedData.finnLovvalgslandDefaultNO() - val utsendingsland = Utsendingsland() - utsendingsland.arbeidsgiver = hentArbeidsgivereIkkeILand(sedData.arbeidsgivendeVirksomheter!!, lovvalgsland) - return utsendingsland + return VedtakA009( + land = lovvalgsperiode?.lovvalgsland?.let { mapTilLandkodeIso2(it) }, + artikkelforordning = lovvalgsperiode?.bestemmelse?.value, + gjelderperiode = gjelderperiode, + gjeldervarighetyrkesaktivitet = "nei" + ).also { + setVedtaksdata(it, sedDataDto.vedtakDto) + } } - - override fun getSedType() = SedType.A009 - + private fun lagFastPeriodeFraLovvalgsPeriode(lovvalgsperiode: Lovvalgsperiode) = Fastperiode( + startdato = formaterDato(lovvalgsperiode.fom ?: throw IllegalArgumentException("lovvalgsperiode.fom kan ikke være null")), + sluttdato = formaterDato(lovvalgsperiode.tom ?: throw IllegalArgumentException("lovvalgsperiode.fom kan ikke være null")) + ) + + private fun erGyldigLovvalgbestemmelse(bestemmelse: Bestemmelse?): Boolean = + bestemmelse in listOf(Bestemmelse.ART_12_1, Bestemmelse.ART_12_2) + + private fun getUtsendingsland(sedData: SedDataDto) = Utsendingsland( + arbeidsgiver = hentArbeidsgivereILand( + sedData.arbeidsgivendeVirksomheter.orEmpty(), + landkode = sedData.finnLovvalgslandDefaultNO() + ) + ) + + private fun getAndreland(sedData: SedDataDto) = Utsendingsland( + arbeidsgiver = hentArbeidsgivereIkkeILand( + sedData.arbeidsgivendeVirksomheter.orEmpty(), + landkode = sedData.finnLovvalgslandDefaultNO() + ) + ) }