Fixes bankroll graph currencies

csv
Laurent 7 years ago
parent 7e267abe27
commit 29b3d55340
  1. 13
      app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt
  2. 7
      app/src/main/java/net/pokeranalytics/android/model/interfaces/Dated.kt
  3. 2
      app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt
  4. 12
      app/src/main/java/net/pokeranalytics/android/model/realm/Currency.kt
  5. 6
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  6. 6
      app/src/main/java/net/pokeranalytics/android/model/realm/Transaction.kt

@ -7,11 +7,12 @@ import io.realm.Realm
import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.model.filter.Query import net.pokeranalytics.android.model.filter.Query
import net.pokeranalytics.android.model.filter.QueryCondition 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.Bankroll
import net.pokeranalytics.android.model.realm.Transaction import net.pokeranalytics.android.model.realm.Transaction
import net.pokeranalytics.android.ui.graph.DataSetFactory import net.pokeranalytics.android.ui.graph.DataSetFactory
import net.pokeranalytics.android.util.extensions.findById import net.pokeranalytics.android.util.extensions.findById
import timber.log.Timber
import java.util.* import java.util.*
import kotlin.collections.HashMap import kotlin.collections.HashMap
@ -122,12 +123,12 @@ class BankrollReport(var setup: BankrollReportSetup) {
/** /**
* The list of dated items used for the graph * The list of dated items used for the graph
*/ */
private var evolutionItems: MutableList<DatedGraphEntry> = mutableListOf() private var evolutionItems: MutableList<DatedBankrollGraphEntry> = mutableListOf()
/** /**
* Adds a list of dated items to the evolution items used to get the bankroll graph * Adds a list of dated items to the evolution items used to get the bankroll graph
*/ */
fun addDatedItems(items: Collection<DatedGraphEntry>) { fun addDatedItems(items: Collection<DatedBankrollGraphEntry>) {
this.evolutionItems.addAll(items) this.evolutionItems.addAll(items)
} }
@ -167,7 +168,11 @@ class BankrollReport(var setup: BankrollReportSetup) {
var total = this.initial var total = this.initial
this.evolutionItems.forEach { 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) val point = BRGraphPoint(total, it.date, it.objectIdentifier)
this.evolutionPoints.add(point) this.evolutionPoints.add(point)
} }

@ -1,5 +1,6 @@
package net.pokeranalytics.android.model.interfaces package net.pokeranalytics.android.model.interfaces
import net.pokeranalytics.android.model.realm.Bankroll
import java.util.* import java.util.*
interface Dated { interface Dated {
@ -14,4 +15,8 @@ interface DatedValue : Dated {
} }
interface DatedGraphEntry : DatedValue, GraphIdentifiableEntry interface DatedBankrollGraphEntry : DatedValue, GraphIdentifiableEntry {
var bankroll: Bankroll?
}

@ -41,7 +41,7 @@ open class Bankroll : RealmObject(), NameManageable, RowRepresentable {
val rate: Double val rate: Double
get() { get() {
return this.currency?.rate ?: 1.0 return this.currency?.rate ?: Currency.DEFAULT_RATE
} }
override fun getDisplayName(context: Context): String { override fun getDisplayName(context: Context): String {

@ -8,8 +8,12 @@ import java.util.*
open class Currency : RealmObject() { open class Currency : RealmObject() {
@Ignore companion object {
val DEFAULTRATE: Double = 1.0
@Ignore
val DEFAULT_RATE: Double = 1.0
}
@PrimaryKey @PrimaryKey
var id = UUID.randomUUID().toString() var id = UUID.randomUUID().toString()
@ -22,11 +26,11 @@ open class Currency : RealmObject() {
/** /**
* The rate of the currency with the main currency * The rate of the currency with the main currency
*/ */
var rate: Double? = DEFAULTRATE var rate: Double? = DEFAULT_RATE
fun refreshRelatedRatedValues() { fun refreshRelatedRatedValues() {
val rate = this.rate ?: DEFAULTRATE val rate = this.rate ?: DEFAULT_RATE
val query = this.realm.where(ComputableResult::class.java) val query = this.realm.where(ComputableResult::class.java)
query.`in`("session.bankroll.currency.id", arrayOf(this.id)) query.`in`("session.bankroll.currency.id", arrayOf(this.id))
val cResults = query.findAll() val cResults = query.findAll()

@ -46,7 +46,7 @@ import kotlin.collections.ArrayList
typealias BB = Double typealias BB = Double
open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDataSource, RowRepresentable, Timed, open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDataSource, RowRepresentable, Timed,
TimeFilterable, Filterable, DatedGraphEntry { TimeFilterable, Filterable, DatedBankrollGraphEntry {
enum class Type { enum class Type {
CASH_GAME, CASH_GAME,
@ -235,7 +235,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat
var creationDate: Date = Date() var creationDate: Date = Date()
// The bankroll hosting the results // The bankroll hosting the results
var bankroll: Bankroll? = null override var bankroll: Bankroll? = null
set(value) { set(value) {
field = value field = value
this.updateRowRepresentation() this.updateRowRepresentation()
@ -399,7 +399,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat
@Ignore @Ignore
override var amount: Double = 0.0 override var amount: Double = 0.0
get() { get() {
return this.computableResult?.ratedNet ?: 0.0 return this.result?.net ?: 0.0
} }
/** /**

@ -27,7 +27,7 @@ import kotlin.collections.ArrayList
open class Transaction : RealmObject(), Manageable, StaticRowRepresentableDataSource, RowRepresentable, TimeFilterable, open class Transaction : RealmObject(), Manageable, StaticRowRepresentableDataSource, RowRepresentable, TimeFilterable,
Filterable, DatedGraphEntry { Filterable, DatedBankrollGraphEntry {
companion object { companion object {
@ -60,7 +60,7 @@ open class Transaction : RealmObject(), Manageable, StaticRowRepresentableDataSo
override var id = UUID.randomUUID().toString() override var id = UUID.randomUUID().toString()
// The bankroll of the transaction // The bankroll of the transaction
var bankroll: Bankroll? = null override var bankroll: Bankroll? = null
// The amount of the transaction // The amount of the transaction
override var amount: Double = 0.0 override var amount: Double = 0.0
@ -144,7 +144,7 @@ open class Transaction : RealmObject(), Manageable, StaticRowRepresentableDataSo
} }
override fun formattedValue(stat: Stat): TextFormat { override fun formattedValue(stat: Stat): TextFormat {
return stat.format(this.amount) return stat.format(this.amount, currency = this.bankroll?.utilCurrency)
} }
override fun legendValues( override fun legendValues(

Loading…
Cancel
Save