package Ġno . nav . sy fo . ar be id sg iv ere . service Ċ Ċ import Ġio . ktor . util . K tor Experimental API Ċ import Ġno . nav . sy fo . ar be id sg iv ere . client . ar be ids for hold . client . Ar be ids for hold Client Ċ import Ġno . nav . sy fo . ar be id sg iv ere . client . ar be ids for hold . model . Ar be ids av ta le Ċ import Ġno . nav . sy fo . ar be id sg iv ere . client . ar be ids for hold . model . Ar be ids for hold Ċ import Ġno . nav . sy fo . ar be id sg iv ere . client . nar me ste le der . N ar me ste le der Client Ċ import Ġno . nav . sy fo . ar be id sg iv ere . client . organ is as jon . client . Organ is as j ons info Client Ċ import Ġno . nav . sy fo . ar be id sg iv ere . client . organ is as jon . model . Nav n Ċ import Ġno . nav . sy fo . ar be id sg iv ere . client . organ is as jon . model . Organ is as j ons info Ċ import Ġno . nav . sy fo . ar be id sg iv ere . model . Ar be id sg iver info Ċ import Ġno . nav . sy fo . ar be id sg iv ere . model . N ar me ste L eder Ċ import Ġno . nav . sy fo . ar be id sg iv ere . redis . Ar be id sg iver Redis Service Ċ import Ġno . nav . sy fo . ar be id sg iv ere . redis . to Ar be id sg iver info Ċ import Ġno . nav . sy fo . ar be id sg iv ere . redis . to Ar be id sg iver info Redis Model Ċ import Ġno . nav . sy fo . client . St s Oid c Client Ċ import Ġno . nav . sy fo . log Ċ import Ġno . nav . sy fo . p dl . service . P dl Person Service Ċ import Ġjava . time . LocalDate Ċ Ċ @ K tor Experimental API Ċ class ĠAr be id sg iver Service ( ĊĠĠĠ Ġprivate Ġval Ġar be ids for hold Client : ĠAr be ids for hold Client , ĊĠĠĠ Ġprivate Ġval Ġorgan is as j ons info Client : ĠOrgan is as j ons info Client , ĊĠĠĠ Ġprivate Ġval Ġn ar me ste le der Client : ĠN ar me ste le der Client , ĊĠĠĠ Ġprivate Ġval Ġp dl Person Service : ĠP dl Person Service , ĊĠĠĠ Ġprivate Ġval Ġst s Oid c Client : ĠSt s Oid c Client , ĊĠĠĠ Ġprivate Ġval Ġar be id sg iver Redis Service : ĠAr be id sg iver Redis Service Ċ ) Ġ{ ĊĠĠĠ Ġsuspend Ġfun Ġget Ar be id sg iv ere ( fn r : ĠString , Ġtoken : ĠString , Ġsy k meld ing Id : ĠString , Ġdate : ĠLocalDate Ġ= ĠLocalDate . now ()): ĠList < Ar be id sg iver info > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġar be id sg iv ere F ra Redis Ġ= Ġget Ar be id sg iv ere From Redis ( fn r ) ĊĠĠĠĠĠĠĠ Ġif Ġ( ar be id sg iv ere F ra Redis Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . debug (" F ant Ġar be id sg iv ere Ġi Ġredis ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġar be id sg iv ere F ra Redis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġst s Token Ġ= Ġst s Oid c Client . oidc Token () ĊĠĠĠĠĠĠĠ Ġval Ġperson Ġ= Ġp dl Person Service . get Person ( fn r Ġ= Ġfn r , Ġuser Token Ġ= Ġtoken , Ġcall Id Ġ= Ġsy k meld ing Id , Ġst s Token Ġ= Ġst s Token . access _ token ) ĊĠĠĠĠĠĠĠ Ġif Ġ( person . disk res jon sk ode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġempty List () Ġ// Ġperson er Ġmed Ġdisk res jon sk ode Ġskal Ġik ke Ġf Ã¥ Ġh ent et Ġar be ids for hold ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġan set t else sp eri ode F om Ġ= ĠLocalDate . now (). minus Months ( 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġar be id sg iv ere Ġ= Ġar be ids for hold Client . get Ar be ids for hold ( fn r Ġ= Ġfn r , Ġan set t else sp eri ode F om Ġ= Ġan set t else sp eri ode F om , Ġtoken Ġ= Ġtoken , Ġst s Token Ġ= Ġst s Token . access _ token ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( ar be id sg iv ere . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġakt ive N ar me ste le dere Ġ= Ġn ar me ste le der Client . getN ar me ste le dere ( token ). filter Ġ{ Ġit . aktiv Tom Ġ== Ġnull Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġar be id sg iver List Ġ= ĠArrayList < Ar be id sg iver info >() ĊĠĠĠĠĠĠĠ Ġar be id sg iv ere . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . ar be id sg iver . type Ġ== Ġ" Organ is as jon " ĊĠĠĠĠĠĠĠ Ġ}. sorted With ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompare By Descending ( null s Last ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . an set t else sp eri ode . peri ode . tom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ). distinct By Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . ar be id sg iver . organ is as j ons nummer ĊĠĠĠĠĠĠĠ Ġ}. forEach Ġ{ Ġar be ids for hold Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġorgan is as j ons info Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorgan is as j ons info Client . get Org info ( ar be ids for hold . ar be id sg iver . organ is as j ons nummer !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn ar me ste L eder Ġ= Ġakt ive N ar me ste le dere . find Ġ{ Ġit . org nummer Ġ== Ġar be ids for hold . ar be id sg iver . organ is as j ons nummer Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġar be ids av ta le Ġ= Ġif Ġ( ar be ids for hold . ar be ids av t aler . size Ġ< Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġar be ids for hold . ar be ids av t aler . first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġar be ids for hold . ar be ids av t aler . filter Ġ{ Ġit . gy ld ig het sp eri ode . f om Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. max By OrNull Ġ{ Ġit . gy ld ig het sp eri ode . f om !! Ġ} Ġ?: Ġar be ids for hold . ar be ids av t aler . first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Ar be ids info ( ar be id sg iver List , Ġorgan is as j ons info , Ġar be ids av ta le , Ġar be ids for hold , Ġn ar me ste L eder , Ġdate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġar be id sg iver Redis Service . update Ar be id sg iv ere ( ar be id sg iver List . map Ġ{ Ġit . to Ar be id sg iver info Redis Model () Ġ}, Ġfn r ) ĊĠĠĠĠĠĠĠ Ġreturn Ġar be id sg iver List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Ar be ids info ( ĊĠĠĠĠĠĠĠ Ġar be id sg iver List : ĠArrayList < Ar be id sg iver info >, ĊĠĠĠĠĠĠĠ Ġorgan is as j ons info : ĠOrgan is as j ons info , ĊĠĠĠĠĠĠĠ Ġar be ids av ta le : ĠAr be ids av ta le ?, ĊĠĠĠĠĠĠĠ Ġar be ids for hold : ĠAr be ids for hold , ĊĠĠĠĠĠĠĠ Ġn ar me ste L eder Rel as jon : Ġno . nav . sy fo . ar be id sg iv ere . client . nar me ste le der . N ar me ste L eder ?, ĊĠĠĠĠĠĠĠ Ġdate : ĠLocalDate ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġorg nav n Ġ= ĠgetName ( organ is as j ons info . nav n ) ĊĠĠĠĠĠĠĠ Ġar be id sg iver List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAr be id sg iver info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorg nummer Ġ= Ġorgan is as j ons info . organ is as j ons nummer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj ur id isk Org nummer Ġ= Ġar be ids for hold . op pl ys ning sp li kt ig . organ is as j ons nummer !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav n Ġ= Ġorg nav n , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstill ing Ġ= Ġ"", Ġ// Ġden ne Ġbru kes Ġik ke , Ġmen Ġer ĠpÃ¥ k rev d Ġi Ġform ate t ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstill ing sp ros ent Ġ= Ġar be ids av ta le ?. st illing sp ros ent ?. toString () Ġ?: Ġ" 1 0 0 . 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaktiv t Ar be ids for hold Ġ= Ġar be ids for hold . an set t else sp eri ode . peri ode . tom Ġ== Ġnull Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! date . is After ( ar be ids for hold . an set t else sp eri ode . peri ode . tom ) Ġ&& Ġ! date . is Before ( ar be ids for hold . an set t else sp eri ode . peri ode . f om ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġna er me ste L eder Ġ= Ġn ar me ste L eder Rel as jon ?. til N ar me ste L eder ( org nav n ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetName ( nav n : ĠNav n ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġif Ġ(! nav n . nav nel in je 1 . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append Line ( nav n . nav nel in je 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! nav n . nav nel in je 2 . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append Line ( nav n . nav nel in je 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! nav n . nav nel in je 3 . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append Line ( nav n . nav nel in je 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! nav n . nav nel in je 4 . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append Line ( nav n . nav nel in je 4 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! nav n . nav nel in je 5 . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append Line ( nav n . nav nel in je 5 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . line Sequence (). filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . isNotBlank () ĊĠĠĠĠĠĠĠ Ġ}. join ToString ( separator Ġ= Ġ", ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġno . nav . sy fo . ar be id sg iv ere . client . nar me ste le der . N ar me ste L eder . til N ar me ste L eder ( org nav n : ĠString ): ĠN ar me ste L eder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠN ar me ste L eder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġak to er Id Ġ= Ġ"", Ġ// Ġbru kes Ġik ke Ġi Ġfrontend ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav n Ġ= Ġnav n Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe post Ġ= Ġn ar me ste L eder E post , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmob il Ġ= Ġn ar me ste L eder Tele fon nummer , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorg nummer Ġ= Ġorg nummer , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorgan is as j ons nav n Ġ= Ġorg nav n , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaktiv Tom Ġ= Ġaktiv Tom , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġar be id sg iver For sk utter er Lo enn Ġ= Ġar be id sg iver For sk utter er ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Ar be id sg iv ere From Redis ( fn r : ĠString ): ĠList < Ar be id sg iver info >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġar be id sg iver Redis Service . get Ar be id sg iv ere ( fn r )?. map Ġ{ Ġit . to Ar be id sg iver info () Ġ} ĊĠĠĠ Ġ} Ċ } Ċ