package Ġcom . al har oof . di abe tracker . ui Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . al har oof . di abe tracker . data . log book . model . DateTime Range Ċ import Ġcom . al har oof . di abe tracker . domain . main . Load Average B gl Within UseCase Ċ import Ġcom . al har oof . di abe tracker . domain . main . Load Log Entries Total Count UseCase Ċ import Ġio . reactivex . Observer Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġorg . th reet en . bp . Offset DateTime Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠAr sl an ĠSh ou kat Ġon ĠOct Ġ 1 7 , Ġ 2 0 1 9 Ġ 1 1 : 5 9 ĠPM . Ċ Ġ*/ Ċ class ĠMain ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġload Average B gl Within UseCase : ĠLoad Average B gl Within UseCase , ĊĠĠĠ Ġprivate Ġval Ġload Log Entries Total Count UseCase : ĠLoad Log Entries Total Count UseCase Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ average B gl Ġ= ĠMutable LiveData < Int >() ĊĠĠĠ Ġval Ġaverage B gl Ġ= Ġ_ average B gl Ġas ĠLive Data < Int > ĊĠĠĠ Ġprivate Ġval Ġ_ log Entries Total Count Ġ= ĠMutable LiveData < Int >() ĊĠĠĠ Ġval Ġlog Entries Total Count Ġ= Ġ_ log Entries Total Count Ġas ĠLive Data < Int > ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġload Average B gl For Previous Months ( Offset DateTime . now (), Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġload Log Entries Total Count () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Average B gl For Previous Months ( current DateTime : ĠOffset DateTime , Ġmonths : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġload Average B gl Within UseCase . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDateTime Range ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart DateTime Ġ= Ġcurrent DateTime . minus Months ( months ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend DateTime Ġ= Ġcurrent DateTime ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( object Ġ: ĠObserver < Float > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( ave B gl : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ average B gl . value Ġ= Ġa ve B gl . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Log Entries Total Count () Ġ{ ĊĠĠĠĠĠĠĠ Ġload Log Entries Total Count UseCase . execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( object Ġ: ĠObserver < Int > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( total Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ log Entries Total Count . value Ġ= Ġtotal Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( e : ĠThrowable ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }