package Ġcom . se b ast ians oko low ski . health guard . model Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . location . Location Ċ import Ġcom . se b ast ians oko low ski . health guard . db . entity . Health Event Entity Ċ import Ġcom . se b ast ians oko low ski . health guard . model . notification . Android Notification Model Ċ import Ġcom . se b ast ians oko low ski . health guard . model . notification . Sms Notification Model Ċ import Ġcom . se b ast ians oko low ski . health guard . util . Health Event Helper Ċ import Ġio . reactivex . Maybe Ċ import Ġio . reactivex . functions . Bi Function Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠSeb astian ĠS oko ÅĤ owski Ġon Ġ 0 7 . 0 6 . 1 9 . Ċ Ġ*/ Ċ class ĠNotification Model ( val Ġcontext : ĠContext , Ġprivate Ġval Ġsettings Model : ĠSettings Model , Ġprivate Ġval Ġlocation Model : ĠLocation Model ) Ġ{ ĊĠĠĠ Ġprivate Ġval ĠSMS _ NOTIFICATION _ TIMEOUT Ġ= Ġ 3 0 ĊĠĠĠ Ġprivate Ġval ĠLOC ATION _ UPDATE _ TIMEOUT Ġ= Ġ 3 0 ĊĊĠĠĠ Ġval Ġandroid Notification Model Ġ= ĠAndroid Notification Model ( context ) ĊĠĠĠ Ġval Ġsms Notification Model Ġ= ĠS ms Notification Model ( settings Model ) ĊĊĠĠĠ Ġprivate Ġval Ġhealth Event Helper Ġ= ĠHealth Event Helper ( context ) ĊĊĠĠĠ Ġ@ Suppress Lint (" Check Result ") ĊĠĠĠ Ġfun Ġnotify Health Event ( health Event Entity : ĠHealth Event Entity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġcreate Message ( health Event Entity ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġsend SMS Observable : ĠMaybe < Boolean > Ġ= ĠMaybe . just ( true ) ĊĠĠĠĠĠĠĠ Ġif Ġ( settings Model . is Android Notification Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( settings Model . is Sms Notification Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend SMS Observable Ġ= ĠMaybe . create Ġ{ Ġem mit er Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Notification Model . show Alert Notification ( message , Ġtrue , ĠSMS _ NOTIFICATION _ TIMEOUT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġem mit er . on Success ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Notification Model . show Alert Notification ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( settings Model . is Sms Notification Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( settings Model . is Sms User Location Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaybe . zip ( send SMS Observable , Ġget Location Observable (), ĠBi Function Ġ{ Ġsend SMS : ĠBoolean , Ġlocation : ĠLocation ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( send SMS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsms Notification Model . send Sms ( create Message ( health Event Entity , Ġlocation )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). subscribe () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend SMS Observable . subscribe Ġ{ Ġsend SMS Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( send SMS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsms Notification Model . send Sms ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Location Observable (): ĠMaybe < Location ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMaybe . create Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Model . request Location ( LOCATION _ UPDATE _ TIMEOUT , Ġobject Ġ: ĠLocation Model . Location Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Location Result ( location : ĠLocation ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . on Success ( location ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . onComplete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Message ( health Event Entity : ĠHealth Event Entity , Ġlocation : ĠLocation ? Ġ= Ġnull ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmessage Ġ= Ġhealth Event Helper . get Notification Message ( health Event Entity ) ĊĠĠĠĠĠĠĠ Ġif Ġ( location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ+= Ġ"\ n \ n " Ġ+ Ġhealth Event Helper . getLocation Message ( location ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmessage ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdismiss Alert Notification ( notification Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġandroid Notification Model . dismiss Alert Notification ( notification Id ) ĊĠĠĠ Ġ} Ċ }