package Ġcommon . utils Ċ Ċ import Ġdomain . model . Notify Race Week Set tled Ċ import Ġdomain . model . Notify Race Week Unset tled Ċ import Ġdomain . model . dao . default TimeZone Ċ import Ġdomain . model . dto . Race DTO Ċ Ċ object ĠFormat Caption Ġ{ ĊĊĠĠĠ Ġfun Ġformat Calendar ( season : ĠInt , Ġr aces : ĠList < Race DTO >): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder (" Here Ġis Ġthe Ġcalendar Ġof Ġthe Ġseason Ġ$ season :\ n ") ĊĠĠĠĠĠĠĠ Ġr aces . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ("\ n * ${ it . grand P rix . name }: *\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ("\ t \ t \ t \ t * Qual ifying :* Ġ${ it . date Qual ifying . format Month Day () }\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ("\ t \ t \ t \ t * Race *: Ġ${ it . date Race . format Month Day () }\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append (" More Ġinformation Ġabout Ġthe Ġrace :\ n / Race ${ it . id }\ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġformat Race Details ( race : ĠRace DTO , Ġtime Zone : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġbuilder . append ("* ${ race . grand P rix . name } *\ n ") ĊĠĠĠĠĠĠĠ Ġbuilder . append ("\ t \ t \ t \ t * City Ġ& ĠCountry :* Ġ${ race . grand P rix . circuit . city }, Ġ${ race . grand P rix . circuit . country }\ n ") ĊĠĠĠĠĠĠĠ Ġbuilder . append ("\ t \ t \ t \ t * Circuit :* Ġ${ race . grand P rix . circuit . name }, Ġ${ race . grand P rix . circuit . country }\ n ") ĊĠĠĠĠĠĠĠ Ġif Ġ( race . is Sprint Qual ifying ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t \ t \ t * Sprint ĠQual ifying :* Ġ${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrace . date Sprint Qu ail ifying . format Month Day Hour Minute And Preferred Timezone ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Zone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}\ n " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġval Ġdate Qual ifying Ġ= Ġrace . date Qual ifying . format Month Day Hour Minute And Preferred Timezone ( time Zone Ġ= Ġtime Zone ) ĊĠĠĠĠĠĠĠ Ġval Ġdate Race Ġ= Ġrace . date Race . format Month Day Hour Minute And Preferred Timezone ( time Zone Ġ= Ġtime Zone ) ĊĊĠĠĠĠĠĠĠ Ġbuilder . append ("\ t \ t \ t \ t * Qual ifying :* Ġ$ date Qual ifying Ġ\ n ") ĊĠĠĠĠĠĠĠ Ġbuilder . append ("\ t \ t \ t \ t * Race :* Ġ$ date Race ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// TODO ĠAdd Ġtimezone Ġto Ġthis Ġformat Ġalarm ĊĠĠĠ Ġfun Ġformat Set Notify Race Week ( notify Race Week Set tled : ĠNotify Race Week Set tled ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġval Ġnotify In Days Ġ= Ġnotify Race Week Set tled . notify In Days ĊĠĠĠĠĠĠĠ Ġval Ġnotify In Hours Ġ= Ġnotify Race Week Set tled . notify In Hours ĊĠĠĠĠĠĠĠ Ġval Ġnotify In Minutes Ġ= Ġnotify Race Week Set tled . notify In Minutes ĊĊĠĠĠĠĠĠĠ Ġbuilder . append (" We 'll Ġnotify Ġyou Ġabout Ġrace Ġweek Ġin :\ n ") ĊĠĠĠĠĠĠĠ Ġif Ġ( notify In Days Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ("* $ notify In Days Ġ${ if Ġ( notify In Days Ġ> Ġ 1 ) Ġ" days " Ġelse Ġ" day "} * ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( notify In Hours Ġ> Ġ 0 Ġ&& Ġnotify In Minutes Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append (" *, * Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( notify In Hours Ġ> Ġ 0 Ġ|| Ġnotify In Minutes Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append (" Ġ* and * Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( notify In Hours Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ("* $ notify In Hours Ġ${ if Ġ( notify In Hours Ġ> Ġ 1 ) Ġ" hours " Ġelse Ġ" hour "} * ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( notify In Minutes Ġ> Ġ 0 ) Ġbuilder . append (" Ġ* and * Ġ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( notify In Minutes Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ("* $ notify In Minutes Ġ${ if Ġ( notify In Minutes Ġ> Ġ 1 ) Ġ" minutes " Ġelse Ġ" minute "} * ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( notify In Days Ġ== Ġ 0 Ġ&& Ġnotify In Hours Ġ== Ġ 0 Ġ&& Ġnotify In Minutes Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ("* $ notify In Minutes Ġminutes * ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġday OfWeek Ġ= Ġnotify Race Week Set tled . every DayOfWeek ĊĠĠĠĠĠĠĠ Ġval Ġevery Hour Ġ= Ġnotify Race Week Set tled . every Hour ĊĠĠĠĠĠĠĠ Ġval Ġevery Minute Ġ= Ġnotify Race Week Set tled . every Minute ĊĊĊĠĠĠĠĠĠĠ Ġbuilder . append ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n \ n After Ġthat Ġit Ġwill Ġnotify Ġyou Ġ* every Ġ$ day OfWeek Ġat Ġ${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"% 0 2 d ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Hour ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} *" ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġbuilder . append ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"* :${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"% 0 2 d ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Minute ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} *" ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( notify Race Week Set tled . time Zone Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append (" Ġ* in Ġyour Ġactual Ġtimezone Ġ${ notify Race Week Set tled . time Zone } * ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append (" Ġ* in Ġthe Ġdefault Ġtimezone Ġ$ default TimeZone * Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ("\ n \ n If Ġyou Ġwant Ġto Ġchange Ġyour Ġtimezone Ġplease Ġsend Ġ/ set Tz Country ĠCountry Name ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ("\ n Example : Ġ/ set Tz Country ĠSp ain ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġformat Unset Notify Race Week ( notify Race Week Unset tled : ĠNotify Race Week Unset tled ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġbuilder . append (" Notify Ġwhen Ġit 's Ġrace Ġweek Ġhas Ġbeen Ġde activated ") ĊĠĠĠĠĠĠĠ Ġval Ġnotify Race Week Ġ= Ġnotify Race Week Unset tled . notify Race Week ĊĠĠĠĠĠĠĠ Ġval Ġday OfWeek Ġ= Ġnotify Race Week . day . to DayOfWeek () ĊĠĠĠĠĠĠĠ Ġval Ġevery Hour Ġ= Ġnotify Race Week . hour ĊĠĠĠĠĠĠĠ Ġval Ġevery Minute Ġ= Ġnotify Race Week . minute ĊĊĠĠĠĠĠĠĠ Ġbuilder . append ("\ n \ n Your Ġactual Ġconfiguration Ġis Ġthe Ġnext :") ĊĊĠĠĠĠĠĠĠ Ġbuilder . append ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n * Every Ġ$ day OfWeek Ġat Ġ${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"% 0 2 d ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Hour ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} *" ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġbuilder . append ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"* :${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"% 0 2 d ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Minute ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} * Ġ" ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġbuilder . append (" in Ġyour Ġactual Ġ* timezone Ġ${ notify Race Week Unset tled . time Zone . id } * ") ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . toString () ĊĠĠĠ Ġ} Ċ }