@@ -20,7 +20,7 @@ internal fun Uttaksplan.slåSammenLikePerioder(): Uttaksplan {
20
20
// Slå sammen perioder og bygg nye perioder
21
21
val nyePerioder = mutableMapOf<LukketPeriode , UttaksperiodeInfo >()
22
22
perioderMedLikInfo.forEach { (info, perioder) ->
23
- val sammenslåttePerioder = perioder.slåSammen ()
23
+ val sammenslåttePerioder = perioder.slåSammen (this .perioder )
24
24
sammenslåttePerioder.forEach { sammenslåttPeriode ->
25
25
nyePerioder[sammenslåttPeriode] = info
26
26
}
@@ -29,7 +29,7 @@ internal fun Uttaksplan.slåSammenLikePerioder(): Uttaksplan {
29
29
return Uttaksplan (perioder = nyePerioder, trukketUttak = this .trukketUttak, kvoteInfo = this .kvoteInfo, commitId = this .commitId)
30
30
}
31
31
32
- private fun List<LukketPeriode>.sl åSammen (): List <LukketPeriode > {
32
+ private fun List<LukketPeriode>.sl åSammen (allePerioder : Map < LukketPeriode , UttaksperiodeInfo > ): List <LukketPeriode > {
33
33
val sortertePerioder = this .sortedBy { it.fom }
34
34
35
35
var nyPeriode: LukketPeriode ? = null
@@ -41,17 +41,33 @@ private fun List<LukketPeriode>.slåSammen(): List<LukketPeriode> {
41
41
} else if (bareHelgEllerIngenDagerMellom(nyPeriode!! .tom, periode.fom)) {
42
42
nyPeriode = LukketPeriode (nyPeriode!! .fom, periode.tom)
43
43
} else {
44
+ if (slutterPåFredagOgHelgErInkludertIUttaksplanen (nyPeriode!! , allePerioder)) {
45
+ nyPeriode = utvidOverHelgIEtterkant(nyPeriode!! )
46
+ }
44
47
nyePerioder.add(nyPeriode!! )
45
48
nyPeriode = periode
46
49
}
47
50
}
48
51
if (nyPeriode != null ) {
52
+ if (slutterPåFredagOgHelgErInkludertIUttaksplanen (nyPeriode!! , allePerioder)) {
53
+ nyPeriode = utvidOverHelgIEtterkant(nyPeriode!! )
54
+ }
49
55
nyePerioder.add(nyPeriode!! )
56
+
50
57
}
51
58
52
59
return nyePerioder
53
60
}
54
61
62
+ private fun utvidOverHelgIEtterkant (nyPeriode : LukketPeriode ) =
63
+ LukketPeriode (nyPeriode.fom, nyPeriode.tom.plusDays(2 ))
64
+
65
+ private fun slutterP åFredagOgHelgErInkludertIUttaksplanen (
66
+ nyPeriode : LukketPeriode ,
67
+ allePerioder : Map <LukketPeriode , UttaksperiodeInfo >
68
+ ): Boolean =
69
+ nyPeriode.tom.dayOfWeek == DayOfWeek .FRIDAY && allePerioder.any { it.key.fom.isAfter(nyPeriode.tom) }
70
+
55
71
internal fun bareHelgEllerIngenDagerMellom (dato1 : LocalDate , dato2 : LocalDate ): Boolean {
56
72
require(dato1 < dato2) {" Dato1($dato1 ) må være før dato2($dato2 )." }
57
73
val dagerMellom = ChronoUnit .DAYS .between(dato1, dato2)
0 commit comments