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

feat: filter out frilansere #425

Merged
merged 2 commits into from
Nov 19, 2024
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 @@ -6,6 +6,7 @@ import kotlinx.coroutines.withContext
import no.nav.syfo.application.database.DatabaseInterface
import no.nav.syfo.application.database.toList
import no.nav.syfo.arbeidsgivere.model.Arbeidsforhold
import no.nav.syfo.arbeidsgivere.model.ArbeidsforholdType

class ArbeidsforholdDb(private val database: DatabaseInterface) {
suspend fun getArbeidsforhold(fnr: String): List<Arbeidsforhold> =
Expand Down Expand Up @@ -33,4 +34,5 @@ fun ResultSet.toArbeidsforhold(): Arbeidsforhold =
orgNavn = getString("orgnavn"),
fom = getDate("fom").toLocalDate(),
tom = getDate("tom")?.toLocalDate(),
type = getString("type")?.let { ArbeidsforholdType.valueOf(it) }
)
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@ package no.nav.syfo.arbeidsgivere.model

import java.time.LocalDate

enum class ArbeidsforholdType {
FORENKLET_OPPGJOERSORDNING,
FRILANSER_OPPDRAGSTAKER_HONORAR_PERSONER_MM,
MARITIMT_ARBEIDSFORHOLD,
ORDINAERT_ARBEIDSFORHOLD,
PENSJON_OG_ANDRE_TYPER_YTELSER_UTEN_ANSETTELSESFORHOLD
}

data class Arbeidsforhold(
val id: Int,
val fnr: String,
Expand All @@ -10,4 +18,5 @@ data class Arbeidsforhold(
val orgNavn: String,
val fom: LocalDate,
val tom: LocalDate?,
val type: ArbeidsforholdType? = null,
)
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package no.nav.syfo.arbeidsgivere.service
import java.time.LocalDate
import no.nav.syfo.arbeidsgivere.db.ArbeidsforholdDb
import no.nav.syfo.arbeidsgivere.model.Arbeidsforhold
import no.nav.syfo.arbeidsgivere.model.ArbeidsforholdType
import no.nav.syfo.arbeidsgivere.model.Arbeidsgiverinfo
import no.nav.syfo.arbeidsgivere.model.NarmesteLeder
import no.nav.syfo.arbeidsgivere.narmesteleder.db.NarmestelederDb
Expand All @@ -19,7 +20,9 @@ class ArbeidsgiverService(
fnr: String,
date: LocalDate = LocalDate.now()
): List<Arbeidsgiverinfo> {
val arbeidsgivere = arbeidsforholdDb.getArbeidsforhold(fnr = fnr)
val arbeidsgivere =
getArbeidsforhold(fnr)

if (arbeidsgivere.isEmpty()) {
return emptyList()
}
Expand All @@ -31,11 +34,22 @@ class ArbeidsgiverService(
}
}

private suspend fun getArbeidsforhold(fnr: String) =
arbeidsforholdDb.getArbeidsforhold(fnr = fnr)
.filter { gyldigArbeidsforholdType(it) }

private fun gyldigArbeidsforholdType(arbeidsforhold: Arbeidsforhold): Boolean {
return when (arbeidsforhold.type) {
ArbeidsforholdType.FRILANSER_OPPDRAGSTAKER_HONORAR_PERSONER_MM -> false
else -> true
}
}

suspend fun getArbeidsgivere(
fnr: String,
date: LocalDate = LocalDate.now()
): List<Arbeidsgiverinfo> {
val arbeidsgivere = arbeidsforholdDb.getArbeidsforhold(fnr = fnr)
val arbeidsgivere = getArbeidsforhold(fnr = fnr)

if (arbeidsgivere.isEmpty()) {
return emptyList()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@ import io.mockk.coEvery
import io.mockk.coVerify
import io.mockk.mockkClass
import java.time.LocalDate
import kotlinx.coroutines.runBlocking
import no.nav.syfo.arbeidsgivere.db.ArbeidsforholdDb
import no.nav.syfo.arbeidsgivere.model.Arbeidsforhold
import no.nav.syfo.arbeidsgivere.model.ArbeidsforholdType
import no.nav.syfo.arbeidsgivere.narmesteleder.db.NarmestelederDb
import no.nav.syfo.sykmeldingstatus.TestHelper.Companion.februar
import no.nav.syfo.sykmeldingstatus.TestHelper.Companion.januar
Expand Down Expand Up @@ -227,12 +229,79 @@ class ArbeidsgiverServiceTest {
arbeidsgiverService.getArbeidsgivereWithinSykmeldingPeriode(
1.januar(2023),
31.januar(2023),
"1"
"1",
)
arbeidsgiverinformasjon.size shouldBeEqualTo 1
arbeidsgiverinformasjon[0].aktivtArbeidsforhold shouldBeEqualTo true
}

@Test
fun `Henter ikke arbeidsforhold som er frilansere`() {
runBlocking {
coEvery { arbeidsforholdDb.getArbeidsforhold(any()) } returns
getArbeidsgiverforhold(
fom = 1.januar(2020),
tom = null,
type = ArbeidsforholdType.FRILANSER_OPPDRAGSTAKER_HONORAR_PERSONER_MM,
)

val arbeidsgiverinformasjon =
arbeidsgiverService.getArbeidsgivereWithinSykmeldingPeriode(
1.januar(2023),
31.januar(2023),
"1",
)
arbeidsgiverinformasjon.size shouldBeEqualTo 0
}
}

@Test
fun `Henter alle arbeidsforhold som ikke er frilansere`() {
runBlocking {
coEvery { arbeidsforholdDb.getArbeidsforhold(any()) } returns
getArbeidsgiverforhold(
fom = 1.januar(2020),
tom = null,
type = ArbeidsforholdType.ORDINAERT_ARBEIDSFORHOLD,
) +
getArbeidsgiverforhold(
fom = 1.januar(2020),
tom = null,
type = ArbeidsforholdType.MARITIMT_ARBEIDSFORHOLD,
) +
getArbeidsgiverforhold(
fom = 1.januar(2020),
tom = null,
type =
ArbeidsforholdType
.PENSJON_OG_ANDRE_TYPER_YTELSER_UTEN_ANSETTELSESFORHOLD,
) +
getArbeidsgiverforhold(
fom = 1.januar(2020),
tom = null,
type = ArbeidsforholdType.FORENKLET_OPPGJOERSORDNING,
) +
getArbeidsgiverforhold(
fom = 1.januar(2020),
tom = null,
type = ArbeidsforholdType.FRILANSER_OPPDRAGSTAKER_HONORAR_PERSONER_MM,
) +
getArbeidsgiverforhold(
fom = 1.januar(2020),
tom = null,
type = null,
)

val arbeidsgiverinformasjon =
arbeidsgiverService.getArbeidsgivereWithinSykmeldingPeriode(
1.januar(2023),
31.januar(2023),
"1",
)
arbeidsgiverinformasjon.size shouldBeEqualTo 5
}
}

@Test
fun `To sykmeldinger med to forskjellige arbeidsforhold returnerer riktig arbeidsforhold`() =
testApplication {
Expand All @@ -255,14 +324,14 @@ class ArbeidsgiverServiceTest {
orgNavn = "Navn 1",
fom = 31.januar(2023),
tom = null,
)
),
)

val arbeidsgiverinformasjonSm1 =
arbeidsgiverService.getArbeidsgivereWithinSykmeldingPeriode(
1.januar(2023),
30.januar(2023),
"1"
"1",
)
arbeidsgiverinformasjonSm1.size shouldBeEqualTo 1
arbeidsgiverinformasjonSm1[0].aktivtArbeidsforhold shouldBeEqualTo false
Expand All @@ -272,7 +341,7 @@ class ArbeidsgiverServiceTest {
arbeidsgiverService.getArbeidsgivereWithinSykmeldingPeriode(
31.januar(2023),
15.februar(2023),
"1"
"1",
)

arbeidsgiverinformasjonSm2.size shouldBeEqualTo 1
Expand All @@ -292,7 +361,7 @@ class ArbeidsgiverServiceTest {
arbeidsgiverService.getArbeidsgivereWithinSykmeldingPeriode(
31.januar(2023),
15.februar(2023),
"1"
"1",
)

arbeidsgiverinformasjon.size shouldBeEqualTo 1
Expand All @@ -311,7 +380,7 @@ class ArbeidsgiverServiceTest {
arbeidsgiverService.getArbeidsgivereWithinSykmeldingPeriode(
1.januar(2023),
31.januar(2023),
"1"
"1",
)

arbeidsgiverinformasjon.size shouldBeEqualTo 1
Expand All @@ -331,7 +400,7 @@ class ArbeidsgiverServiceTest {
arbeidsgiverService.getArbeidsgivereWithinSykmeldingPeriode(
1.januar(2023),
31.januar(2023),
"1"
"1",
)

arbeidsgiverinformasjon.size shouldBeEqualTo 0
Expand All @@ -349,7 +418,7 @@ class ArbeidsgiverServiceTest {
arbeidsgiverService.getArbeidsgivereWithinSykmeldingPeriode(
15.januar(2023),
31.januar(2023),
"1"
"1",
)

arbeidsgiverinformasjon.size shouldBeEqualTo 1
Expand All @@ -366,7 +435,7 @@ class ArbeidsgiverServiceTest {
arbeidsgiverService.getArbeidsgivereWithinSykmeldingPeriode(
15.januar(2023),
31.januar(2023),
"1"
"1",
)
arbeidsgiverinformasjon.size shouldBeEqualTo 1
}
Expand All @@ -383,7 +452,7 @@ class ArbeidsgiverServiceTest {
arbeidsgiverService.getArbeidsgivereWithinSykmeldingPeriode(
31.januar(2023),
15.februar(2023),
"1"
"1",
)

arbeidsgiverinformasjon.size shouldBeEqualTo 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import java.time.OffsetDateTime
import java.time.ZoneOffset
import java.util.UUID
import no.nav.syfo.arbeidsgivere.model.Arbeidsforhold
import no.nav.syfo.arbeidsgivere.model.ArbeidsforholdType
import no.nav.syfo.arbeidsgivere.narmesteleder.db.NarmestelederDbModel
import no.nav.syfo.sykmeldingstatus.TestHelper.Companion.juni

Expand All @@ -14,6 +15,7 @@ val ORGNR_2 = "222222222"
fun getArbeidsgiverforhold(
fom: LocalDate = 1.juni(2020),
tom: LocalDate? = null,
type: ArbeidsforholdType? = ArbeidsforholdType.ORDINAERT_ARBEIDSFORHOLD
): List<Arbeidsforhold> {
return listOf(
Arbeidsforhold(
Expand All @@ -24,6 +26,7 @@ fun getArbeidsgiverforhold(
orgNavn = "Navn 1",
fom = fom,
tom = tom,
type = type
),
)
}
Expand Down
Loading