package Ġser g . ch up rin . fin ances . feature . dashboard . domain . builder Ċ Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġser g . ch up rin . fin ances . core . api . domain . model . Id Ċ import Ġser g . ch up rin . fin ances . core . api . domain . model . User Ċ import Ġser g . ch up rin . fin ances . core . api . domain . model . money account . Money Account Ċ import Ġser g . ch up rin . fin ances . core . api . domain . model . money account . query . Money Accounts Query Ċ import Ġser g . ch up rin . fin ances . core . api . domain . model . period . Data Period Ċ import Ġser g . ch up rin . fin ances . core . api . domain . model . transaction . Transaction Ċ import Ġser g . ch up rin . fin ances . core . api . domain . model . transaction . query . Transactions Query Ċ import Ġser g . ch up rin . fin ances . core . api . domain . repository . Money Account Repository Ċ import Ġser g . ch up rin . fin ances . core . api . domain . service . Transaction Category Retriever Service Ċ import Ġser g . ch up rin . fin ances . feature . dashboard . domain . model . Dashboard Widget Ċ import Ġser g . ch up rin . fin ances . feature . dashboard . domain . repository . Dashboard Data Period Repository Ċ import Ġser g . ch up rin . fin ances . feature . dashboard . setup . domain . model . Dashboard Widget Type Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠSer ge y ĠCh up rin Ġon Ġ 2 0 . 0 4 . 2 0 2 0 . Ċ Ġ*/ Ċ class ĠDashboard Recent Transactions Widget Builder Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġmoney Account Repository : ĠMoney Account Repository , ĊĠĠĠ Ġprivate Ġval Ġdata Period Repository : ĠDashboard Data Period Repository , ĊĠĠĠ Ġprivate Ġval Ġtransaction Category Retriever Service : ĠTransaction Category Retriever Service Ċ ) Ġ: ĠDashboard Widget Builder < Dashboard Widget . Recent Transactions > Ġ{ ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREC ENT _ TRANSACTION S _ COUNT Ġ= Ġ 4 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis ForType ( widget Type : ĠDashboard Widget Type ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwidget Type Ġ== ĠDashboard Widget Type . REC ENT _ TRANSACTION S ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild ( ĊĠĠĠĠĠĠĠ ĠcurrentUser : ĠUser , ĊĠĠĠĠĠĠĠ Ġcurrent Period : ĠData Period ĊĠĠĠ Ġ): ĠFlow < Dashboard Widget . Recent Transactions >? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( data Period Repository . default Data Period Ġ!= Ġcurrent Period ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcombine ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflow Of ( currentUser ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Category Retriever Service ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. transactions Flow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentUser . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransactions Query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġowner Id Ġ= ĠcurrentUser . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendDate Ġ= Ġcurrent Period . endDate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlimit Ġ= ĠREC ENT _ TRANSACTION S _ COUNT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartDate Ġ= Ġcurrent Period . startDate , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsort Order Ġ= ĠTransactions Query . SortOrder . DATE _ DESC ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ:: Pair ĊĠĠĠĠĠĠĠ Ġ). flatMap Latest Ġ{ Ġ( user , Ġtransactions ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmoney Account Ids Ġ= Ġtransactions . keys . map To ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Set Of (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction :: money AccountId ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcombine ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Money Accounts ( user , Ġmoney Account Ids ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflow Of ( transactions ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDashboard Widget :: Recent Transactions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Money Accounts ( ĊĠĠĠĠĠĠĠ Ġuser : ĠUser , ĊĠĠĠĠĠĠĠ Ġmoney Account Ids : ĠMutable Set < Id > ĊĠĠĠ Ġ): ĠFlow < Map < Id , ĠMoney Account >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmoney Account Repository ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accounts Flow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMoney Accounts Query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġowner Id Ġ= Ġuser . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Ids Ġ= Ġmoney Account Ids ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġmoney Accounts Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmoney Accounts . associate By ( Money Account :: id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }