|
|
|
|
@ -24,6 +24,13 @@ fun List<List<QueryCondition>>.upToNow(): List<List<QueryCondition>> { |
|
|
|
|
val currentYear = calendar.get(Calendar.YEAR) |
|
|
|
|
val currentMonth = calendar.get(Calendar.MONTH) |
|
|
|
|
|
|
|
|
|
val realm = Realm.getDefaultInstance() |
|
|
|
|
val firstSession = realm.where<Session>().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<List<QueryCondition>>.upToNow(): List<List<QueryCondition>> { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
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<List<QueryCondition>>.upToNow(): List<List<QueryCondition>> { |
|
|
|
|
keep = false |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
firstSession?.let { |
|
|
|
|
toRemoveBefore.forEach { |
|
|
|
|
if (list.containsAll(it)) { |
|
|
|
|
keep = false |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
keep |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -126,11 +148,50 @@ sealed class Criteria { |
|
|
|
|
object BankrollTypes: SimpleCriteria(listOf(QueryCondition.IsLive, QueryCondition.IsOnline)) |
|
|
|
|
object DayPeriods: SimpleCriteria(listOf(QueryCondition.IsWeekDay, QueryCondition.IsWeekEnd)) |
|
|
|
|
object Years: ListCriteria() |
|
|
|
|
object AllMonthsUpToNow: ListCriteria() |
|
|
|
|
object Blinds: ListCriteria() |
|
|
|
|
object TournamentFees: ListCriteria() |
|
|
|
|
object Cash: SimpleCriteria(listOf(QueryCondition.IsCash)) |
|
|
|
|
object Tournament: SimpleCriteria(listOf(QueryCondition.IsTournament)) |
|
|
|
|
|
|
|
|
|
val predicates: List<List<QueryCondition>> |
|
|
|
|
get() { |
|
|
|
|
return when (this) { |
|
|
|
|
is AllMonthsUpToNow -> { |
|
|
|
|
val realm = Realm.getDefaultInstance() |
|
|
|
|
val firstSession= realm.where<Session>().sort("startDate", Sort.ASCENDING).findFirst() |
|
|
|
|
val lastSession = realm.where<Session>().sort("startDate", Sort.DESCENDING).findFirst() |
|
|
|
|
realm.close() |
|
|
|
|
|
|
|
|
|
val years: ArrayList<List<QueryCondition>> = arrayListOf() |
|
|
|
|
|
|
|
|
|
val firstYear = firstSession?.year ?: return years |
|
|
|
|
val firstMonth = firstSession.month ?: return years |
|
|
|
|
val lastYear = lastSession?.year ?: return years |
|
|
|
|
val lastMonth = lastSession.month ?: return years |
|
|
|
|
|
|
|
|
|
for (year in firstYear..lastYear) { |
|
|
|
|
val currentYear = QueryCondition.AnyYear(year) |
|
|
|
|
for (month in 0..11) { |
|
|
|
|
|
|
|
|
|
if (year == firstYear && month < firstMonth) { |
|
|
|
|
continue |
|
|
|
|
} |
|
|
|
|
if (year == lastYear && month > lastMonth) { |
|
|
|
|
continue |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
val currentMonth = QueryCondition.AnyMonthOfYear(month) |
|
|
|
|
val currentList = listOf<QueryCondition>(currentYear, currentMonth) |
|
|
|
|
years.add(currentList) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
years |
|
|
|
|
} |
|
|
|
|
else -> listOf(listOf()) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
val queryConditions: List<QueryCondition> |
|
|
|
|
get() { |
|
|
|
|
return when (this) { |
|
|
|
|
@ -146,10 +207,10 @@ sealed class Criteria { |
|
|
|
|
is TournamentFees -> comparison<QueryCondition.TournamentFee, Double >() |
|
|
|
|
is Years -> { |
|
|
|
|
val years = arrayListOf<QueryCondition.AnyYear>() |
|
|
|
|
val calendar = Calendar.getInstance() |
|
|
|
|
calendar.time = Date() |
|
|
|
|
val yearNow = calendar.get(Calendar.YEAR) |
|
|
|
|
val realm = Realm.getDefaultInstance() |
|
|
|
|
val lastSession = realm.where<Session>().sort("startDate", Sort.DESCENDING).findFirst() |
|
|
|
|
val yearNow = lastSession?.year ?: return years |
|
|
|
|
|
|
|
|
|
realm.where<Session>().sort("year", Sort.ASCENDING).findFirst()?.year?.let { |
|
|
|
|
for (index in 0..(yearNow - it)) { |
|
|
|
|
years.add(QueryCondition.AnyYear().apply { |
|
|
|
|
|