Repository: navikt/familie-ks-sak
Pull request #1153: Filtrere på løpende andel i stedet for løpende fagsak i barnehagelister
Author: login: schmelita
Created: 2025-03-06T11:51:40Z | Merged: 2025-03-12T11:30:05Z

### 💰 Hva skal gjøres, og hvorfor?
Favro: https://favro.com/organization/98c34fb974ce445eac854de0/1844bbac3b6605eacc8f5543?card=NAV-24115

Ønsker å filtrere på løpende andel i stedet for løpende fagsak. Har lagt til støtte for å filtrere på begge, så endrer frontend og fjerner støtte for å filtrere på fagsak når denne er merget. 
Noen navn i barnehageRepository gir ikke helt mening pr nå, endrer fra "UavhengigAvFagsak" til "UavhengigAvLøpendeAndel" når frontend er endret. 


### 🔎️ Er det noe spesielt du ønsker tilbakemelding om?
_Er det noe du er usikker på eller ønsker å diskutere? Beskriv det gjerne her eller kommenter koden det gjelder._

### ✅ Checklist
_Har du husket alle punktene i listen?_
- [ ] Jeg har testet mine endringer i henhold til akseptansekriteriene 🕵️
- [ ] Jeg har config- eller sql-endringer. I så fall, husk manuell deploy til miljø for å verifisere endringene.
- [x] Jeg har skrevet tester. Hvis du ikke har skrevet tester, beskriv hvorfor under 👇

_Jeg har ikke skrevet tester fordi:_

### 💬 Ønsker du en muntlig gjennomgang?
- [ ] Ja
- [x] Nei



Diff:
diff --git a/src/main/kotlin/no/nav/familie/ks/sak/api/dto/BarnehagebarnRequestParams.kt b/src/main/kotlin/no/nav/familie/ks/sak/api/dto/BarnehagebarnRequestParams.kt
index 4a733a33b7..198e73fd44 100644
--- a/src/main/kotlin/no/nav/familie/ks/sak/api/dto/BarnehagebarnRequestParams.kt
+++ b/src/main/kotlin/no/nav/familie/ks/sak/api/dto/BarnehagebarnRequestParams.kt
@@ -8,4 +8,5 @@ data class BarnehagebarnRequestParams(
     val offset: Int = 0,
     val sortBy: String = "kommuneNavn",
     val sortAsc: Boolean = false,
+    val kunLøpendeAndel: Boolean = false,
 )
diff --git a/src/main/kotlin/no/nav/familie/ks/sak/barnehagelister/BarnehagebarnService.kt b/src/main/kotlin/no/nav/familie/ks/sak/barnehagelister/BarnehagebarnService.kt
index ca19d5056a..3ecc64e887 100644
--- a/src/main/kotlin/no/nav/familie/ks/sak/barnehagelister/BarnehagebarnService.kt
+++ b/src/main/kotlin/no/nav/familie/ks/sak/barnehagelister/BarnehagebarnService.kt
@@ -11,6 +11,7 @@ import org.springframework.data.domain.Page
 import org.springframework.data.domain.PageRequest
 import org.springframework.data.domain.Sort
 import org.springframework.stereotype.Service
+import java.time.LocalDate
 
 @Service
 class BarnehagebarnService(
@@ -21,14 +22,25 @@ class BarnehagebarnService(
         val sort = barnehagebarnRequestParams.toSort()
         val pageable = PageRequest.of(barnehagebarnRequestParams.offset, barnehagebarnRequestParams.limit, sort)
         val hentForKunLøpendeFagsak = barnehagebarnRequestParams.kunLøpendeFagsak
+        val hentForKunLøpendeAndel: Boolean = barnehagebarnRequestParams.kunLøpendeAndel
+        val dagensDato = LocalDate.now()
 
         return when {
+            !barnehagebarnRequestParams.ident.isNullOrEmpty() && hentForKunLøpendeAndel ->
+                hentBarnehageBarnMedIdentOgLøpendeAndel(hentForKunLøpendeAndel, barnehagebarnRequestParams.ident, dagensDato, pageable)
+
             !barnehagebarnRequestParams.ident.isNullOrEmpty() ->
                 hentBarnehageBarnMedIdent(hentForKunLøpendeFagsak, barnehagebarnRequestParams.ident, pageable)
 
+            !barnehagebarnRequestParams.kommuneNavn.isNullOrEmpty() && hentForKunLøpendeAndel ->
+                hentBarnehageBarnMedKommuneNavnOgLøpendeAndel(hentForKunLøpendeAndel, barnehagebarnRequestParams.kommuneNavn, dagensDato, pageable)
+
             !barnehagebarnRequestParams.kommuneNavn.isNullOrEmpty() ->
                 hentBarnehageBarnMedKommuneNavn(hentForKunLøpendeFagsak, barnehagebarnRequestParams.kommuneNavn, pageable)
 
+            hentForKunLøpendeAndel ->
+                hentAlleBarnehageBarnLøpendeAndel(hentForKunLøpendeAndel, dagensDato, pageable)
+
             else -> hentAlleBarnehageBarn(hentForKunLøpendeFagsak, pageable)
         }
     }
@@ -59,6 +71,16 @@ class BarnehagebarnService(
         barnehagebarnRepository.findAlleBarnehagebarnUavhengigAvFagsak(pageable)
     }
 
+    private fun hentAlleBarnehageBarnLøpendeAndel(
+        hentForKunLøpendeAndel: Boolean,
+        dagensDato: LocalDate,
+        pageable: PageRequest,
+    ) = if (hentForKunLøpendeAndel) {
+        barnehagebarnRepository.findBarnehagebarnLøpendeAndel(dagensDato, pageable)
+    } else {
+        barnehagebarnRepository.findAlleBarnehagebarnUavhengigAvFagsak(pageable)
+    }
+
     private fun hentBarnehageBarnMedKommuneNavn(
         hentForKunLøpendeFagsak: Boolean,
         kommuneNavn: String,
@@ -69,6 +91,17 @@ class BarnehagebarnService(
         barnehagebarnRepository.findBarnehagebarnByKommuneNavnUavhengigAvFagsak(kommuneNavn, pageable)
     }
 
+    private fun hentBarnehageBarnMedKommuneNavnOgLøpendeAndel(
+        hentForKunLøpendeAndel: Boolean,
+        kommuneNavn: String,
+        dagensDato: LocalDate,
+        pageable: PageRequest,
+    ) = if (hentForKunLøpendeAndel) {
+        barnehagebarnRepository.findBarnehagebarnByKommuneNavnOgLøpendeAndel(kommuneNavn, dagensDato, pageable)
+    } else {
+        barnehagebarnRepository.findBarnehagebarnByKommuneNavnUavhengigAvFagsak(kommuneNavn, pageable)
+    }
+
     private fun hentBarnehageBarnMedIdent(
         hentForKunLøpendeFagsak: Boolean,
         ident: String,
@@ -79,6 +112,17 @@ class BarnehagebarnService(
         barnehagebarnRepository.findBarnehagebarnByIdentUavhengigAvFagsak(ident, pageable)
     }
 
+    private fun hentBarnehageBarnMedIdentOgLøpendeAndel(
+        hentForKunLøpendeAndel: Boolean,
+        ident: String,
+        dagensDato: LocalDate,
+        pageable: PageRequest,
+    ) = if (hentForKunLøpendeAndel) {
+        barnehagebarnRepository.findBarnehagebarnByIdentOgLøpendeAndel(ident, dagensDato, pageable)
+    } else {
+        barnehagebarnRepository.findBarnehagebarnByIdentUavhengigAvFagsak(ident, pageable)
+    }
+
     private fun BarnehagebarnRequestParams.toSort() =
         if (sortAsc) {
             Sort.by(getCorrectSortBy(sortBy)).ascending()
diff --git a/src/main/kotlin/no/nav/familie/ks/sak/barnehagelister/domene/BarnehagebarnRepository.kt b/src/main/kotlin/no/nav/familie/ks/sak/barnehagelister/domene/BarnehagebarnRepository.kt
index ca327cbfc6..cc81062f09 100644
--- a/src/main/kotlin/no/nav/familie/ks/sak/barnehagelister/domene/BarnehagebarnRepository.kt
+++ b/src/main/kotlin/no/nav/familie/ks/sak/barnehagelister/domene/BarnehagebarnRepository.kt
@@ -4,6 +4,7 @@ import org.springframework.data.domain.Page
 import org.springframework.data.domain.Pageable
 import org.springframework.data.jpa.repository.JpaRepository
 import org.springframework.data.jpa.repository.Query
+import java.time.LocalDate
 import java.util.UUID
 
 interface BarnehagebarnRepository : JpaRepository<Barnehagebarn, UUID> { // , JpaSpecificationExecutor<Barnehagebarn>
@@ -29,6 +30,29 @@ interface BarnehagebarnRepository : JpaRepository<Barnehagebarn, UUID> { // , Jp
         pageable: Pageable,
     ): Page<BarnehagebarnDtoInterface>
 
+    @Query(
+        """
+           SELECT bb.ident as ident, bb.fom as fom, bb.tom as tom, bb.antall_timer_i_barnehage as antallTimerIBarnehage, 
+            bb.endringstype as endringstype, bb.kommune_navn as kommuneNavn, bb.kommune_nr as kommuneNr, MAX(bb.endret_tid) as endretTid,
+            f.id as fagsakId, f.status as fagsakstatus
+            FROM barnehagebarn bb
+            INNER JOIN personident p ON bb.ident = p.foedselsnummer AND p.aktiv = true
+            INNER JOIN po_person pp ON p.fk_aktoer_id = pp.fk_aktoer_id
+            INNER JOIN gr_personopplysninger go ON pp.fk_gr_personopplysninger_id = go.id
+            INNER JOIN behandling b ON go.fk_behandling_id = b.id AND b.aktiv = true
+            INNER JOIN fagsak f ON b.fk_fagsak_id = f.id AND f.arkivert = false
+            INNER JOIN andel_tilkjent_ytelse a on pp.fk_aktoer_id = a.fk_aktoer_id
+            WHERE (a.stonad_tom >= :dagensDato) 
+            GROUP BY bb.ident, bb.fom, bb.tom, bb.antall_timer_i_barnehage, bb.endringstype, bb.kommune_navn, bb.kommune_nr, f.id, f.status
+
+        """,
+        nativeQuery = true,
+    )
+    fun findBarnehagebarnLøpendeAndel(
+        dagensDato: LocalDate,
+        pageable: Pageable,
+    ): Page<BarnehagebarnDtoInterface>
+
     @Query(
         """
             SELECT bb.ident as ident, bb.fom as fom, bb.tom as tom, bb.antall_timer_i_barnehage as antallTimerIBarnehage, 
@@ -50,6 +74,29 @@ interface BarnehagebarnRepository : JpaRepository<Barnehagebarn, UUID> { // , Jp
         pageable: Pageable,
     ): Page<BarnehagebarnDtoInterface>
 
+    @Query(
+        """
+            SELECT bb.ident as ident, bb.fom as fom, bb.tom as tom, bb.antall_timer_i_barnehage as antallTimerIBarnehage, 
+            bb.endringstype as endringstype, bb.kommune_navn as kommuneNavn, bb.kommune_nr as kommuneNr, MAX(bb.endret_tid) as endretTid,
+            f.id as fagsakId, f.status as fagsakstatus
+            FROM barnehagebarn bb
+            INNER JOIN personident p ON bb.ident = p.foedselsnummer AND p.aktiv = true
+            INNER JOIN po_person pp ON p.fk_aktoer_id = pp.fk_aktoer_id
+            INNER JOIN gr_personopplysninger go ON pp.fk_gr_personopplysninger_id = go.id
+            INNER JOIN behandling b ON go.fk_behandling_id = b.id AND b.aktiv = true
+            INNER JOIN fagsak f ON b.fk_fagsak_id = f.id AND f.arkivert = false 
+            INNER JOIN andel_tilkjent_ytelse a on pp.fk_aktoer_id = a.fk_aktoer_id
+            WHERE (a.stonad_tom >= :dagensDato) AND bb.ident = :ident
+            GROUP BY bb.ident, bb.fom, bb.tom, bb.antall_timer_i_barnehage, bb.endringstype, bb.kommune_navn, bb.kommune_nr, f.id, f.status
+        """,
+        nativeQuery = true,
+    )
+    fun findBarnehagebarnByIdentOgLøpendeAndel(
+        ident: String,
+        dagensDato: LocalDate,
+        pageable: Pageable,
+    ): Page<BarnehagebarnDtoInterface>
+
     @Query(
         """
             SELECT bb.ident as ident, bb.fom as fom, bb.tom as tom, bb.antall_timer_i_barnehage as antallTimerIBarnehage, 
@@ -71,6 +118,30 @@ interface BarnehagebarnRepository : JpaRepository<Barnehagebarn, UUID> { // , Jp
         pageable: Pageable,
     ): Page<BarnehagebarnDtoInterface>
 
+    @Query(
+        """
+           SELECT bb.ident as ident, bb.fom as fom, bb.tom as tom, bb.antall_timer_i_barnehage as antallTimerIBarnehage, 
+            bb.endringstype as endringstype, bb.kommune_navn as kommuneNavn, bb.kommune_nr as kommuneNr, MAX(bb.endret_tid) as endretTid,
+            f.id as fagsakId, f.status as fagsakstatus
+            FROM barnehagebarn bb
+            INNER JOIN personident p ON bb.ident = p.foedselsnummer AND p.aktiv = true
+            INNER JOIN po_person pp ON p.fk_aktoer_id = pp.fk_aktoer_id
+            INNER JOIN gr_personopplysninger go ON pp.fk_gr_personopplysninger_id = go.id
+            INNER JOIN behandling b ON go.fk_behandling_id = b.id AND b.aktiv = true
+            INNER JOIN fagsak f ON b.fk_fagsak_id = f.id AND f.arkivert = false 
+            INNER JOIN andel_tilkjent_ytelse a on pp.fk_aktoer_id = a.fk_aktoer_id
+            WHERE UPPER(bb.kommune_navn) = UPPER(:kommuneNavn)
+            AND (a.stonad_tom >= :dagensDato)
+            GROUP BY bb.ident, bb.fom, bb.tom, bb.antall_timer_i_barnehage, bb.endringstype, bb.kommune_navn, bb.kommune_nr, f.id, f.status 
+        """,
+        nativeQuery = true,
+    )
+    fun findBarnehagebarnByKommuneNavnOgLøpendeAndel(
+        kommuneNavn: String,
+        dagensDato: LocalDate,
+        pageable: Pageable,
+    ): Page<BarnehagebarnDtoInterface>
+
     @Query(
         """
             SELECT bb.ident as ident, bb.fom as fom, bb.tom as tom, bb.antall_timer_i_barnehage as antallTimerIBarnehage,
@@ -103,6 +174,7 @@ interface BarnehagebarnRepository : JpaRepository<Barnehagebarn, UUID> { // , Jp
         nativeQuery = true,
     )
     fun findBarnehagebarnByIdentUavhengigAvFagsak(
+        // TODO Skal renames til findBarnehagebarnByIdentUavhengigAvLøpendeAndel
         ident: String,
         pageable: Pageable,
     ): Page<BarnehagebarnDtoInterface>
@@ -123,6 +195,7 @@ interface BarnehagebarnRepository : JpaRepository<Barnehagebarn, UUID> { // , Jp
         nativeQuery = true,
     )
     fun findBarnehagebarnByKommuneNavnUavhengigAvFagsak(
+        // TODO Skal renames til findBarnehagebarnByKommuneNavnUavhengigAvLøpendeAndel
         kommuneNavn: String,
         pageable: Pageable,
     ): Page<BarnehagebarnDtoInterface>
diff --git a/src/test/enhetstester/kotlin/no/nav/familie/ks/sak/barnehagelister/BarnehagebarnServiceTest.kt b/src/test/enhetstester/kotlin/no/nav/familie/ks/sak/barnehagelister/BarnehagebarnServiceTest.kt
index 9e8d63aa8c..4d023d0130 100644
--- a/src/test/enhetstester/kotlin/no/nav/familie/ks/sak/barnehagelister/BarnehagebarnServiceTest.kt
+++ b/src/test/enhetstester/kotlin/no/nav/familie/ks/sak/barnehagelister/BarnehagebarnServiceTest.kt
@@ -200,6 +200,81 @@ class BarnehagebarnServiceTest {
         }
     }
 
+    @Nested
+    inner class HentBarnehagebarnLøpendeAndelTest {
+        @Test
+        fun `skal hente alle barn med løpende andel dersom det sendes inn som parameter`() {
+            // Arrange
+            val dagensDato = LocalDate.now()
+            val mocketPageBarnehagebarnDtoInterface = mockk<Page<BarnehagebarnDtoInterface>>()
+            val barnehagebarnRequestParams =
+                BarnehagebarnRequestParams(
+                    ident = null,
+                    kunLøpendeFagsak = false,
+                    kommuneNavn = null,
+                    kunLøpendeAndel = true,
+                )
+            every {
+                mockBarnehagebarnRepository.findBarnehagebarnLøpendeAndel(dagensDato, any())
+            } returns mocketPageBarnehagebarnDtoInterface
+
+            // Act
+            val hentetMocketPageBarnehagebarnDtoInterface = barnehagebarnService.hentBarnehageBarn(barnehagebarnRequestParams)
+
+            // Assert
+            assertThat(hentetMocketPageBarnehagebarnDtoInterface).isEqualTo(mocketPageBarnehagebarnDtoInterface)
+            verify(exactly = 1) { mockBarnehagebarnRepository.findBarnehagebarnLøpendeAndel(dagensDato, any()) }
+        }
+
+        @Test
+        fun `skal hente barn med løpende andel fra kommunenavn dersom det sendes inn som parameter`() {
+            // Arrange
+            val dagensDato = LocalDate.now()
+            val mocketPageBarnehagebarnDtoInterface = mockk<Page<BarnehagebarnDtoInterface>>()
+            val barnehagebarnRequestParams =
+                BarnehagebarnRequestParams(
+                    ident = null,
+                    kunLøpendeFagsak = false,
+                    kommuneNavn = "kommune",
+                    kunLøpendeAndel = true,
+                )
+            every {
+                mockBarnehagebarnRepository.findBarnehagebarnByKommuneNavnOgLøpendeAndel("kommune", dagensDato, any())
+            } returns mocketPageBarnehagebarnDtoInterface
+
+            // Act
+            val hentetMocketPageBarnehagebarnDtoInterface = barnehagebarnService.hentBarnehageBarn(barnehagebarnRequestParams)
+
+            // Assert
+            assertThat(hentetMocketPageBarnehagebarnDtoInterface).isEqualTo(mocketPageBarnehagebarnDtoInterface)
+            verify(exactly = 1) { mockBarnehagebarnRepository.findBarnehagebarnByKommuneNavnOgLøpendeAndel("kommune", dagensDato, any()) }
+        }
+
+        @Test
+        fun `skal hente barn med løpende andel fra ident dersom det sendes inn som parameter`() {
+            // Arrange
+            val dagensDato = LocalDate.now()
+            val mocketPageBarnehagebarnDtoInterface = mockk<Page<BarnehagebarnDtoInterface>>()
+            val barnehagebarnRequestParams =
+                BarnehagebarnRequestParams(
+                    ident = "ident",
+                    kunLøpendeFagsak = false,
+                    kommuneNavn = null,
+                    kunLøpendeAndel = true,
+                )
+            every {
+                mockBarnehagebarnRepository.findBarnehagebarnByIdentOgLøpendeAndel("ident", dagensDato, any())
+            } returns mocketPageBarnehagebarnDtoInterface
+
+            // Act
+            val hentetMocketPageBarnehagebarnDtoInterface = barnehagebarnService.hentBarnehageBarn(barnehagebarnRequestParams)
+
+            // Assert
+            assertThat(hentetMocketPageBarnehagebarnDtoInterface).isEqualTo(mocketPageBarnehagebarnDtoInterface)
+            verify(exactly = 1) { mockBarnehagebarnRepository.findBarnehagebarnByIdentOgLøpendeAndel("ident", dagensDato, any()) }
+        }
+    }
+
     @Nested
     inner class HentBarnehagebarnInfotrygdTest {
         @Test


Reviews:
user: login: fredrikpf
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-10T14:04:06Z
user: login: fredrikpf
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-10T14:13:22Z
user: login: fredrikpf
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-10T14:14:21Z
user: login: fredrikpf
body: <img src="https://media3.giphy.com/media/v1.Y2lkPWJkM2VhNTdlbnA5emx0MTBpYTZ2cXd6bWdtNzdvZmZ4OG13dmJmdnkyemtyMm81MCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/VeyCyriTsxn3i/giphy.gif"/>
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-03-10T14:25:05Z
user: login: bragejahren
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-11T07:48:27Z
user: login: bragejahren
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-11T07:54:31Z
user: login: bragejahren
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-11T07:55:06Z
user: login: bragejahren
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-11T07:58:00Z
user: login: bragejahren
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-11T07:58:36Z
user: login: bragejahren
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-11T07:59:14Z
user: login: schmelita
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-12T09:15:57Z
user: login: schmelita
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-12T09:25:48Z
user: login: schmelita
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-12T09:30:13Z

Review comments:
diff_hunk: @@ -29,6 +30,29 @@ interface BarnehagebarnRepository : JpaRepository<Barnehagebarn, UUID> { // , Jp
         pageable: Pageable,
     ): Page<BarnehagebarnDtoInterface>
 
+    @Query(
+        """
+           SELECT bb.ident as ident, bb.fom as fom, bb.tom as tom, bb.antall_timer_i_barnehage as antallTimerIBarnehage, 
+            bb.endringstype as endringstype, bb.kommune_navn as kommuneNavn, bb.kommune_nr as kommuneNr, MAX(bb.endret_tid) as endretTid,
+            f.id as fagsakId, f.status as fagsakstatus
+            FROM barnehagebarn bb
+            INNER JOIN personident p ON bb.ident = p.foedselsnummer AND p.aktiv = true
+            INNER JOIN po_person pp ON p.fk_aktoer_id = pp.fk_aktoer_id
+            INNER JOIN gr_personopplysninger go ON pp.fk_gr_personopplysninger_id = go.id
+            INNER JOIN behandling b ON go.fk_behandling_id = b.id AND b.aktiv = true
+            INNER JOIN fagsak f ON b.fk_fagsak_id = f.id AND f.arkivert = false
+            INNER JOIN andel_tilkjent_ytelse a on pp.fk_aktoer_id = a.fk_aktoer_id
path: src/main/kotlin/no/nav/familie/ks/sak/barnehagelister/domene/BarnehagebarnRepository.kt
user: login: fredrikpf
body: Burde sikkert teste det her, men mulig det er bedre å joine på behandlingsId og så legge til en "AND a.fk_aktoer_id = pp.fk_aktoer_id" også siden en aktør kan ha andeler fra en gammel behandling som ikke nødvendigvis er gyldig lenger.
created_at: 2025-03-10T14:04:06Z
author_association: CONTRIBUTOR
diff_hunk: @@ -59,6 +71,16 @@ class BarnehagebarnService(
         barnehagebarnRepository.findAlleBarnehagebarnUavhengigAvFagsak(pageable)
     }
 
+    private fun hentAlleBarnehageBarnLøpendeAndel(
path: src/main/kotlin/no/nav/familie/ks/sak/barnehagelister/BarnehagebarnService.kt
user: login: fredrikpf
body: Denne burde kanskje ikke hete noe med løpende andel siden det blir sjekket i metoden? 
created_at: 2025-03-10T14:13:22Z
author_association: CONTRIBUTOR
diff_hunk: @@ -59,6 +71,16 @@ class BarnehagebarnService(
         barnehagebarnRepository.findAlleBarnehagebarnUavhengigAvFagsak(pageable)
     }
 
+    private fun hentAlleBarnehageBarnLøpendeAndel(
path: src/main/kotlin/no/nav/familie/ks/sak/barnehagelister/BarnehagebarnService.kt
user: login: fredrikpf
body: Men det kan kanskje endres når vi fjerner støtte for løpende fagsak siden man ellers ender opp med like metodenavn!! 
created_at: 2025-03-10T14:14:20Z
author_association: CONTRIBUTOR
diff_hunk: @@ -8,4 +8,5 @@ data class BarnehagebarnRequestParams(
     val offset: Int = 0,
     val sortBy: String = "kommuneNavn",
     val sortAsc: Boolean = false,
+    val kunLøpendeAndel: Boolean = false,
path: src/main/kotlin/no/nav/familie/ks/sak/api/dto/BarnehagebarnRequestParams.kt
user: login: bragejahren
body: Antar at `kunLøpendeFagsak` ikke er fjernet for at søket fortsatt skal fungerer frem til frontend har tatt i bruk `kunLøpendeAndel`? 😊 
created_at: 2025-03-11T07:48:27Z
author_association: CONTRIBUTOR
diff_hunk: @@ -21,14 +22,25 @@ class BarnehagebarnService(
         val sort = barnehagebarnRequestParams.toSort()
         val pageable = PageRequest.of(barnehagebarnRequestParams.offset, barnehagebarnRequestParams.limit, sort)
         val hentForKunLøpendeFagsak = barnehagebarnRequestParams.kunLøpendeFagsak
+        val hentForKunLøpendeAndel: Boolean = barnehagebarnRequestParams.kunLøpendeAndel
+        val dagensDato = LocalDate.now()
 
         return when {
+            !barnehagebarnRequestParams.ident.isNullOrEmpty() && hentForKunLøpendeAndel ->
+                hentBarnehageBarnMedIdentOgLøpendeAndel(hentForKunLøpendeAndel, barnehagebarnRequestParams.ident, dagensDato, pageable)
+
             !barnehagebarnRequestParams.ident.isNullOrEmpty() ->
                 hentBarnehageBarnMedIdent(hentForKunLøpendeFagsak, barnehagebarnRequestParams.ident, pageable)
path: src/main/kotlin/no/nav/familie/ks/sak/barnehagelister/BarnehagebarnService.kt
user: login: bragejahren
body: Er det nødvendig å sende med `hentForKunLøpendeFagsak` her?
created_at: 2025-03-11T07:54:31Z
author_association: CONTRIBUTOR
diff_hunk: @@ -21,14 +22,25 @@ class BarnehagebarnService(
         val sort = barnehagebarnRequestParams.toSort()
         val pageable = PageRequest.of(barnehagebarnRequestParams.offset, barnehagebarnRequestParams.limit, sort)
         val hentForKunLøpendeFagsak = barnehagebarnRequestParams.kunLøpendeFagsak
+        val hentForKunLøpendeAndel: Boolean = barnehagebarnRequestParams.kunLøpendeAndel
+        val dagensDato = LocalDate.now()
 
         return when {
+            !barnehagebarnRequestParams.ident.isNullOrEmpty() && hentForKunLøpendeAndel ->
+                hentBarnehageBarnMedIdentOgLøpendeAndel(hentForKunLøpendeAndel, barnehagebarnRequestParams.ident, dagensDato, pageable)
+
             !barnehagebarnRequestParams.ident.isNullOrEmpty() ->
                 hentBarnehageBarnMedIdent(hentForKunLøpendeFagsak, barnehagebarnRequestParams.ident, pageable)
 
+            !barnehagebarnRequestParams.kommuneNavn.isNullOrEmpty() && hentForKunLøpendeAndel ->
+                hentBarnehageBarnMedKommuneNavnOgLøpendeAndel(hentForKunLøpendeAndel, barnehagebarnRequestParams.kommuneNavn, dagensDato, pageable)
+
             !barnehagebarnRequestParams.kommuneNavn.isNullOrEmpty() ->
                 hentBarnehageBarnMedKommuneNavn(hentForKunLøpendeFagsak, barnehagebarnRequestParams.kommuneNavn, pageable)
path: src/main/kotlin/no/nav/familie/ks/sak/barnehagelister/BarnehagebarnService.kt
user: login: bragejahren
body: Og her?
created_at: 2025-03-11T07:55:06Z
author_association: CONTRIBUTOR
diff_hunk: @@ -59,6 +71,16 @@ class BarnehagebarnService(
         barnehagebarnRepository.findAlleBarnehagebarnUavhengigAvFagsak(pageable)
     }
 
+    private fun hentAlleBarnehageBarnLøpendeAndel(
+        hentForKunLøpendeAndel: Boolean,
+        dagensDato: LocalDate,
+        pageable: PageRequest,
+    ) = if (hentForKunLøpendeAndel) {
+        barnehagebarnRepository.findBarnehagebarnLøpendeAndel(dagensDato, pageable)
+    } else {
+        barnehagebarnRepository.findAlleBarnehagebarnUavhengigAvFagsak(pageable)
+    }
path: src/main/kotlin/no/nav/familie/ks/sak/barnehagelister/BarnehagebarnService.kt
user: login: bragejahren
body: Trenger vi else'en? Blir ikke denne metoden kun kalt dersom `hentForKunLøpendeAndel` er `true`?
created_at: 2025-03-11T07:58:00Z
author_association: CONTRIBUTOR
diff_hunk: @@ -69,6 +91,17 @@ class BarnehagebarnService(
         barnehagebarnRepository.findBarnehagebarnByKommuneNavnUavhengigAvFagsak(kommuneNavn, pageable)
     }
 
+    private fun hentBarnehageBarnMedKommuneNavnOgLøpendeAndel(
+        hentForKunLøpendeAndel: Boolean,
+        kommuneNavn: String,
+        dagensDato: LocalDate,
+        pageable: PageRequest,
+    ) = if (hentForKunLøpendeAndel) {
+        barnehagebarnRepository.findBarnehagebarnByKommuneNavnOgLøpendeAndel(kommuneNavn, dagensDato, pageable)
+    } else {
+        barnehagebarnRepository.findBarnehagebarnByKommuneNavnUavhengigAvFagsak(kommuneNavn, pageable)
+    }
path: src/main/kotlin/no/nav/familie/ks/sak/barnehagelister/BarnehagebarnService.kt
user: login: bragejahren
body: Trenger vi else'en? Blir ikke denne metoden kun kalt dersom `hentForKunLøpendeAndel` er `true`? Mulig det er noe jeg ikke ser her 🙈 
created_at: 2025-03-11T07:58:36Z
author_association: CONTRIBUTOR
diff_hunk: @@ -79,6 +112,17 @@ class BarnehagebarnService(
         barnehagebarnRepository.findBarnehagebarnByIdentUavhengigAvFagsak(ident, pageable)
     }
 
+    private fun hentBarnehageBarnMedIdentOgLøpendeAndel(
+        hentForKunLøpendeAndel: Boolean,
+        ident: String,
+        dagensDato: LocalDate,
+        pageable: PageRequest,
+    ) = if (hentForKunLøpendeAndel) {
+        barnehagebarnRepository.findBarnehagebarnByIdentOgLøpendeAndel(ident, dagensDato, pageable)
+    } else {
+        barnehagebarnRepository.findBarnehagebarnByIdentUavhengigAvFagsak(ident, pageable)
+    }
path: src/main/kotlin/no/nav/familie/ks/sak/barnehagelister/BarnehagebarnService.kt
user: login: bragejahren
body: Og her?
created_at: 2025-03-11T07:59:14Z
author_association: CONTRIBUTOR
diff_hunk: @@ -8,4 +8,5 @@ data class BarnehagebarnRequestParams(
     val offset: Int = 0,
     val sortBy: String = "kommuneNavn",
     val sortAsc: Boolean = false,
+    val kunLøpendeAndel: Boolean = false,
path: src/main/kotlin/no/nav/familie/ks/sak/api/dto/BarnehagebarnRequestParams.kt
user: login: schmelita
body: Stemmer! 
created_at: 2025-03-12T09:15:57Z
author_association: CONTRIBUTOR
diff_hunk: @@ -69,6 +91,17 @@ class BarnehagebarnService(
         barnehagebarnRepository.findBarnehagebarnByKommuneNavnUavhengigAvFagsak(kommuneNavn, pageable)
     }
 
+    private fun hentBarnehageBarnMedKommuneNavnOgLøpendeAndel(
+        hentForKunLøpendeAndel: Boolean,
+        kommuneNavn: String,
+        dagensDato: LocalDate,
+        pageable: PageRequest,
+    ) = if (hentForKunLøpendeAndel) {
+        barnehagebarnRepository.findBarnehagebarnByKommuneNavnOgLøpendeAndel(kommuneNavn, dagensDato, pageable)
+    } else {
+        barnehagebarnRepository.findBarnehagebarnByKommuneNavnUavhengigAvFagsak(kommuneNavn, pageable)
+    }
path: src/main/kotlin/no/nav/familie/ks/sak/barnehagelister/BarnehagebarnService.kt
user: login: schmelita
body: Skjønner dette var litt forvirrende! Men tanker er at sjekken for hentForKunLøpendeAndel skal fjernes i hentBarnehageBarn() når vi fjerner filtrering på løpende fagsak, slik at denne metoden kun blir kalt med sjekken `!barnehagebarnRequestParams.ident.isNullOrEmpty()`. Det samme gjelder for metoden over.
created_at: 2025-03-12T09:25:48Z
author_association: CONTRIBUTOR
diff_hunk: @@ -69,6 +91,17 @@ class BarnehagebarnService(
         barnehagebarnRepository.findBarnehagebarnByKommuneNavnUavhengigAvFagsak(kommuneNavn, pageable)
     }
 
+    private fun hentBarnehageBarnMedKommuneNavnOgLøpendeAndel(
+        hentForKunLøpendeAndel: Boolean,
+        kommuneNavn: String,
+        dagensDato: LocalDate,
+        pageable: PageRequest,
+    ) = if (hentForKunLøpendeAndel) {
+        barnehagebarnRepository.findBarnehagebarnByKommuneNavnOgLøpendeAndel(kommuneNavn, dagensDato, pageable)
+    } else {
+        barnehagebarnRepository.findBarnehagebarnByKommuneNavnUavhengigAvFagsak(kommuneNavn, pageable)
+    }
path: src/main/kotlin/no/nav/familie/ks/sak/barnehagelister/BarnehagebarnService.kt
user: login: schmelita
body: Og under 
created_at: 2025-03-12T09:30:13Z
author_association: CONTRIBUTOR

PR comments:
user: login: sonarqubecloud[bot]
created_at: 2025-03-10T13:41:55Z
body: ## [![Quality Gate Passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/qg-passed-20px.png 'Quality Gate Passed')](https://sonarcloud.io/dashboard?id=navikt_familie-ks-sak&pullRequest=1153) **Quality Gate passed**  
Issues  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [2 New issues](https://sonarcloud.io/project/issues?id=navikt_familie-ks-sak&pullRequest=1153&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/accepted-16px.png '') [0 Accepted issues](https://sonarcloud.io/project/issues?id=navikt_familie-ks-sak&pullRequest=1153&issueStatuses=ACCEPTED)

Measures  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=navikt_familie-ks-sak&pullRequest=1153&issueStatuses=OPEN,CONFIRMED&sinceLeakPeriod=true)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [82.2% Coverage on New Code](https://sonarcloud.io/component_measures?id=navikt_familie-ks-sak&pullRequest=1153&metric=new_coverage&view=list)  
![](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/passed-16px.png '') [0.0% Duplication on New Code](https://sonarcloud.io/component_measures?id=navikt_familie-ks-sak&pullRequest=1153&metric=new_duplicated_lines_density&view=list)  
  
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=navikt_familie-ks-sak&pullRequest=1153)


author_association: NONE