From c0e920d1d59cbe6b9c078e205070a0ab2b6e6ded Mon Sep 17 00:00:00 2001 From: stephaniegl Date: Wed, 8 Oct 2025 14:32:09 +0700 Subject: [PATCH] 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)