src/main/kotlin/de/uapcore/lightpit/viewmodel/Issues.kt

changeset 307
23fe9f174d2d
parent 292
703591e739f4
child 311
bf67e0ff7131
--- a/src/main/kotlin/de/uapcore/lightpit/viewmodel/Issues.kt	Sun Jul 28 14:13:36 2024 +0200
+++ b/src/main/kotlin/de/uapcore/lightpit/viewmodel/Issues.kt	Tue Jul 30 18:53:39 2024 +0200
@@ -208,11 +208,14 @@
     val onlyBlocker: Boolean = evalFlag(http, flagBlocker)
     val status: List<IssueStatus> = evalEnum(http, "s")
     val category: List<IssueCategory> = evalEnum(http, "c")
+    val assignee: List<Int> = evalInts(http, "u")
 
     val sortPrimary: IssueSorter.Criteria = evalSort(http, "primary", IssueSorter.Criteria(IssueSorter.Field.DONE))
     val sortSecondary: IssueSorter.Criteria = evalSort(http, "secondary", IssueSorter.Criteria(IssueSorter.Field.ETA))
     val sortTertiary: IssueSorter.Criteria = evalSort(http, "tertiary", IssueSorter.Criteria(IssueSorter.Field.UPDATED, false))
 
+    fun containsAssignee(user: User?): Boolean = assignee.contains(user?.id?:-1)
+
     private fun evalSort(http: HttpRequest, prio: String, defaultValue: IssueSorter.Criteria): IssueSorter.Criteria {
         val param = http.param("sort_$prio")
         if (param != null) {
@@ -268,4 +271,25 @@
             ?.map { enumValueOf(it) }
             ?: emptyList()
     }
+
+    private fun evalInts(http: HttpRequest, prefix: String): List<Int> {
+        val sattr = "f.${prefix}"
+        val param = http.paramArray("filter")
+        if (param.isNotEmpty()) {
+            val list = param.filter { it.startsWith("${prefix}.") }
+                .map { it.substring(prefix.length + 1) }
+                .mapNotNull(String::toIntOrNull)
+            if (list.isEmpty()) {
+                http.session.removeAttribute(sattr)
+            } else {
+                http.session.setAttribute(sattr, list.joinToString(","))
+            }
+        }
+
+        return http.session.getAttribute(sattr)
+            ?.toString()
+            ?.split(",")
+            ?.map(String::toInt)
+            ?: emptyList()
+    }
 }

mercurial