summaryrefslogtreecommitdiff
path: root/src/main/kotlin/dev/dnpm
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/dev/dnpm')
-rw-r--r--src/main/kotlin/dev/dnpm/etl/processor/web/StatisticsController.kt31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/main/kotlin/dev/dnpm/etl/processor/web/StatisticsController.kt b/src/main/kotlin/dev/dnpm/etl/processor/web/StatisticsController.kt
index e48d5df..8dfe595 100644
--- a/src/main/kotlin/dev/dnpm/etl/processor/web/StatisticsController.kt
+++ b/src/main/kotlin/dev/dnpm/etl/processor/web/StatisticsController.kt
@@ -19,18 +19,47 @@
package dev.dnpm.etl.processor.web
+import dev.dnpm.etl.processor.monitoring.RequestStatus
+import dev.dnpm.etl.processor.monitoring.RequestType
+import dev.dnpm.etl.processor.monitoring.SubmissionType
+import dev.dnpm.etl.processor.services.RequestService
+import net.sf.saxon.tree.tiny.Statistics
import org.springframework.stereotype.Controller
import org.springframework.ui.Model
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import java.time.Instant
+import java.time.ZoneId
+import java.time.format.DateTimeFormatter
@Controller
@RequestMapping(path = ["/statistics"])
-class StatisticsController {
+class StatisticsController(
+ private val requestService: RequestService,
+) {
@GetMapping
fun index(model: Model): String {
+ val submissions =
+ requestService
+ .findAll()
+ .asSequence()
+ .filter { it.type == RequestType.MTB_FILE }
+ .filter { listOf(RequestStatus.SUCCESS, RequestStatus.WARNING).contains(it.status) }
+ .sortedByDescending { it.processedAt }
+ .groupBy {
+ val formatter = DateTimeFormatter.ofPattern("yyyy-MM").withZone(ZoneId.systemDefault())
+ formatter.format(it.processedAt)
+ }.map {
+ mapOf(
+ "month" to it.key,
+ "accepted" to it.value.count { it.submissionAccepted },
+ "initial" to it.value.count { it.submissionType == SubmissionType.INITIAL },
+ "submissions" to it.value.size,
+ )
+ }.toList()
+
model.addAttribute("now", Instant.now())
+ model.addAttribute("submissions", submissions)
return "statistics"
}
}