package Ġno . nav . hel se . person Ċ Ċ import Ġno . nav . hel se . hen del ser . Per i ode Ċ import Ġno . nav . hel se . hen del ser . til Ċ import Ġno . nav . hel se . person . Ref us jon sh istor ikk . Ref us jon . Companion . leg g Til Ref us jon Ċ import Ġno . nav . hel se . person . Ref us jon sh istor ikk . Ref us jon . Companion . som Overlap per Med Ar be id sg iver peri ode Ċ import Ġno . nav . hel se . person . Ref us jon sh istor ikk . Ref us jon . Companion . som Til st Ã¸ ter Ar be id sg iver peri ode Ċ import Ġno . nav . hel se . person . Ref us jon sh istor ikk . Ref us jon . Companion . som Tre ffer F Ã¸ r ste Fr av Ã¦ r sd ag Ċ import Ġno . nav . hel se . person . Ref us jon sh istor ikk . Ref us jon . End ring I Ref us jon . Companion . bel Ã¸ p Ċ import Ġno . nav . hel se . Ã¸ k onom i . In n te kt Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . util .* Ċ Ċ internal Ġclass ĠRef us jon sh istor ikk Ġ{ ĊĠĠĠ Ġprivate Ġval Ġref us jon er Ġ= Ġmutable ListOf < Ref us jon >() ĊĊĠĠĠ Ġinternal Ġfun Ġle gg Til Ref us jon ( ref us jon : ĠRef us jon ) Ġ{ ĊĠĠĠĠĠĠĠ Ġref us jon er . leg g Til Ref us jon ( ref us jon ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġaccept ( visitor : ĠRef us jon sh istor ikk Visitor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvisitor . pre Visit Ref us jon sh istor ikk ( this ) ĊĠĠĠĠĠĠĠ Ġref us jon er . forEach Ġ{ Ġit . accept ( visitor ) Ġ} ĊĠĠĠĠĠĠĠ Ġvisitor . post Visit Ref us jon sh istor ikk ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġfin n Ref us jon ( peri ode : ĠPer i ode , Ġaktiv it ets log g : ĠIA ktiv it ets log g ): ĠRef us jon ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġref us jon er . som Tre ffer F Ã¸ r ste Fr av Ã¦ r sd ag ( peri ode , Ġaktiv it ets log g ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġref us jon er . som Til st Ã¸ ter Ar be id sg iver peri ode ( peri ode , Ġaktiv it ets log g ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġref us jon er . som Overlap per Med Ar be id sg iver peri ode ( peri ode , Ġaktiv it ets log g ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġclass ĠRef us jon ( ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġme ld ings refer an se Id : ĠUUID , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġf Ã¸ r ste Fr av Ã¦ r sd ag : ĠLocalDate ?, ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġar be id sg iver period er : ĠList < Per i ode >, ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbel Ã¸ p : ĠIn n te kt ?, ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsist e Ref us j ons dag : ĠLocalDate ?, ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġend ring er I Ref us jon : ĠList < End ring I Ref us jon >, ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġt ids st emp el : ĠLocalDateTime Ġ= ĠLocalDateTime . now () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠMutable List < Ref us jon >. leg g Til Ref us jon ( ref us jon : ĠRef us jon ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ref us jon . meld ings refer an se Id Ġ! in Ġmap Ġ{ Ġit . meld ings refer an se Id Ġ}) Ġadd ( ref us jon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġfun ĠRef us jon . ut le det F Ã¸ r ste Fr av Ã¦ r sd ag () Ġ= Ġf Ã¸ r ste Fr av Ã¦ r sd ag Ġ?: Ġar be id sg iver period er . max Of Ġ{ Ġit . start Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠRef us jon . f Ã¸ r ste Dag I Ar be id sg iver period en () Ġ= Ġar be id sg iver period er . min Of OrNull Ġ{ Ġit . start Ġ} Ġ?: Ġf Ã¸ r ste Fr av Ã¦ r sd ag !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġfun ĠIterable < Ref us jon >. ny este Med Fr av Ã¦ r F Ã¸ r U tb et aling ( f Ã¸ r ste U tb et al ings dag : ĠLocalDate ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Ġ{ Ġit . ut le det F Ã¸ r ste Fr av Ã¦ r sd ag () Ġ< Ġf Ã¸ r ste U tb et al ings dag Ġ}. max By OrNull Ġ{ Ġit . t ids st emp el Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠIterable < Ref us jon >. som Overlap per Med Ar be id sg iver peri ode ( peri ode : ĠPer i ode , Ġaktiv it ets log g : ĠIA ktiv it ets log g ): ĠRef us jon ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġut vide t Per i ode Ġ= Ġper i ode . start . minus Days ( 1 6 ) Ġtil Ġper i ode . end Inclusive ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter Ġ{ Ġref us jon Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġref us jon . ar be id sg iver period er . any Ġ{ Ġit . overlap per Med ( ut vide t Per i ode ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. ny este Med Fr av Ã¦ r F Ã¸ r U tb et aling ( peri ode . start ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . also Ġ{ Ġaktiv it ets log g . info (" F ant Ġref us jon Ġved ĠÃ¥ Ġg Ã¥ Ġ 1 6 Ġd ager Ġtil b ake Ġf ra Ġf Ã¸ r ste Ġut bet al ings dag Ġi Ġsam men h eng ende Ġut bet aling ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠIterable < Ref us jon >. som Tre ffer F Ã¸ r ste Fr av Ã¦ r sd ag ( peri ode : ĠPer i ode , Ġaktiv it ets log g : ĠIA ktiv it ets log g ) Ġ= Ġfilter Ġ{ Ġref us jon Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġref us jon . ut le det F Ã¸ r ste Fr av Ã¦ r sd ag () Ġin Ġper i ode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. max By OrNull Ġ{ Ġit . t ids st emp el Ġ} ?. also Ġ{ Ġaktiv it ets log g . info (" F ant Ġref us jon Ġved ĠÃ¥ Ġs jek ke Ġom Ġf Ã¸ r ste Ġfr av Ã¦ r sd ag Ġer Ġi Ġsam men h eng ende Ġut bet aling ") Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠIterable < Ref us jon >. som Til st Ã¸ ter Ar be id sg iver peri ode ( peri ode : ĠPer i ode , Ġaktiv it ets log g : ĠIA ktiv it ets log g ) Ġ= Ġfilter Ġ{ Ġref us jon Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġref us jon . ar be id sg iver period er . max By OrNull Ġ{ Ġit . end Inclusive Ġ} ?. er Ret t F Ã¸ r ( peri ode ) Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. ny este Med Fr av Ã¦ r F Ã¸ r U tb et aling ( peri ode . start ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . also Ġ{ Ġaktiv it ets log g . info (" F ant Ġref us jon Ġved ĠÃ¥ Ġfin ne Ġtil st Ã¸ tende Ġar be id sg iver peri ode Ġfor Ġf Ã¸ r ste Ġut bet al ings dag Ġi Ġsam men h eng ende Ġut bet aling ") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġer F Ã¸ r F Ã¸ r ste Dag I Ar be id sg iver period en ( dag : ĠLocalDate ) Ġ= Ġdag Ġ< Ġf Ã¸ r ste Dag I Ar be id sg iver period en () ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġbel Ã¸ p ( dag : ĠLocalDate ): ĠIn n te kt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s iste Ref us j ons dag Ġ!= Ġnull Ġ&& Ġdag Ġ> Ġsist e Ref us j ons dag ) Ġreturn ĠIn n te kt . ING EN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġend ring er I Ref us jon . bel Ã¸ p ( dag ) Ġ?: Ġbel Ã¸ p Ġ?: ĠIn n te kt . ING EN ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġaccept ( visitor : ĠRef us jon sh istor ikk Visitor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisitor . pre Visit Ref us jon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġme ld ings refer an se Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf Ã¸ r ste Fr av Ã¦ r sd ag , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġar be id sg iver period er , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbel Ã¸ p , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsist e Ref us j ons dag , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend ring er I Ref us jon , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ids st emp el ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend ring er I Ref us jon . forEach Ġ{ Ġit . accept ( visitor ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisitor . post Visit Ref us jon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġme ld ings refer an se Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf Ã¸ r ste Fr av Ã¦ r sd ag , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġar be id sg iver period er , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbel Ã¸ p , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsist e Ref us j ons dag , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend ring er I Ref us jon , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ids st emp el ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinternal Ġclass ĠEnd ring I Ref us jon ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġbel Ã¸ p : ĠIn n te kt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġend r ings dat o : ĠLocalDate ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun ĠList < End ring I Ref us jon >. bel Ã¸ p ( dag : ĠLocalDate ) Ġ= Ġsorted By Ġ{ Ġit . end r ings dat o Ġ}. last OrNull Ġ{ Ġdag Ġ>= Ġit . end r ings dat o Ġ} ?. bel Ã¸ p ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġfun Ġaccept ( visitor : ĠRef us jon sh istor ikk Visitor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisitor . visit End ring I Ref us jon ( bel Ã¸ p , Ġend r ings dat o ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ