From 182c67124b9879d18a8d8d5e6c63df2f5245d4dd Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Thu, 25 Apr 2019 15:35:15 +0200 Subject: [PATCH] remove any month of year played before the first session when using upToNow --- .../pokeranalytics/android/model/Criteria.kt | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) 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 9df897ab..eb295d5b 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/Criteria.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/Criteria.kt @@ -24,6 +24,13 @@ fun List>.upToNow(): List> { val currentYear = calendar.get(Calendar.YEAR) val currentMonth = calendar.get(Calendar.MONTH) + val realm = Realm.getDefaultInstance() + val firstSession = realm.where().sort("year", Sort.ASCENDING).findFirst() + realm.close() + + val firstYear = firstSession?.year ?: currentYear + val firstMonth = firstSession?.month ?: currentMonth + val toRemove = this.filter { list -> list.any { it is QueryCondition.AnyYear && it.listOfValues.first() == currentYear } }.filter { list -> @@ -32,6 +39,14 @@ fun List>.upToNow(): List> { } } + val toRemoveBefore = this.filter { list -> + list.any { it is QueryCondition.AnyYear && it.listOfValues.first() == firstYear } + }.filter { list -> + list.any { + it is QueryCondition.AnyMonthOfYear && it.listOfValues.first() < firstMonth + } + } + return this.filter{ list -> var keep = true toRemove.forEach { @@ -39,6 +54,13 @@ fun List>.upToNow(): List> { keep = false } } + firstSession?.let { + toRemoveBefore.forEach { + if (list.containsAll(it)) { + keep = false + } + } + } keep } }