diff --git a/app/src/main/java/net/pokeranalytics/android/model/Criteria.kt b/app/src/main/java/net/pokeranalytics/android/model/Criteria.kt index b19ffcca..bc912b98 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/Criteria.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/Criteria.kt @@ -90,21 +90,25 @@ sealed class Criteria(override var uniqueIdentifier: Int) : IntIdentifiable, Row if (this is ValueCustomFields) { val realm = Realm.getDefaultInstance() - val distincts = realm.where().equalTo("customField.id", this.customField.id).distinct("numericValue").findAll().sort("numericValue", Sort.ASCENDING) + val distincts = realm.where().equalTo("customField.id", this.customFieldId).findAll().sort("numericValue", Sort.ASCENDING) realm.close() val objects = mutableListOf() - distincts.distinct().mapNotNull { + distincts.mapNotNull { it.numericValue - }.forEach {value -> - val condition: QueryCondition.CustomFieldNumberQuery = QueryCondition.CustomFieldNumberQuery().apply { - this.customFieldId = this@ListCriteria.customField.id + }.distinct().forEach {value -> + val condition: QueryCondition.CustomFieldNumberQuery = when (this.customFieldType) { + CustomField.Type.AMOUNT.uniqueIdentifier -> QueryCondition.CustomFieldNumberQuery() + CustomField.Type.NUMBER.uniqueIdentifier -> QueryCondition.CustomFieldAmountQuery() + else -> throw PokerAnalyticsException.QueryValueMapUnexpectedValue + }.apply { + this.customFieldId = this@ListCriteria.customFieldId listOfValues = arrayListOf(value) } objects.add(condition) - objects.sorted() - return objects.map { Query(it) } } + objects.sorted() + return objects.map { Query(it) } } @@ -162,12 +166,14 @@ sealed class Criteria(override var uniqueIdentifier: Int) : IntIdentifiable, Row object TournamentFees : ListCriteria(18) object Cash : SimpleCriteria(listOf(QueryCondition.IsCash), 19) object Tournament : SimpleCriteria(listOf(QueryCondition.IsTournament), 20) - data class ListCustomFields(override var customField: CustomField) : RealmCriteria(21), CustomFieldCriteria { + data class ListCustomFields(var customField: CustomField) : RealmCriteria(21), CustomFieldCriteria { override var customFieldId: String = customField.id + override var customFieldType: Int = customField.type } - data class ValueCustomFields(override var customField: CustomField) : ListCriteria(22), CustomFieldCriteria { + data class ValueCustomFields(var customField: CustomField) : ListCriteria(22), CustomFieldCriteria { override var customFieldId: String = customField.id + override var customFieldType: Int = customField.type } val queries: List @@ -243,7 +249,13 @@ sealed class Criteria(override var uniqueIdentifier: Int) : IntIdentifiable, Row } is Blinds -> comparison() is ListCustomFields -> comparison() - is ValueCustomFields -> comparison() + is ValueCustomFields -> { + when (customFieldType) { + CustomField.Type.AMOUNT.uniqueIdentifier -> comparison() + CustomField.Type.NUMBER.uniqueIdentifier -> comparison() + else -> throw PokerAnalyticsException.QueryTypeUnhandled + } + } else -> throw PokerAnalyticsException.QueryTypeUnhandled } } @@ -323,6 +335,6 @@ sealed class Criteria(override var uniqueIdentifier: Int) : IntIdentifiable, Row } interface CustomFieldCriteria { - var customField: CustomField var customFieldId: String + var customFieldType: Int } \ No newline at end of file