package Ġpet rov . iv an . gb 6 5 apps . utils Ċ Ċ import Ġpet rov . iv an . gb 6 5 apps . data . Employee Ċ import Ġpet rov . iv an . gb 6 5 apps . data . Special ity Ċ import Ġpet rov . iv an . gb 6 5 apps . web api . Param Employee Ċ import Ġpet rov . iv an . gb 6 5 apps . web api . Param Special ty Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġjava . util . regex . Pattern Ċ import Ġkotlin . collections . ArrayList Ċ Ċ class ĠApi Converter Ġ{ ĊĠĠĠ Ġprivate Ġval Ġdate Formatter Ġby Ġlazy Ġ{ ĠSimpleDateFormat (" dd . mm . yyyy ĠÐ³ .", ĠLocale . getDefault ()) Ġ} ĊĠĠĠ Ġprivate Ġval ĠdateFormat Variants Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair ("^ \\ d { 4 }- \\ d { 2 }- \\ d { 2 }\ $", ĠSimpleDateFormat (" yyyy - mm - dd ", ĠLocale . getDefault ())), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair ("^ \\ d { 2 }- \\ d { 2 }- \\ d { 4 }\ $", ĠSimpleDateFormat (" dd - mm - yyyy ", ĠLocale . getDefault ())) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconvert ( param : ĠList < Param Employee >): ĠList < Employee > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġ ĠArrayList < Employee >() ĊĊĠĠĠĠĠĠĠ Ġparam . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( convert ( it )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconvert ( param : ĠParam Employee ): ĠEmployee Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġbirthday Ġ= Ġ"-" ĊĠĠĠĠĠĠĠ Ġvar Ġage Ġ= Ġ"-" ĊĠĠĠĠĠĠĠ Ġparam . birthday ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġtry Parse Date ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbirthday Ġ= Ġdate Formatter . format ( date ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġage Ġ= Ġget Age ( date ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: ĠTim ber . e (" Unknown Ġdate Ġformat ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠlistOf Invite es Ġ= ĠArrayList < Special ity >() ĊĠĠĠĠĠĠĠ Ġparam . special ty . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Invite es . add ( convert ( it )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠEmployee ( param . firstName . format Name (), Ġparam . lastName . format Name (), Ġbirthday , Ġage , Ġparam . av at r Url , ĠlistOf Invite es ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconvert ( param : ĠParam Special ty ): ĠSpecial ity Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSpecial ity ( param . special ty Id , Ġparam . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Age ( b ith day : ĠDate ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Birth day Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcalendar Birth day . time Ġ= Ġb ith day ĊĠĠĠĠĠĠĠ Ġreturn Ġ( Calendar . getInstance (). get ( Calendar . YEAR ) Ġ- Ġcalendar Birth day . get ( Calendar . YEAR )). toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtry Parse Date ( date String : ĠString ): ĠDate ? Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin ĠdateFormat Variants ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Pattern . matches ( item . first , Ġdate String )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitem . second . parse ( date String ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠString . format Name () Ġ= Ġthis . substring ( 0 , Ġ 1 ). toUpperCase ( Locale . getDefault ()) Ġ+ Ġthis . substring ( 1 , Ġthis . length ). toLowerCase ( Locale . getDefault ())