package Ġno . nav . k 9 . t jen ester . in ns ik t Ċ Ċ import Ġio . ktor . application . call Ċ import Ġio . ktor . html . respond Html Ċ import Ġio . ktor . locations . Location Ċ import Ġio . ktor . locations . get Ċ import Ġio . ktor . routing . Route Ċ import Ġio . ktor . routing . get Ċ import Ġio . ktor . routing . route Ċ import Ġkotlinx . html . BODY Ċ import Ġkotlinx . html . HTML Ċ import Ġkotlinx . html . UL Ċ import Ġkotlinx . html . body Ċ import Ġkotlinx . html . classes Ċ import Ġkotlinx . html . div Ċ import Ġkotlinx . html . h 1 Ċ import Ġkotlinx . html . h 2 Ċ import Ġkotlinx . html . head Ċ import Ġkotlinx . html . li Ċ import Ġkotlinx . html . p Ċ import Ġkotlinx . html . script Ċ import Ġkotlinx . html . style Link Ċ import Ġkotlinx . html . title Ċ import Ġkotlinx . html . ul Ċ import Ġno . nav . k 9 . dom ene . l ager . op pg ave . Opp g ave Med Id Ċ import Ġno . nav . k 9 . dom ene . l ager . op pg ave . v 2 . Opp g ave Repository V 2 Ċ import Ġno . nav . k 9 . dom ene . mode ll . Be handling Status Ċ import Ġno . nav . k 9 . dom ene . mode ll . F ags ystem Ċ import Ġno . nav . k 9 . dom ene . mode ll . Opp g ave K Ã¸ Ċ import Ġno . nav . k 9 . dom ene . repository . Be handling Pro sess Event K 9 Repository Ċ import Ġno . nav . k 9 . dom ene . repository . Be handling Pro sess Event Til b ake Repository Ċ import Ġno . nav . k 9 . dom ene . repository . Opp g ave K Ã¸ Repository Ċ import Ġno . nav . k 9 . dom ene . repository . Opp g ave Repository Ċ import Ġno . nav . k 9 . dom ene . repository . P uns j Event K 9 Repository Ċ import Ġno . nav . k 9 . dom ene . repository . S aks be handler Repository Ċ import Ġno . nav . k 9 . dom ene . repository . Stat ist ikk Repository Ċ import Ġno . nav . k 9 . t jen ester . av del ings le der . nok k elt all . En heter S om Sk al U tel ates F ra Los Ċ import Ġorg . k oin . ktor . ext . inject Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . util .* Ċ Ċ fun ĠRoute . in ns ik t G ren ses n itt () Ġ{ ĊĠĠĠ Ġval Ġopp g ave Repository Ġby Ġinject < Opp g ave Repository >() ĊĠĠĠ Ġval Ġopp g ave Repository V 2 Ġby Ġinject < Opp g ave Repository V 2 >() ĊĠĠĠ Ġval Ġstat ist ikk Repository Ġby Ġinject < Stat ist ikk Repository >() ĊĠĠĠ Ġval Ġopp g ave K Ã¸ Repository Ġby Ġinject < Opp g ave K Ã¸ Repository >() ĊĠĠĠ Ġval Ġs aks be handler Repository Ġby Ġinject < S aks be handler Repository >() ĊĠĠĠ Ġval Ġbe handling Pro sess Event K 9 Repository Ġby Ġinject < Be handling Pro sess Event K 9 Repository >() ĊĠĠĠ Ġval Ġbe handling Pro sess Event Til b ake Repository Ġby Ġinject < Be handling Pro sess Event Til b ake Repository >() ĊĠĠĠ Ġval Ġp uns j Event K 9 Repository Ġby Ġinject < P uns j Event K 9 Repository >() ĊĊĠĠĠ Ġval ĠLOGGER Ġ= ĠLoggerFactory . getLogger ( Stat ist ikk Repository :: class . java ) ĊĊĠĠĠ Ġclass Ġmain ĊĠĠĠ Ġget Ġ{ Ġ_: Ġmain Ġ-> ĊĠĠĠĠĠĠĠ Ġcall . respond Html Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ{ Ġ+" In ns ik t Ġi Ġk 9 - los " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Link ("/ static / bootstrap . css ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript ( src Ġ= Ġ"/ static / script . js ") Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses Ġ= Ġset Of (" container Ġ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh 1 Ġ{ Ġ+" In ns ik t Ġi Ġk 9 - los " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Ant all ĠÃ¥ p ne Ġopp ga ver Ġfor delt ĠpÃ¥ Ġa ks jon sp unkt ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġav sl ut te de Ġ= Ġopp g ave Repository . h ent Med Be hand lings status ( Be handling Status . AV SL UT TET ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġin akt ive Ik ke Av sl ut te de Opp ga ver Ġ= Ġopp g ave Repository . h ent In akt ive Ik ke Av l utt et () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ ĠAV SL UT TET (" AV SL U ", Ġ" Av sl utt et "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠF ATTER _ VED TA K (" F VED ", Ġ" F atter Ġved tak "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠI VER K SET TER _ VED TA K (" IVED ", Ġ" I ver k setter Ġved tak "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOP PRE TT ET (" OP PRE ", Ġ" Opp rett et "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUT RE DES (" UT RED ", Ġ" U tre des "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf atter V ed tak Av sl utt et Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopp g ave Repository . h ent In akt ive Ik ke Av l utt et Med Be handling Status ( Be handling Status . F ATTER _ VED TA K ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ iver k setter V ed tak Av sl utt et Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopp g ave Repository . h ent In akt ive Ik ke Av l utt et Med Be handling Status ( Be handling Status . IVER K SET TER _ VED TA K ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġopp rett et Av sl utt et Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopp g ave Repository . h ent In akt ive Ik ke Av l utt et Med Be handling Status ( Be handling Status . OP PRE TT ET ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġut re des Av sl utt et Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopp g ave Repository . h ent In akt ive Ik ke Av l utt et Med Be handling Status ( Be handling Status . UT RE DES ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġautomatis k Pro sess erte Total t Ġ= Ġopp g ave Repository . h ent Autom atis k Pro sess erte Total t () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa ks jon sp unk ter Ġ= Ġopp g ave Repository . h ent A kt ive Opp ga vers A ks jon sp unkt liste () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġopp ga ver Total t A kt ive Ġ= Ġopp g ave Repository . h ent A kt ive Opp ga ver Total t Ik ke Sk jer me de () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Det Ġer Ġn Ã¥ Ġ${ aks jon sp unk ter . sum Of Ġ{ Ġit . ant all Ġ}} ĠÃ¥ p ne Ġa ks jon sp unk ter Ġfor delt ĠpÃ¥ Ġ$ op pg aver Total t A kt ive Ġopp ga ver , Ġ$ in akt ive Ik ke Av sl ut te de Opp ga ver Ġin akt ive Ġmed Ġan nen Ġstatus Ġen n Ġav sl utt et Ġ( f atter Ġved tak Ġ${ f atter V ed tak Av sl utt et }, Ġ iver k setter Ġved tak Ġ${ iver k setter V ed tak Av sl utt et }, Ġopp rett et Ġ${ op prett et Av sl utt et }, Ġut re des Ġ${ ut re des Av sl utt et }) Ġog Ġ$ av sl ut te de Ġmed Ġstatus Ġav sl utt et , Ġ$ autom atis k Pro sess erte Total t Ġer Ġpro se ssert Ġautomatis k " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Total t Ġ${ op pg aver Total t A kt ive Ġ+ Ġin akt ive Ik ke Av sl ut te de Opp ga ver Ġ+ Ġav sl ut te de }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( aks jon sp unkt Ġin Ġa ks jon sp unk ter . stream (). sorted Ġ{ Ġo 1 , Ġo 2 Ġ-> Ġo 2 . ant all . compareTo ( o 1 . ant all ) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( aks jon sp unkt . ant all Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses Ġ= Ġset Of (" input - group - text Ġdisplay - 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" ${ aks jon sp unkt . ant all } Ġk ode : Ġ${ aks jon sp unkt . kode } Ġ${ aks jon sp unkt . nav n } ĠTo tr inn : Ġ${ aks jon sp unkt . to tr inn }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠIn ns ik t Event ( val Ġap Map : ĠMap < String , ĠString >, Ġval Ġevent Tid : ĠLocalDateTime ) ĊĊĠĠĠ Ġfun Ġh ent Event er ( op pg ave Med Id 1 : ĠO pp g ave Med Id ): ĠList < In ns ik t Event > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen ( op pg ave Med Id 1 . op pg ave . system ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF ags ystem . PUN SJ . kode Ġ-> Ġp uns j Event K 9 Repository . h ent ( op pg ave Med Id 1 . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. event er . map Ġ{ ĠIn ns ik t Event ( it . aks jon sp unkt K oder Med Status List e , Ġit . event Tid ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF ags ystem . K 9 T IL BA KE . kode , ĠF ags ystem . F PT IL BA KE . kode Ġ-> Ġbe handling Pro sess Event Til b ake Repository . h ent ( op pg ave Med Id 1 . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. event er . map Ġ{ ĠIn ns ik t Event ( it . aks jon sp unkt K oder Med Status List e , Ġit . event Tid ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġbe handling Pro sess Event K 9 Repository . h ent ( op pg ave Med Id 1 . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. event er . map Ġ{ ĠIn ns ik t Event ( it . aks jon sp unkt K oder Med Status List e , Ġit . event Tid ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun ĠB ODY . op pg ave Se ks jon ( s aks nummer : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġopp g ave Med Id Ġ= Ġopp g ave Repository . h ent Opp ga ver S om Matcher S aks nummer ( s aks nummer ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( op pg ave Med Id . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsorted By Descending Ġ= Ġopp g ave Med Id . sorted By Descending Ġ{ Ġit . op pg ave . event Tid Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsorted By Descending . forEach Ġ{ Ġopp g ave Med Id 1 Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġopp g ave Ġ= Ġopp g ave Med Id 1 . op pg ave ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses Ġ= Ġset Of (" input - group - text Ġdisplay - 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" aktiv =${ op pg ave . aktiv } ĠT il B es l utter =${ op pg ave . til B es l utter }, Ġs aks nummer =$ s aks nummer , Ġf ags ystem =${ op pg ave . system }, Ġbe handling Type =${ op pg ave . be handling Type . nav n }, Ġbe handling Status =${ op pg ave . be handling Status . nav n }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs ak Mode ll Ġ= Ġh ent Event er ( op pg ave Med Id 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ak Mode ll . forEach Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstringBuilder Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . ap Map . map Ġ{ Ġ" kode =${ it . key }, Ġver di =${ it . value } Ġ" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĠstringBuilder . append ( it ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses Ġ= Ġset Of (" input - group - text Ġdisplay - 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" B Id =${ op pg ave . ek st ern Id } ĠEvent Tid =${ event . event Tid }, ĠA ks jon sp unk ter =$ string Builder " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġget ("/ sak ") Ġ{ ĊĠĠĠĠĠĠĠ Ġcall . respond Html Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs aks nummer Ġ= Ġcall . request . query Parameters [" s aks nummer "] ?. split (",") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ{ Ġ+ ( s aks nummer ?. let Ġ{" In ns ik t Ġfor Ġs aks nummer =$ s aks nummer "} ?: Ġ" Opp gi Ġs aks nummer ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Link ("/ static / bootstrap . css ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript ( src Ġ= Ġ"/ static / script . js ") Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s aks nummer . isNull OrEmpty ()) Ġdiv Ġ{ +" Opp gi Ġs aks nummer "} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh 2 Ġ{ Ġ+ s aks nummer . let Ġ{" In ns ik t Ġfor Ġs aks nummer =$ s aks nummer "} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs aks nummer . map Ġ{ Ġopp g ave Se ks jon ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠB ODY . op pg ave k Ã¸ ( k Ã¸ id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk Ã¸ Ġ= Ġopp g ave K Ã¸ Repository . h ent Opp g ave k Ã¸ ( UUID . fromString ( k Ã¸ id )) ĊĠĠĠĠĠĠĠ Ġif Ġ( k Ã¸ . sk jer met Ġ|| Ġk Ã¸ . kode 6 ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġopp ga ver Ġ= Ġopp g ave Repository . h ent Opp ga ver ( k Ã¸ . op pg aver Og D ato er . map Ġ{ Ġit . id Ġ}). sorted By Ġ{ Ġit . event Tid Ġ} ĊĠĠĠĠĠĠĠ Ġdiv Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclasses Ġ= Ġset Of (" input - group - text Ġdisplay - 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ+" k Ã¸ nav n =${ k Ã¸ . nav n } Ġant all Opp ga ver K Ã¸ T abel l =${ k Ã¸ . op pg aver Og D ato er . size } Ġant all Opp ga ver =${ op pg aver . size } Ġ${ k Ã¸ . sort ering . kode }" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġopp ga ver . forEach Ġ{ Ġopp g ave Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiv Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses Ġ= Ġset Of (" input - group - text Ġdisplay - 4 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" s iste Event =${ op pg ave . event Tid } Ġopp rett et =${ op pg ave . be handling Opp rett et } ĠB Id =${ op pg ave . ek st ern Id } Ġs aks nummer =${ op pg ave . f ags ak S aks nummer }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġget (" op pg ave ko ") Ġ{ ĊĠĠĠĠĠĠĠ Ġcall . respond Html Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk Ã¸ id Ġ= Ġcall . request . query Parameters [" id "] ?. split (",") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ{ Ġ+ ( k Ã¸ id ?. let Ġ{" In ns ik t Ġfor Ġk Ã¸ id =$ k Ã¸ id "} ?: Ġ" Opp gi Ġk Ã¸ id ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Link ("/ static / bootstrap . css ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript ( src Ġ= Ġ"/ static / script . js ") Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( k Ã¸ id . isNull OrEmpty ()) Ġdiv Ġ{ +" Opp gi Ġk Ã¸ id "} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh 2 Ġ{ Ġ+ k Ã¸ id . let Ġ{" In ns ik t Ġfor Ġk Ã¸ id =$ k Ã¸ id "} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk Ã¸ id . map Ġ{ Ġopp g ave k Ã¸ ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġk Ã¸ er Ġ= ĠlistOf < Opp g ave K Ã¸ >() ĊĊĠĠĠ Ġ@ Location ("/ db ") ĊĠĠĠ Ġclass Ġdb ĊĠĠĠ Ġget Ġ{ Ġ_: Ġdb Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( k Ã¸ er . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalle Reser vas jon er Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs aks be handler Repository . h ent Alle S aks be hand l ere Ik ke Ta H ens yn (). flatMap Ġ{ Ġit . re serv as jon er Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh ent A kt ive Opp ga ver Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopp g ave Repository . h ent A kt ive Opp ga ver (). filter Not Ġ{ Ġalle Reser vas jon er . contains ( it . ek st ern Id ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġopp g ave K Ã¸ er Ġ= Ġopp g ave K Ã¸ Repository . h ent Ik ke Ta H ens yn () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( op pg ave K Ã¸ Ġin Ġopp g ave K Ã¸ er . filter Not Ġ{ Ġit . kode 6 Ġ|| Ġit . sk jer met Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopp g ave K Ã¸ . op pg aver Og D ato er . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( op pg ave Ġin Ġh ent A kt ive Opp ga ver ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopp g ave K Ã¸ . leg g Opp g ave Til E ller Fj ern F ra K Ã¸ ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopp g ave , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmer kn ader Ġ= Ġopp g ave Repository V 2 . h ent Mer kn ader ( op pg ave . ek st ern Id . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk Ã¸ er Ġ= Ġopp g ave K Ã¸ er ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Html Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Html Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhead Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ{ Ġ+" In ns ik t Ġi Ġk 9 - los " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Link ("/ static / bootstrap . css ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscript ( src Ġ= Ġ"/ static / script . js ") Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopp g ave K Ã¸ Repository . h ent Ik ke Ta H ens yn (). filter Not Ġ{ Ġit . kode 6 Ġ|| Ġit . sk jer met Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġul Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( l Ġin Ġlist ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġopp ga ver Og D ato er Ġ= Ġk Ã¸ er . first Ġ{ Ġit . nav n Ġ== Ġl . nav n Ġ}. op pg aver Og D ato er ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġopp ga ver Og D ato er . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopp ga ver Og D ato er . removeAll ( l . op pg aver Og D ato er ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġli Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" ${ l . nav n }: Ġ${ l . op pg aver Og D ato er . size } Ġvs Ġ$ size Ġ- Ġid =${ l . id }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġul Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( mutable Entry Ġin ĠDatabase k all . map . entries . toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Descending Ġ{ Ġmutable Entry Ġ-> Ġmutable Entry . value . sum () Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġli Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" ${ mutable Entry . key }: Ġ${ mutable Entry . value } Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk Ã¸ er Ġ= Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġroute ("/ op pg aver ") Ġ{ ĊĠĠĠĠĠĠĠ Ġget Ġ(" / fer dig st ilt /{ be hand len de En het }") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbe hand len de En het Ġ= Ġcall . parameters [" be hand len de En het "] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfer dig st il te Opp ga ver Ġ= Ġstat ist ikk Repository . h ent F er dig st ilt Opp g ave h istor ikk ( 5 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĠEn heter S om Sk al U tel ates F ra Los . s je kk K an B ru kes ( it . be hand len de En het ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . be hand len de En het Ġ== Ġbe hand len de En het Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Html Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin ns ik t Header (" F er dig st il te Ġopp ga ver ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġul Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses Ġ= Ġset Of (" list - group ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfer dig st il te Opp ga ver . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist ee lement ("${ it . dat o }, Ġ${ it . f ags ystem Type }, Ġ${ it . f ags ak Yt else Type }, Ġ${ it . be handling Type }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . info ("${ it . dat o }: Ġ${ it . f ags ystem Type }, Ġ${ it . f ags ak Yt else Type }, Ġ${ it . be handling Type }, Ġ${ it . s aks be handler }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġget Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġek st ern Id Ġ= Ġcall . request . query Parameters [" ek st ern id "] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbe handling Ġ= Ġopp g ave Repository V 2 . h ent Be handling ( ek st ern Id !! ) !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Html Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin ns ik t Header (" Alle Ġopp ga ver Ġfor Ġ$ ek st ern Id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses Ġ= Ġset Of (" j umbotron ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh 1 Ġ{ Ġ+" Opp g ave be handling " Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġul Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses Ġ= Ġset Of (" list - group ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist ee lement (" F ags ystem : Ġ${ be handling . f ags ystem } Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist ee lement (" yt else : Ġ${ be handling . yt else Type } Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist ee lement (" be handling Type : Ġ${ be handling . be handling Type } Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist ee lement (" fer dig st ilt : Ġ${ be handling . fer dig st ilt } Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist ee lement (" A kt ive Ġopp ga ver Ġ${ be handling . akt ive Opp ga ver (). size } Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist ee lement (" F er dig st il te Ġopp ga ver : Ġ${ be handling . fer dig st il te Opp ga ver (). size } Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh 2 Ġ{ Ġ+" Opp ga ver " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġul Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses Ġ= Ġset Of (" list - group ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe handling . op pg aver (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist ee lement ("${ it . op prett et }, Ġk ode : Ġ${ it . op pg ave K ode }, Ġstatus : Ġ${ it . op pg ave Status }, Ġer B es l utter : Ġ${ it . er B es l utter } Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠHTML . in ns ik t Header ( tit tel : ĠString ) Ġ= Ġhead Ġ{ ĊĠĠĠ Ġtitle Ġ{ Ġ+ ( tit tel ) Ġ} ĊĠĠĠ Ġstyle Link ("/ static / bootstrap . css ") ĊĠĠĠ Ġscript ( src Ġ= Ġ"/ static / script . js ") Ġ{} Ċ } ĊĊ Ċ fun ĠU L . list ee lement ( inn hold : ĠString ) Ġ= Ġli Ġ{ ĊĠĠĠ Ġclasses Ġ= Ġset Of (" list - group - item ") ĊĠĠĠ Ġ+ inn hold Ċ } Ċ