|
|
|
|
@ -7,6 +7,7 @@ import io.realm.annotations.LinkingObjects |
|
|
|
|
import io.realm.annotations.PrimaryKey |
|
|
|
|
import io.realm.kotlin.where |
|
|
|
|
import net.pokeranalytics.android.R |
|
|
|
|
import net.pokeranalytics.android.model.interfaces.DeleteValidityStatus |
|
|
|
|
import net.pokeranalytics.android.model.interfaces.NameManageable |
|
|
|
|
import net.pokeranalytics.android.model.interfaces.SaveValidityStatus |
|
|
|
|
import net.pokeranalytics.android.ui.view.RowRepresentable |
|
|
|
|
@ -16,69 +17,82 @@ import java.util.* |
|
|
|
|
|
|
|
|
|
open class Bankroll : RealmObject(), NameManageable, RowRepresentable { |
|
|
|
|
|
|
|
|
|
@PrimaryKey |
|
|
|
|
override var id = UUID.randomUUID().toString() |
|
|
|
|
@PrimaryKey |
|
|
|
|
override var id = UUID.randomUUID().toString() |
|
|
|
|
|
|
|
|
|
override var name: String = "" |
|
|
|
|
override var name: String = "" |
|
|
|
|
|
|
|
|
|
// Indicates whether the bankroll is live or online |
|
|
|
|
var live: Boolean = true |
|
|
|
|
// Indicates whether the bankroll is live or online |
|
|
|
|
var live: Boolean = true |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* The list of transactions of the bankroll |
|
|
|
|
*/ |
|
|
|
|
@LinkingObjects("bankroll") |
|
|
|
|
val transactions: RealmResults<Transaction>? = null |
|
|
|
|
/** |
|
|
|
|
* The list of transactions of the bankroll |
|
|
|
|
*/ |
|
|
|
|
@LinkingObjects("bankroll") |
|
|
|
|
val transactions: RealmResults<Transaction>? = null |
|
|
|
|
|
|
|
|
|
// The currency of the bankroll |
|
|
|
|
var currency: Currency? = null |
|
|
|
|
// The currency of the bankroll |
|
|
|
|
var currency: Currency? = null |
|
|
|
|
|
|
|
|
|
// The initial value of the bankroll |
|
|
|
|
var initialValue: Double = 0.0 |
|
|
|
|
// The initial value of the bankroll |
|
|
|
|
var initialValue: Double = 0.0 |
|
|
|
|
|
|
|
|
|
val rate: Double |
|
|
|
|
get() { |
|
|
|
|
return this.currency?.rate ?: 1.0 |
|
|
|
|
} |
|
|
|
|
val rate: Double |
|
|
|
|
get() { |
|
|
|
|
return this.currency?.rate ?: 1.0 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun getDisplayName(): String { |
|
|
|
|
return this.name |
|
|
|
|
} |
|
|
|
|
override fun getDisplayName(): String { |
|
|
|
|
return this.name |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun updateValue(value: Any?, row: RowRepresentable) { |
|
|
|
|
when (row) { |
|
|
|
|
SimpleRow.NAME -> this.name = value as String? ?: "" |
|
|
|
|
BankrollRow.LIVE -> { |
|
|
|
|
this.live = if (value is Boolean) !value else false |
|
|
|
|
} |
|
|
|
|
BankrollRow.INITIAL_VALUE -> { |
|
|
|
|
this.initialValue = value as Double? ?: 0.0 |
|
|
|
|
} |
|
|
|
|
BankrollRow.CURRENCY -> { |
|
|
|
|
//TODO handle a use default currency option |
|
|
|
|
this.currency?.code = value as String? |
|
|
|
|
} |
|
|
|
|
BankrollRow.RATE -> { |
|
|
|
|
this.currency?.rate = value as Double? |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
override fun updateValue(value: Any?, row: RowRepresentable) { |
|
|
|
|
when (row) { |
|
|
|
|
SimpleRow.NAME -> this.name = value as String? ?: "" |
|
|
|
|
BankrollRow.LIVE -> { |
|
|
|
|
this.live = if (value is Boolean) !value else false |
|
|
|
|
} |
|
|
|
|
BankrollRow.INITIAL_VALUE -> { |
|
|
|
|
this.initialValue = value as Double? ?: 0.0 |
|
|
|
|
} |
|
|
|
|
BankrollRow.CURRENCY -> { |
|
|
|
|
//TODO handle a use default currency option |
|
|
|
|
this.currency?.code = value as String? |
|
|
|
|
} |
|
|
|
|
BankrollRow.RATE -> { |
|
|
|
|
this.currency?.rate = value as Double? |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun isValidForDelete(realm: Realm): Boolean { |
|
|
|
|
override fun isValidForDelete(realm: Realm): Boolean { |
|
|
|
|
return realm.where<Session>().equalTo("bankroll.id", id).findAll().isEmpty() |
|
|
|
|
//TODO: Check transactions |
|
|
|
|
//&& realm.where<Transaction>().equalTo("bankroll.id", id).findAll().isEmpty() |
|
|
|
|
&& realm.where<Transaction>().equalTo("bankroll.id", id).findAll().isEmpty() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun getDeleteStatus(realm: Realm): DeleteValidityStatus { |
|
|
|
|
return if (!realm.where<Session>().equalTo("bankroll.id", id).findAll().isEmpty()) { |
|
|
|
|
DeleteValidityStatus.SESSIONS_LINKED |
|
|
|
|
} else if (!realm.where<Transaction>().equalTo("bankroll.id", id).findAll().isEmpty()) { |
|
|
|
|
DeleteValidityStatus.TRANSACTIONS_LINKED |
|
|
|
|
} else { |
|
|
|
|
DeleteValidityStatus.VALID |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun getFailedDeleteMessage(): Int { |
|
|
|
|
return R.string.bankroll_relationship_error |
|
|
|
|
} |
|
|
|
|
override fun getFailedDeleteMessage(status: DeleteValidityStatus): Int { |
|
|
|
|
return when (status) { |
|
|
|
|
DeleteValidityStatus.SESSIONS_LINKED -> R.string.bankroll_relationship_error |
|
|
|
|
DeleteValidityStatus.TRANSACTIONS_LINKED -> R.string.bankroll_relationship_error_transactions |
|
|
|
|
else -> super.getFailedDeleteMessage(status) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun getFailedSaveMessage(status: SaveValidityStatus): Int { |
|
|
|
|
return when (status) { |
|
|
|
|
SaveValidityStatus.DATA_INVALID -> R.string.empty_name_for_br_error |
|
|
|
|
SaveValidityStatus.ALREADY_EXISTS -> R.string.duplicate_bankroll_name_error |
|
|
|
|
else -> super.getFailedSaveMessage(status) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
override fun getFailedSaveMessage(status: SaveValidityStatus): Int { |
|
|
|
|
return when (status) { |
|
|
|
|
SaveValidityStatus.DATA_INVALID -> R.string.empty_name_for_br_error |
|
|
|
|
SaveValidityStatus.ALREADY_EXISTS -> R.string.duplicate_bankroll_name_error |
|
|
|
|
else -> super.getFailedSaveMessage(status) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |