From 7c2fa52db7236f676811a69b95100f42c5c1fd97 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Wed, 15 May 2019 12:00:48 +0200 Subject: [PATCH] add transaction filtering management --- .../net/pokeranalytics/android/model/filter/Query.kt | 12 +++++++++++- .../android/model/filter/QueryCondition.kt | 7 +++++++ .../pokeranalytics/android/model/realm/Session.kt | 2 +- .../android/model/realm/Transaction.kt | 6 +++++- .../ui/view/rowrepresentable/FilterSectionRow.kt | 4 +--- 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/filter/Query.kt b/app/src/main/java/net/pokeranalytics/android/model/filter/Query.kt index 2b493d0d..bbb8aec4 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/filter/Query.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/filter/Query.kt @@ -67,7 +67,17 @@ class Query { } } - return realmQuery + val queryLastGame = this.conditions.filter { + it is QueryCondition.LastGame + }.firstOrNull() + val queryLastSession = this.conditions.filter { + it is QueryCondition.LastSession + }.firstOrNull() + + queryLastGame?.let { + + } + return realmQuery } fun merge(query: Query) : Query { diff --git a/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt b/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt index 63f246b8..b85d736e 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt @@ -473,6 +473,13 @@ sealed class QueryCondition : FilterElementRow { calendar.add(Calendar.HOUR_OF_DAY, -24) return realmQuery.greaterThanOrEqualTo(fieldName, calendar.time.startOfDay()).and().lessThanOrEqualTo(fieldName, calendar.time.endOfDay()) } + is PastDay -> { + val startDate = Date() + val calendar = Calendar.getInstance() + calendar.time = startDate + calendar.add(Calendar.DAY_OF_YEAR, -singleValue) + return realmQuery.greaterThanOrEqualTo(fieldName, calendar.time.startOfDay()).and().lessThanOrEqualTo(fieldName, startDate.endOfDay()) + } is DuringThisWeek -> { val startDate = Date() val calendar = Calendar.getInstance() 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 56d5b759..05253c97 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 @@ -91,7 +91,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat AnyDayOfWeek::class.java, IsWeekEnd::class.java, IsWeekDay::class.java -> "dayOfWeek" AnyMonthOfYear::class.java -> "month" AnyYear::class.java -> "year" - IsToday::class.java, WasYesterday::class.java, WasTodayAndYesterday::class.java, DuringThisYear::class.java, DuringThisMonth::class.java, DuringThisWeek::class.java -> "startDate" + PastDay::class.java, IsToday::class.java, WasYesterday::class.java, WasTodayAndYesterday::class.java, DuringThisYear::class.java, DuringThisMonth::class.java, DuringThisWeek::class.java -> "startDate" StartedFromTime::class.java -> "startDateHourMinuteComponent" EndedToTime::class.java -> "endDateHourMinuteComponent" Duration::class.java -> "netDuration" 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 0ae2ce7d..56296685 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 @@ -37,8 +37,12 @@ open class Transaction : RealmObject(), Manageable, StaticRowRepresentableDataSo return when (queryCondition) { QueryCondition.AnyBankroll::class.java -> "bankroll.id" - QueryCondition.AnyTransactionType::class.java -> "type" + QueryCondition.AnyTransactionType::class.java -> "type.id" QueryCondition.StartedFromDate::class.java, QueryCondition.StartedToDate::class.java -> "date" + QueryCondition.AnyDayOfWeek::class.java, QueryCondition.IsWeekEnd::class.java, QueryCondition.IsWeekDay::class.java -> "dayOfWeek" + QueryCondition.AnyMonthOfYear::class.java -> "month" + QueryCondition.AnyYear::class.java -> "year" + QueryCondition.PastDay::class.java, QueryCondition.IsToday::class.java, QueryCondition.WasYesterday::class.java, QueryCondition.WasTodayAndYesterday::class.java, QueryCondition.DuringThisYear::class.java, QueryCondition.DuringThisMonth::class.java, QueryCondition.DuringThisWeek::class.java -> "date" else -> null } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt index 831e4f8a..4895ef45 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt @@ -113,9 +113,7 @@ enum class FilterSectionRow(override val resId: Int?) : RowRepresentable { addAll(QueryCondition.moreOrLess()) addAll(QueryCondition.moreOrLess()) } - TRANSACTION_TYPES -> arrayListOf().apply { - - } + TRANSACTION_TYPES -> Criteria.TransactionTypes.queryConditions.mapFirstCondition() else -> arrayListOf() }.apply { this.forEach {