@@ -6,14 +6,20 @@ import com.blogspot.e_kanivets.moneytracker.R
66import com.blogspot.e_kanivets.moneytracker.activity.base.BaseFragment
77import com.blogspot.e_kanivets.moneytracker.adapter.RecordAdapter
88import com.blogspot.e_kanivets.moneytracker.controller.data.RecordController
9+ import com.blogspot.e_kanivets.moneytracker.controller.data.TransferController
910import com.blogspot.e_kanivets.moneytracker.entity.data.Account
11+ import com.blogspot.e_kanivets.moneytracker.entity.data.Category
12+ import com.blogspot.e_kanivets.moneytracker.entity.data.Record
13+ import com.blogspot.e_kanivets.moneytracker.entity.data.Transfer
1014import kotlinx.android.synthetic.main.fragment_account_operations.*
1115import javax.inject.Inject
1216
1317class AccountOperationsFragment : BaseFragment () {
1418
1519 @Inject
1620 internal lateinit var recordController: RecordController
21+ @Inject
22+ internal lateinit var transferController: TransferController
1723
1824 private lateinit var account: Account
1925
@@ -25,7 +31,33 @@ class AccountOperationsFragment : BaseFragment() {
2531 }
2632
2733 override fun initViews (view : View ) {
28- listView.adapter = RecordAdapter (activity, recordController.getRecordsForAccount(account))
34+ listView.adapter = RecordAdapter (activity, getRecords())
35+ }
36+
37+ private fun getRecords (): List <Record > {
38+ val accountRecords = recordController.getRecordsForAccount(account)
39+ val accountTransfers = transferController.getTransfersForAccount(account)
40+
41+ accountRecords + = calculateRecordsFromTransfers(accountTransfers)
42+ accountRecords.sortByDescending { it.time }
43+
44+ return accountRecords
45+ }
46+
47+ private fun calculateRecordsFromTransfers (transfers : List <Transfer >): List <Record > {
48+ val records = mutableListOf<Record >()
49+
50+ transfers.forEach {
51+ val type = if (it.fromAccountId == account.id) Record .TYPE_EXPENSE else Record .TYPE_INCOME
52+ val title = " Transfer ${if (type == Record .TYPE_EXPENSE ) " to" else " from" } "
53+ val category = Category (" transfer" )
54+ val price = if (type == Record .TYPE_EXPENSE ) it.fromAmount else it.toAmount
55+ val decimals = if (type == Record .TYPE_EXPENSE ) it.fromDecimals else it.toDecimals
56+
57+ records + = Record (it.id, it.time, type, title, category, price, account, account.currency, decimals)
58+ }
59+
60+ return records.toList()
2961 }
3062
3163 companion object {
0 commit comments