|
|
|
|
@ -1,72 +1,12 @@ |
|
|
|
|
package net.pokeranalytics.android.calculus.bankroll |
|
|
|
|
|
|
|
|
|
import net.pokeranalytics.android.calculus.interfaces.DatableValue |
|
|
|
|
import net.pokeranalytics.android.model.filter.QueryCondition |
|
|
|
|
import net.pokeranalytics.android.model.interfaces.DatedValue |
|
|
|
|
import net.pokeranalytics.android.model.realm.Bankroll |
|
|
|
|
import net.pokeranalytics.android.model.realm.Transaction |
|
|
|
|
import java.util.* |
|
|
|
|
import kotlin.collections.HashMap |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* A class describing the parameters required to launch a bankroll report |
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
class BankrollReportSetup(val bankroll: Bankroll?, val from: Date? = null, val to: Date? = null) { |
|
|
|
|
|
|
|
|
|
val queryConditions: List<QueryCondition> |
|
|
|
|
get() { |
|
|
|
|
val conditions = mutableListOf<QueryCondition>() |
|
|
|
|
this.bankroll?.let { |
|
|
|
|
val bankrollCondition = QueryCondition.AnyBankroll() |
|
|
|
|
bankrollCondition.setObject(it) |
|
|
|
|
conditions.add(bankrollCondition) |
|
|
|
|
} |
|
|
|
|
this.from?.let { |
|
|
|
|
val fromCondition = QueryCondition.StartedFromDate() |
|
|
|
|
fromCondition.singleValue = it |
|
|
|
|
conditions.add(fromCondition) |
|
|
|
|
} |
|
|
|
|
this.to?.let { |
|
|
|
|
val toCondition = QueryCondition.StartedToDate() |
|
|
|
|
toCondition.singleValue = it |
|
|
|
|
conditions.add(toCondition) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return conditions |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
class TransactionBucket(useRate: Boolean = false) { |
|
|
|
|
var transactions: MutableList<Transaction> = mutableListOf() |
|
|
|
|
private set |
|
|
|
|
var total: Double = 0.0 |
|
|
|
|
private set |
|
|
|
|
var useRate: Boolean = useRate |
|
|
|
|
private set |
|
|
|
|
|
|
|
|
|
fun addTransaction(transaction: Transaction) { |
|
|
|
|
|
|
|
|
|
this.transactions.add(transaction) |
|
|
|
|
var rate = 1.0 |
|
|
|
|
if (this.useRate) { |
|
|
|
|
rate = transaction.bankroll?.currency?.rate ?: 1.0 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
val ratedAmount = rate * transaction.amount |
|
|
|
|
this.total += ratedAmount |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
class BRGraphPoint { |
|
|
|
|
|
|
|
|
|
var value: Double = 0.0 |
|
|
|
|
var variation: Double = 0.0 |
|
|
|
|
var date: Date? = null |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
class BankrollReport(setup: BankrollReportSetup) { |
|
|
|
|
|
|
|
|
|
@ -85,7 +25,37 @@ class BankrollReport(setup: BankrollReportSetup) { |
|
|
|
|
* The net result from poker computables |
|
|
|
|
*/ |
|
|
|
|
var netResult: Double = 0.0 |
|
|
|
|
private set |
|
|
|
|
set(value) { |
|
|
|
|
field = value |
|
|
|
|
total = this.netResult + this.transactionsNet |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The net result from transactions |
|
|
|
|
*/ |
|
|
|
|
var transactionsNet: Double = 0.0 |
|
|
|
|
set(value) { |
|
|
|
|
field = value |
|
|
|
|
total = this.netResult + this.transactionsNet |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The sum of all deposits |
|
|
|
|
*/ |
|
|
|
|
var depositTotal: Double = 0.0 |
|
|
|
|
set(value) { |
|
|
|
|
field = value |
|
|
|
|
this.netBanked = this.depositTotal + this.withdrawalTotal |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The sum of all withdrawals |
|
|
|
|
*/ |
|
|
|
|
var withdrawalTotal: Double = 0.0 |
|
|
|
|
set(value) { |
|
|
|
|
field = value |
|
|
|
|
this.netBanked = this.depositTotal + this.withdrawalTotal |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The difference between withdrawals and deposits |
|
|
|
|
@ -96,16 +66,21 @@ class BankrollReport(setup: BankrollReportSetup) { |
|
|
|
|
/** |
|
|
|
|
* The risk of ruin |
|
|
|
|
*/ |
|
|
|
|
var riskOfRuin: Double = 0.0 |
|
|
|
|
private set |
|
|
|
|
var riskOfRuin: Double? = null |
|
|
|
|
|
|
|
|
|
var transactions: List<Transaction> = mutableListOf() |
|
|
|
|
private set |
|
|
|
|
|
|
|
|
|
var transactionBuckets: HashMap<String, TransactionBucket> = HashMap() |
|
|
|
|
private set |
|
|
|
|
|
|
|
|
|
var evolutionPoints: MutableList<BRGraphPoint> = mutableListOf() |
|
|
|
|
var evolutionItems: MutableList<DatedValue> = mutableListOf() |
|
|
|
|
private set |
|
|
|
|
|
|
|
|
|
var evolutionPoints: Array<BRGraphPoint> = arrayOf() |
|
|
|
|
var evolutionItems: Array<DatableValue> = arrayOf() |
|
|
|
|
fun addDatedItems(items: Collection<DatedValue>) { |
|
|
|
|
this.evolutionItems.addAll(items) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fun addTransaction(transaction: Transaction) { |
|
|
|
|
|
|
|
|
|
@ -127,5 +102,63 @@ class BankrollReport(setup: BankrollReportSetup) { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* A class describing the parameters required to launch a bankroll report |
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
class BankrollReportSetup(val bankroll: Bankroll?, val from: Date? = null, val to: Date? = null) { |
|
|
|
|
|
|
|
|
|
val queryConditions: List<QueryCondition> |
|
|
|
|
get() { |
|
|
|
|
val conditions = mutableListOf<QueryCondition>() |
|
|
|
|
this.bankroll?.let { |
|
|
|
|
val bankrollCondition = QueryCondition.AnyBankroll() |
|
|
|
|
bankrollCondition.setObject(it) |
|
|
|
|
conditions.add(bankrollCondition) |
|
|
|
|
} |
|
|
|
|
this.from?.let { |
|
|
|
|
val fromCondition = QueryCondition.StartedFromDate() |
|
|
|
|
fromCondition.singleValue = it |
|
|
|
|
conditions.add(fromCondition) |
|
|
|
|
} |
|
|
|
|
this.to?.let { |
|
|
|
|
val toCondition = QueryCondition.StartedToDate() |
|
|
|
|
toCondition.singleValue = it |
|
|
|
|
conditions.add(toCondition) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return conditions |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
class TransactionBucket(useRate: Boolean = false) { |
|
|
|
|
var transactions: MutableList<Transaction> = mutableListOf() |
|
|
|
|
private set |
|
|
|
|
var total: Double = 0.0 |
|
|
|
|
private set |
|
|
|
|
var useRate: Boolean = useRate |
|
|
|
|
private set |
|
|
|
|
|
|
|
|
|
fun addTransaction(transaction: Transaction) { |
|
|
|
|
|
|
|
|
|
this.transactions.add(transaction) |
|
|
|
|
var rate = 1.0 |
|
|
|
|
if (this.useRate) { |
|
|
|
|
rate = transaction.bankroll?.currency?.rate ?: 1.0 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
val ratedAmount = rate * transaction.amount |
|
|
|
|
this.total += ratedAmount |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
data class BRGraphPoint(var value: Double = 0.0, var date: Date? = null, var data: Any? = null) { |
|
|
|
|
|
|
|
|
|
var variation: Double = 0.0 |
|
|
|
|
|
|
|
|
|
} |