package Ġno . nav . t ms . ut bet aling so vers ik t . api . yt else Ċ Ċ import Ġio . ktor . client .* Ċ import Ġno . nav . t ms . token . support . id port en . side car . user . Id port en User Ċ import Ġno . nav . t ms . ut bet aling so vers ik t . api . config . Tok end ings Token Fetcher Ċ import Ġno . nav . t ms . ut bet aling so vers ik t . api . config . post Ċ import Ġno . nav . t ms . ut bet aling so vers ik t . api . yt else . domain . external .* Ċ import Ġjava . net . URL Ċ import Ġjava . time . LocalDate Ċ Ċ class ĠS ok os U tb et aling Consumer ( ĊĠĠĠ Ġprivate Ġval Ġclient : ĠHttpClient , ĊĠĠĠ Ġprivate Ġval Ġtok end ings Token Fetcher : ĠTok end ings Token Fetcher , ĊĠĠĠ ĠbaseUrl : ĠURL , Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġut bet al ings inform as jon Intern Url Ġ= ĠURL ("$ baseUrl / ut bet al data / api / v 1 / h ent - ut bet al ings inform as jon / ek st ern ") ĊĊĠĠĠ Ġsuspend Ġfun Ġfetch U tb et al ings Info ( user : ĠId port en User , Ġf om : ĠLocalDate , Ġtom : ĠLocalDate , Ġrol le : ĠRol le Ek st ern ): ĠList < U tb et aling Ek st ern > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtarget Token Ġ= Ġtok end ings Token Fetcher . getS ok os U tb et al data Token ( user . token String ) ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Body Ġ= Ġcreate Request ( user . ident , Ġf om , Ġtom , Ġrol le ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġclient . post ( ut bet al ings inform as jon Intern Url , Ġrequest Body , Ġtarget Token ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Request ( fn r : ĠString , Ġf om : ĠLocalDate , Ġtom : ĠLocalDate , Ġrol le : ĠRol le Ek st ern ): ĠU tb et al ings op ps lag Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġper i ode Ġ= ĠPer i ode Ek st ern ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf om Ġ= Ġf om . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtom Ġ= Ġtom . plus Days ( 1 ). toString () Ġ// ĠComp ens ate Ġfor Ġexternal Ġservice Ġbeing Ġend - exclusive . ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠU tb et al ings op ps lag ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġident Ġ= Ġfn r , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrol le Ġ= Ġrol le , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġper i ode Ġ= Ġper i ode , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġper i ode type Ġ= ĠPer i ode type Ek st ern . UT B ET AL ING SP ER IO DE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ