From 86d50bdb6c3181aef49177143e7804c4820d3350 Mon Sep 17 00:00:00 2001 From: stephaniegl Date: Wed, 8 Oct 2025 10:28:15 +0700 Subject: [PATCH 1/3] commit 08/10/2025 WebApp --- src/web/WebApp.kt | 61 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/web/WebApp.kt b/src/web/WebApp.kt index 6cedfde..92d3641 100644 --- a/src/web/WebApp.kt +++ b/src/web/WebApp.kt @@ -1084,6 +1084,67 @@ class WebApp(val listenPort: Int, val userlist: List>) { } } } + + // Steph : coba tambah untuk QueuePaging Table. Belum ada di JS file(?) + path("QueuePaging"){ + get("List"){ + it.result(MariaDB.ArrayListtoString(db.queuepagingDB.List)) + } + delete("List"){ + // truncate queue paging table + if (db.queuepagingDB.Clear()) { + db.queuepagingDB.Get() + it.result(objectmapper.writeValueAsString(resultMessage("OK"))) + } else { + it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate queue paging table"))) + } + } + delete("DeleteByIndex/{index}") { + // delete by index + val index = it.pathParam("index").toUIntOrNull() + if (index == null) { + it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid index"))) + } else { + if (db.queuepagingDB.DeleteByIndex(index.toInt())) { + db.queuepagingDB.Resort() + it.result(objectmapper.writeValueAsString(resultMessage("OK"))) + } else { + it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete queue paging with index $index"))) + } + } + } + + } + + // Steph : coba tambah untuk QueueTable Table. Belum ada di JS file(?) + path("QueueTable"){ + get("List"){ + it.result(MariaDB.ArrayListtoString(db.queuetableDB.List)) + } + delete("List"){ + // truncate queue table + if (db.queuetableDB.Clear()) { + db.queuetableDB.Get() + it.result(objectmapper.writeValueAsString(resultMessage("OK"))) + } else { + it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate queue sound table"))) + } + } + delete("DeleteByIndex/{index}") { + // delete by index + val index = it.pathParam("index").toUIntOrNull() + if (index == null) { + it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid index"))) + } else { + if (db.queuetableDB.DeleteByIndex(index.toInt())) { + db.queuetableDB.Resort() + it.result(objectmapper.writeValueAsString(resultMessage("OK"))) + } else { + it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete queue sound with index $index"))) + } + } + } + } } } }.start(listenPort) From c0e920d1d59cbe6b9c078e205070a0ab2b6e6ded Mon Sep 17 00:00:00 2001 From: stephaniegl Date: Wed, 8 Oct 2025 14:32:09 +0700 Subject: [PATCH 2/3] commit 08/10/2025 WebApp --- src/web/WebApp.kt | 42 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/src/web/WebApp.kt b/src/web/WebApp.kt index 92d3641..58d3b69 100644 --- a/src/web/WebApp.kt +++ b/src/web/WebApp.kt @@ -15,12 +15,7 @@ import content.Category import content.Language import content.ScheduleDay import content.VoiceType -import database.BroadcastZones -import database.LanguageLink -import database.MariaDB -import database.Messagebank -import database.SoundChannel -import database.Soundbank +import database.* import db import io.javalin.Javalin import io.javalin.apibuilder.ApiBuilder.before @@ -654,7 +649,41 @@ class WebApp(val listenPort: Int, val userlist: List>) { } } post("Add"){ + // TODO add new schedule + // recheck lagi tambahan steph + val json: JsonNode = objectmapper.readTree(it.body()) + val description = json.get("Description")?.asText("") ?: "" + val day = json.get("Day")?.asText("") ?: "" + val time = json.get("Time")?.asText("") ?: "" + val soundpath = json.get("Soundpath")?.asText("") ?: "" + val repeat = json.get("Repeat")?.asInt()?.toUByte() ?: 0u + val enable = json.get("Enable")?.asBoolean() ?: false + val broadcast_zones = json.get("BroadcastZones")?.asText("") ?: "" + val language = json.get("Language")?.asText("") ?: "" + if (ValidString(description)){ + if (ValidString(day) && ValidScheduleDay(day)){ + if (ValidString(time) && ValidScheduleTime(time)){ + if (ValidString(soundpath) && ValidFile(soundpath)){ + if (repeat in 0u..127u){ + if (ValidString(broadcast_zones)){ + val zones = broadcast_zones.split(";") + if (zones.all { zz -> db.broadcastDB.List.any { xx -> xx.description.equals(zz,true) } }){ + if (ValidString(language) && Language.entries.any{ lang -> lang.name == language }){ + val newvalue = ScheduleBank(0u, description, day, time, soundpath, repeat, enable, broadcast_zones, language) + if (db.scheduleDB.Add(newvalue)){ + db.scheduleDB.Resort() + it.result(objectmapper.writeValueAsString(resultMessage("OK"))) + } else it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to add schedule to database"))) + } else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Language"))) + } else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Contains unsupported BroadcastZones"))) + } else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid BroadcastZones"))) + } else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Repeat, must be between 0-127"))) + } else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Soundpath"))) + } else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Time format, must be HH:mm"))) + } else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Day format"))) + } else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Description"))) + } delete("DeleteByIndex/{index}") { // delete by index @@ -1145,6 +1174,7 @@ class WebApp(val listenPort: Int, val userlist: List>) { } } } + } } }.start(listenPort) From 6b00bc7eb07ffea32211606212d0d4fba2a5ac83 Mon Sep 17 00:00:00 2001 From: stephaniegl Date: Wed, 8 Oct 2025 17:03:17 +0700 Subject: [PATCH 3/3] commit 08/10/2025 WebApp --- src/web/WebApp.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/web/WebApp.kt b/src/web/WebApp.kt index 58d3b69..6bc6e0e 100644 --- a/src/web/WebApp.kt +++ b/src/web/WebApp.kt @@ -639,6 +639,7 @@ class WebApp(val listenPort: Int, val userlist: List>) { // get timer list it.result(MariaDB.ArrayListtoString(db.scheduleDB.List)) } + delete("List") { // truncate timer table if (db.scheduleDB.Clear()) { @@ -649,7 +650,6 @@ class WebApp(val listenPort: Int, val userlist: List>) { } } post("Add"){ - // TODO add new schedule // recheck lagi tambahan steph val json: JsonNode = objectmapper.readTree(it.body()) @@ -683,7 +683,6 @@ class WebApp(val listenPort: Int, val userlist: List>) { } else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Time format, must be HH:mm"))) } else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Day format"))) } else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Description"))) - } delete("DeleteByIndex/{index}") { // delete by index @@ -814,6 +813,17 @@ class WebApp(val listenPort: Int, val userlist: List>) { it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid XLSX file"))) } } + + //TODO kirim list message dan broadcast zones untuk ADD/Edit schedule + get("GetMessageAndBroadcastZones") { + val result = object { + //TODO filter message without input variable + val messages = db.messageDB.List + + val broadcastzones = db.broadcastDB.List + } + it.result(objectmapper.writeValueAsString(result)) + } } path("Log") { get("List") { get1 ->