From 29b3d553400f44fc0be90ef9770f41f677e2669e Mon Sep 17 00:00:00 2001 From: Laurent Date: Wed, 12 Jun 2019 12:00:28 +0200 Subject: [PATCH] Fixes bankroll graph currencies --- .../android/calculus/bankroll/BankrollReport.kt | 13 +++++++++---- .../android/model/interfaces/Dated.kt | 7 ++++++- .../pokeranalytics/android/model/realm/Bankroll.kt | 2 +- .../pokeranalytics/android/model/realm/Currency.kt | 12 ++++++++---- .../pokeranalytics/android/model/realm/Session.kt | 6 +++--- .../android/model/realm/Transaction.kt | 6 +++--- 6 files changed, 30 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt b/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt index e8a3c761..cd83fb07 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt @@ -7,11 +7,12 @@ import io.realm.Realm import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.model.filter.Query import net.pokeranalytics.android.model.filter.QueryCondition -import net.pokeranalytics.android.model.interfaces.DatedGraphEntry +import net.pokeranalytics.android.model.interfaces.DatedBankrollGraphEntry import net.pokeranalytics.android.model.realm.Bankroll import net.pokeranalytics.android.model.realm.Transaction import net.pokeranalytics.android.ui.graph.DataSetFactory import net.pokeranalytics.android.util.extensions.findById +import timber.log.Timber import java.util.* import kotlin.collections.HashMap @@ -122,12 +123,12 @@ class BankrollReport(var setup: BankrollReportSetup) { /** * The list of dated items used for the graph */ - private var evolutionItems: MutableList = mutableListOf() + private var evolutionItems: MutableList = mutableListOf() /** * Adds a list of dated items to the evolution items used to get the bankroll graph */ - fun addDatedItems(items: Collection) { + fun addDatedItems(items: Collection) { this.evolutionItems.addAll(items) } @@ -167,7 +168,11 @@ class BankrollReport(var setup: BankrollReportSetup) { var total = this.initial this.evolutionItems.forEach { - total += it.amount + val rate = it.bankroll?.rate ?: 1.0 + + Timber.d("rate = $rate, amount = ${it.amount}") + total += it.amount * rate + Timber.d("total = $total") val point = BRGraphPoint(total, it.date, it.objectIdentifier) this.evolutionPoints.add(point) } diff --git a/app/src/main/java/net/pokeranalytics/android/model/interfaces/Dated.kt b/app/src/main/java/net/pokeranalytics/android/model/interfaces/Dated.kt index bb20862a..a3d8f428 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/interfaces/Dated.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/interfaces/Dated.kt @@ -1,5 +1,6 @@ package net.pokeranalytics.android.model.interfaces +import net.pokeranalytics.android.model.realm.Bankroll import java.util.* interface Dated { @@ -14,4 +15,8 @@ interface DatedValue : Dated { } -interface DatedGraphEntry : DatedValue, GraphIdentifiableEntry \ No newline at end of file +interface DatedBankrollGraphEntry : DatedValue, GraphIdentifiableEntry { + + var bankroll: Bankroll? + +} diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt index 9c1c4f08..00af3d42 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt @@ -41,7 +41,7 @@ open class Bankroll : RealmObject(), NameManageable, RowRepresentable { val rate: Double get() { - return this.currency?.rate ?: 1.0 + return this.currency?.rate ?: Currency.DEFAULT_RATE } override fun getDisplayName(context: Context): String { diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Currency.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Currency.kt index 304f3a2b..75655d36 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Currency.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Currency.kt @@ -8,8 +8,12 @@ import java.util.* open class Currency : RealmObject() { - @Ignore - val DEFAULTRATE: Double = 1.0 + companion object { + + @Ignore + val DEFAULT_RATE: Double = 1.0 + + } @PrimaryKey var id = UUID.randomUUID().toString() @@ -22,11 +26,11 @@ open class Currency : RealmObject() { /** * The rate of the currency with the main currency */ - var rate: Double? = DEFAULTRATE + var rate: Double? = DEFAULT_RATE fun refreshRelatedRatedValues() { - val rate = this.rate ?: DEFAULTRATE + val rate = this.rate ?: DEFAULT_RATE val query = this.realm.where(ComputableResult::class.java) query.`in`("session.bankroll.currency.id", arrayOf(this.id)) val cResults = query.findAll() diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index aa97a132..975da7d5 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -46,7 +46,7 @@ import kotlin.collections.ArrayList typealias BB = Double open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDataSource, RowRepresentable, Timed, - TimeFilterable, Filterable, DatedGraphEntry { + TimeFilterable, Filterable, DatedBankrollGraphEntry { enum class Type { CASH_GAME, @@ -235,7 +235,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat var creationDate: Date = Date() // The bankroll hosting the results - var bankroll: Bankroll? = null + override var bankroll: Bankroll? = null set(value) { field = value this.updateRowRepresentation() @@ -399,7 +399,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat @Ignore override var amount: Double = 0.0 get() { - return this.computableResult?.ratedNet ?: 0.0 + return this.result?.net ?: 0.0 } /** diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Transaction.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Transaction.kt index 66432946..a3ef5368 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Transaction.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Transaction.kt @@ -27,7 +27,7 @@ import kotlin.collections.ArrayList open class Transaction : RealmObject(), Manageable, StaticRowRepresentableDataSource, RowRepresentable, TimeFilterable, - Filterable, DatedGraphEntry { + Filterable, DatedBankrollGraphEntry { companion object { @@ -60,7 +60,7 @@ open class Transaction : RealmObject(), Manageable, StaticRowRepresentableDataSo override var id = UUID.randomUUID().toString() // The bankroll of the transaction - var bankroll: Bankroll? = null + override var bankroll: Bankroll? = null // The amount of the transaction override var amount: Double = 0.0 @@ -144,7 +144,7 @@ open class Transaction : RealmObject(), Manageable, StaticRowRepresentableDataSo } override fun formattedValue(stat: Stat): TextFormat { - return stat.format(this.amount) + return stat.format(this.amount, currency = this.bankroll?.utilCurrency) } override fun legendValues(