package Ġru . pop ov . body a . how money . presentation . ui . add transaction Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġcom . are l lo mobile . mvp . presenter . Inject Presenter Ċ import Ġcom . are l lo mobile . mvp . presenter . Provide Presenter Ċ import Ġdagger . android . support . Android Support Injection Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġkotlinx . android . synt hetic . main . fragment _ add _ transaction .* Ċ import Ġru . pop ov . body a . how money . R Ċ import Ġru . pop ov . body a . how money . domain . wallet . models .* Ċ import Ġru . pop ov . body a . how money . domain . wallet . models . Currency Ċ import Ġru . pop ov . body a . how money . presentation . mvp . add transaction . Add Transaction Presenter Ċ import Ġru . pop ov . body a . how money . presentation . mvp . add transaction . Add Transaction View Ċ import Ġru . pop ov . body a . how money . presentation . ui . account . activities . Account Activity Ċ import Ġru . pop ov . body a . how money . presentation . ui . add transaction . adapters . Categories RV Adapter Ċ import Ġru . pop ov . body a . how money . presentation . ui . add transaction . adapters . Wallet s Rv Adapter Ċ import Ġru . pop ov . body a . how money . presentation . ui . common . Base Fragment Ċ import Ġjava . util . Date Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠAdd Transaction Fragment Ġ: ĠBase Fragment (), ĠAdd Transaction View Ġ{ ĊĠĠĠ Ġoverride Ġval ĠTAG : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" ADD _ TRANSACTION _ FRAGMENT " ĊĠĠĠ Ġoverride Ġval Ġlayout Res : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠR . layout . fragment _ add _ transaction ĊĠĠĠ Ġoverride Ġval Ġtoolbar Title Id : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠR . string . create _ transaction ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMS _ IN _ DAY : ĠLong Ġ= Ġ 8 6 4 0 0 0 0 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcategories Adapter : ĠCategories RV Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġwallet s Adapter : ĠWallet s Rv Adapter ĊĊĠĠĠ Ġprivate Ġvar Ġselected Period Id Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġselected Wallet : ĠWallet ĊĠĠĠ Ġprivate Ġvar Ġselected Currency Ġ= ĠCurrency . R UB ĊĠĠĠ Ġprivate Ġvar Ġselected Category Ġ= ĠCategory . OTHER ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcomment : ĠString ĊĠĠĠ Ġprivate Ġvar Ġis Periodic Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġperiod : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval Ġdate Ġ= ĠDate () ĊĠĠĠ Ġprivate Ġvar Ġamount : ĠDouble Ġ= Ġ 0 . 0 ĊĠĠĠ Ġprivate Ġvar Ġis Income Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Template Ġ= Ġfalse ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġ@ Inject Presenter ĊĠĠĠ Ġlateinit Ġvar Ġadd Transaction Presenter : ĠAdd Transaction Presenter ĊĊĠĠĠ Ġ@ Provide Presenter ĊĠĠĠ Ġfun Ġprovide Add Transaction Presenter Presenter (): ĠAdd Transaction Presenter Ġ= Ġadd Transaction Presenter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠAndroid Support Injection . inject ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit UI () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetUp Toolbar Title ( res Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠAccount Activity ). update ToolBar ( res Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Transaction Created () Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Transaction Presenter . close Fragment ( resources . getString ( R . string . transaction _ created )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Wallet s ( wallet s : ĠList < Wallet >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwallet s Adapter . update DataSet ( wallet s ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit UI () Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Base Views () ĊĠĠĠĠĠĠĠ Ġinit Categories List () ĊĠĠĠĠĠĠĠ Ġinit Wallet s List () ĊĠĠĠĠĠĠĠ Ġinit Create Transaction Button () ĊĠĠĠĠĠĠĠ Ġinit Radio Groups () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Base Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Template ) Ġbtn _ create _ as _ transaction . text Ġ= Ġresources . getString ( R . string . create _ draft ) ĊĠĠĠĠĠĠĠ Ġrg _ income _ expense . check ( R . id . btn _ expense ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Wallet s List () Ġ{ ĊĠĠĠĠĠĠĠ Ġwallet s Adapter Ġ= ĠWallet s Rv Adapter ( object Ġ: ĠOn Wallet Selected Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Wallet Selected ( wallet : ĠWallet ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Wallet Ġ= Ġwallet ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġrv _ wallet s . adapter Ġ= Ġwallet s Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Categories List () Ġ{ ĊĠĠĠĠĠĠĠ Ġcategories Adapter Ġ= ĠCategories RV Adapter ( object Ġ: ĠOn Category Selected Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Category Selected ( type : ĠCategory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Category Ġ= Ġtype ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġrv _ categories . adapter Ġ= Ġcategories Adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Create Transaction Button () Ġ{ ĊĠĠĠĠĠĠĠ Ġbtn _ create _ as _ transaction . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Ġ= Ġet _ comment _ on _ transaction . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! :: selected Wallet . isInitialized ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġet _ transaction _ sum . text Ġ== Ġnull Ġ|| Ġet _ transaction _ sum . text . toString (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context !! , ĠR . string . create _ transaction _ error , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġamount Ġ= Ġet _ transaction _ sum . text . toString (). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Template Ġ= Ġswitch _ is _ template . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! isIn come ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġamount Ġ= Ġ- amount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= ĠTransaction ( date Ġ= Ġdate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Ġ= Ġcomment , Ġwallet Id Ġ= Ġselected Wallet . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Ġ= Ġselected Category , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġamount Ġ= Ġamount , Ġcurrency Ġ= Ġselected Wallet . major Currency , Ġperiodic Ġ= Ġis Periodic , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemplate Ġ= Ġis Template , Ġperiod Ġ= Ġperiod ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Transaction Presenter . create Transaction ( transaction ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Radio Groups () Ġ{ ĊĠĠĠĠĠĠĠ Ġrg _ income _ expense . setOn Checked ChangeListener Ġ{ Ġgroup , Ġchecked Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( checked Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ income Ġ-> Ġis Income Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ expense Ġ-> Ġis Income Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrg _ period . setOn Checked ChangeListener Ġ{ Ġgroup , Ġchecked Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( checked Id Ġ== Ġselected Period Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrg _ period . clear Check () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Period Id Ġ= Ġchecked Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Periodic Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( checked Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ every _ day Ġ-> Ġperiod Ġ= ĠMS _ IN _ DAY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ every _ three _ days Ġ-> Ġperiod Ġ= ĠMS _ IN _ DAY Ġ* Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ every _ week Ġ-> Ġperiod Ġ= ĠMS _ IN _ DAY Ġ* Ġ 7 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ every _ month Ġ-> Ġperiod Ġ= ĠMS _ IN _ DAY Ġ* Ġ 3 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Periodic Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Category Selected Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Category Selected ( type : ĠCategory ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Wallet Selected Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Wallet Selected ( wallet : ĠWallet ) ĊĠĠĠ Ġ} Ċ }