package Ġcom . fel ix fav our . mo bot it he . gui . viewModel Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . fel ix fav our . mo bot it he . R Ċ import Ġcom . fel ix fav our . mo bot it he . database . entity . History Ċ import Ġcom . fel ix fav our . mo bot it he . database . entity . Transaction Ċ import Ġcom . fel ix fav our . mo bot it he . gui . MainActivity Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . firestore . FieldValue Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Ċ Ċ class ĠSubmit Transactions ViewModel ( transaction : ĠTransaction , Ġapplication : ĠApplication ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠUSER S _ COLLECTION Ġ= Ġ" users " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTRAN SACTION _ HIST ORIES Ġ= Ġ" transaction _ hist ories " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEST INATION Ġ= Ġ" Destination " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCHAN NEL _ ID Ġ= Ġ" 1 " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġauth Ġ= ĠFirebase Auth . getInstance () ĊĠĠĠ Ġprivate Ġval Ġuser Ġ= Ġauth . currentUser ĊĠĠĠ Ġprivate Ġval Ġfire store Ġ= ĠFirebase Fire store . getInstance () ĊĊĠĠĠ Ġprivate Ġval Ġ_ selected Income Ġ= ĠMutable LiveData < Transaction >() ĊĠĠĠ Ġval Ġselected Income Ġ: ĠLive Data < Transaction > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ selected Income ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ selected Income . value Ġ= Ġtransaction ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsubmit Transaction ( history : ĠHistory , Ġview : ĠView , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfire store . collection ( USERS _ COLLECTION ). document ( user !!. uid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. update ( TRANSACTION _ HIST ORIES , ĠField Value . array Union ( history )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( view , Ġcontext . getString ( R . string . income _ category _ added _ prompt ), ĠSn ackbar . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif ( task . is Canceled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( view , Ġcontext . getString ( R . string . income _ category _ not _ added _ prompt ), ĠSn ackbar . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Notification ( context : ĠContext ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠMainActivity :: class . java ). putExtra ( DEST INATION , Ġ" Submit ") ĊĊĠĠĠĠĠĠĠ Ġval Ġpending Intent Ġ= ĠPending Intent . getActivity ( context , 0 , Ġintent , Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠNotification Compat . Builder ( context , ĠCHAN NEL _ ID ). set Small Icon ( R . drawable . ic _ mo bot it he _ logo ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text (" Ch in em er em ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Title (" I Ġam Ġa Ġboy ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( Notification Compat . PRIORITY _ DEFAULT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Intent ( pending Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( true ). set Show When ( true ) ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ