commit 17/10/2025 Add few logs
This commit is contained in:
@@ -670,7 +670,7 @@ class MariaDB(
|
|||||||
val statement = connection.createStatement()
|
val statement = connection.createStatement()
|
||||||
val resultSet = statement?.executeQuery("SELECT * FROM ${super.dbName}")
|
val resultSet = statement?.executeQuery("SELECT * FROM ${super.dbName}")
|
||||||
val workbook = XSSFWorkbook()
|
val workbook = XSSFWorkbook()
|
||||||
val sheet = workbook.createSheet("languagelinking")
|
val sheet = workbook.createSheet("LanguageLink")
|
||||||
val headerRow = sheet.createRow(0)
|
val headerRow = sheet.createRow(0)
|
||||||
val headers = arrayOf("Index", "TAG", "Language")
|
val headers = arrayOf("Index", "TAG", "Language")
|
||||||
for ((colIndex, header) in headers.withIndex()) {
|
for ((colIndex, header) in headers.withIndex()) {
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import codes.Somecodes.Companion.ValidIPV4
|
|||||||
import codes.Somecodes.Companion.ValidScheduleDay
|
import codes.Somecodes.Companion.ValidScheduleDay
|
||||||
import codes.Somecodes.Companion.ValidScheduleTime
|
import codes.Somecodes.Companion.ValidScheduleTime
|
||||||
import codes.Somecodes.Companion.ValidString
|
import codes.Somecodes.Companion.ValidString
|
||||||
|
import codes.Somecodes.Companion.ValidStrings
|
||||||
import com.fasterxml.jackson.databind.JsonNode
|
import com.fasterxml.jackson.databind.JsonNode
|
||||||
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
|
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
|
||||||
import content.Category
|
import content.Category
|
||||||
@@ -90,6 +91,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
it.sessionAttribute("user", user.first)
|
it.sessionAttribute("user", user.first)
|
||||||
//println("User ${user.first} logged in")
|
//println("User ${user.first} logged in")
|
||||||
// Redirect to home page
|
// Redirect to home page
|
||||||
|
//db.Add_Log("WEB", "User ${user.first} logged in")
|
||||||
it.redirect("home.html")
|
it.redirect("home.html")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -281,6 +283,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.soundDB.Add(addvalue)) {
|
if (db.soundDB.Add(addvalue)) {
|
||||||
db.soundDB.Resort()
|
db.soundDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Added Sound Bank: $addvalue")
|
||||||
} else it.status(500)
|
} else it.status(500)
|
||||||
.result(objectmapper.writeValueAsString(resultMessage("Failed to add soundbank to database")))
|
.result(objectmapper.writeValueAsString(resultMessage("Failed to add soundbank to database")))
|
||||||
} else it.status(400)
|
} else it.status(400)
|
||||||
@@ -298,6 +301,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.soundDB.Clear()) {
|
if (db.soundDB.Clear()) {
|
||||||
db.soundDB.Get()
|
db.soundDB.Get()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Clear Sound Bank table")
|
||||||
} else {
|
} else {
|
||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate soundbank table")))
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate soundbank table")))
|
||||||
}
|
}
|
||||||
@@ -311,6 +315,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.soundDB.DeleteByIndex(index.toInt())) {
|
if (db.soundDB.DeleteByIndex(index.toInt())) {
|
||||||
db.soundDB.Resort()
|
db.soundDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Deleted Sound Bank with index $index")
|
||||||
} else {
|
} else {
|
||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete soundbank with index $index")))
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete soundbank with index $index")))
|
||||||
}
|
}
|
||||||
@@ -380,6 +385,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.soundDB.UpdateByIndex(index.toInt(), sb)) {
|
if (db.soundDB.UpdateByIndex(index.toInt(), sb)) {
|
||||||
db.soundDB.Resort()
|
db.soundDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Updated Soundbank $sb")
|
||||||
} else it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to update soundbank with index $index")))
|
} else it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to update soundbank with index $index")))
|
||||||
} else it.status(400)
|
} else it.status(400)
|
||||||
.result(objectmapper.writeValueAsString(resultMessage("Nothing has changed for soundbank with index $index")))
|
.result(objectmapper.writeValueAsString(resultMessage("Nothing has changed for soundbank with index $index")))
|
||||||
@@ -449,6 +455,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.messageDB.Add(mb)){
|
if (db.messageDB.Add(mb)){
|
||||||
db.messageDB.Resort()
|
db.messageDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Added Messagebank: $mb")
|
||||||
} else it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to add messagebank to database")))
|
} else it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to add messagebank to database")))
|
||||||
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Message_TAGS")))
|
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Message_TAGS")))
|
||||||
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Message_Detail")))
|
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Message_Detail")))
|
||||||
@@ -462,6 +469,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.messageDB.Clear()) {
|
if (db.messageDB.Clear()) {
|
||||||
db.messageDB.Get()
|
db.messageDB.Get()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Clear Message Bank table")
|
||||||
} else {
|
} else {
|
||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate messagebank table")))
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate messagebank table")))
|
||||||
}
|
}
|
||||||
@@ -475,6 +483,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.messageDB.DeleteByIndex(index.toInt())) {
|
if (db.messageDB.DeleteByIndex(index.toInt())) {
|
||||||
db.messageDB.Resort()
|
db.messageDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Deleted Message Bank with index $index")
|
||||||
} else {
|
} else {
|
||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete messagebank with index $index")))
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete messagebank with index $index")))
|
||||||
}
|
}
|
||||||
@@ -535,6 +544,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.messageDB.UpdateByIndex(index.toInt(), mb)) {
|
if (db.messageDB.UpdateByIndex(index.toInt(), mb)) {
|
||||||
db.messageDB.Resort()
|
db.messageDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Updated Messagebank $mb")
|
||||||
} else it.status(500)
|
} else it.status(500)
|
||||||
.result(objectmapper.writeValueAsString(resultMessage("Failed to update messagebank with index $index")))
|
.result(objectmapper.writeValueAsString(resultMessage("Failed to update messagebank with index $index")))
|
||||||
} else it.status(400)
|
} else it.status(400)
|
||||||
@@ -595,6 +605,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.languageDB.Add(newvalue)){
|
if (db.languageDB.Add(newvalue)){
|
||||||
db.languageDB.Resort()
|
db.languageDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Added Language Link: $newvalue")
|
||||||
} else {
|
} else {
|
||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to add language link to database")))
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to add language link to database")))
|
||||||
//println("Failed to add language link to database")
|
//println("Failed to add language link to database")
|
||||||
@@ -617,6 +628,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.languageDB.Clear()) {
|
if (db.languageDB.Clear()) {
|
||||||
db.languageDB.Resort()
|
db.languageDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Clear Language Link table")
|
||||||
} else {
|
} else {
|
||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate language link table")))
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate language link table")))
|
||||||
}
|
}
|
||||||
@@ -630,6 +642,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.languageDB.DeleteByIndex(index.toInt())) {
|
if (db.languageDB.DeleteByIndex(index.toInt())) {
|
||||||
db.languageDB.Resort()
|
db.languageDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Deleted Language Link with index $index")
|
||||||
} else {
|
} else {
|
||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete language link with index $index")))
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete language link with index $index")))
|
||||||
}
|
}
|
||||||
@@ -664,6 +677,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.languageDB.UpdateByIndex(index.toInt(), ll)) {
|
if (db.languageDB.UpdateByIndex(index.toInt(), ll)) {
|
||||||
db.languageDB.Resort()
|
db.languageDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Updated Language Link $ll")
|
||||||
} else it.status(500)
|
} else it.status(500)
|
||||||
.result(objectmapper.writeValueAsString(resultMessage("Failed to update language link with index $index")))
|
.result(objectmapper.writeValueAsString(resultMessage("Failed to update language link with index $index")))
|
||||||
} else it.status(400)
|
} else it.status(400)
|
||||||
@@ -716,6 +730,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.scheduleDB.Clear()) {
|
if (db.scheduleDB.Clear()) {
|
||||||
db.scheduleDB.Get()
|
db.scheduleDB.Get()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Clear Schedule Bank table")
|
||||||
} else {
|
} else {
|
||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate schedulebank table")))
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate schedulebank table")))
|
||||||
}
|
}
|
||||||
@@ -754,9 +769,9 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
language
|
language
|
||||||
)
|
)
|
||||||
if (db.scheduleDB.Add(newvalue)){
|
if (db.scheduleDB.Add(newvalue)){
|
||||||
|
|
||||||
db.scheduleDB.Resort()
|
db.scheduleDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Added Schedule Bank: $newvalue")
|
||||||
} else it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to add schedule to database")))
|
} 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("Invalid Language")))
|
||||||
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Contains unsupported BroadcastZones")))
|
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Contains unsupported BroadcastZones")))
|
||||||
@@ -776,6 +791,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.scheduleDB.DeleteByIndex(index.toInt())) {
|
if (db.scheduleDB.DeleteByIndex(index.toInt())) {
|
||||||
db.scheduleDB.Resort()
|
db.scheduleDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Deleted Schedule Bank with index $index")
|
||||||
} else {
|
} else {
|
||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete schedule with index $index")))
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete schedule with index $index")))
|
||||||
}
|
}
|
||||||
@@ -855,6 +871,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.scheduleDB.UpdateByIndex(index.toInt(), sb)) {
|
if (db.scheduleDB.UpdateByIndex(index.toInt(), sb)) {
|
||||||
db.scheduleDB.Resort()
|
db.scheduleDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Updated Schedule : $sb")
|
||||||
} else it.status(500)
|
} else it.status(500)
|
||||||
.result(objectmapper.writeValueAsString(resultMessage("Failed to update schedule with index $index")))
|
.result(objectmapper.writeValueAsString(resultMessage("Failed to update schedule with index $index")))
|
||||||
} else it.status(400)
|
} else it.status(400)
|
||||||
@@ -890,15 +907,185 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
db.scheduleDB.Resort()
|
db.scheduleDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
} else {
|
} else {
|
||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to import schedulebank from XLSX")))
|
it.status(500)
|
||||||
|
.result(objectmapper.writeValueAsString(resultMessage("Failed to import schedulebank from XLSX")))
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
it.status(400)
|
||||||
|
.result(objectmapper.writeValueAsString(resultMessage("Invalid XLSX file")))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
path("UserManagement") {
|
||||||
|
get("List") {
|
||||||
|
it.result(objectmapper.writeValueAsString(db.userDB.List))
|
||||||
|
}
|
||||||
|
delete("List") {
|
||||||
|
if (db.userDB.Clear()) {
|
||||||
|
db.userDB.Get()
|
||||||
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Clear User Management table")
|
||||||
|
} else {
|
||||||
|
it.status(500)
|
||||||
|
.result(objectmapper.writeValueAsString(resultMessage("Failed to truncate user table")))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
post("Add") { ctx ->
|
||||||
|
val json: JsonNode = objectmapper.readTree(ctx.body())
|
||||||
|
val username = json.get("username").asText("")
|
||||||
|
val password = json.get("password").asText("")
|
||||||
|
val location = json.get("location").asText("")
|
||||||
|
val airline_tags = json.get("airline_tags").asText("")
|
||||||
|
val city_tags = json.get("city_tags").asText("")
|
||||||
|
val messagebank_ann_id = json.get("messagebank_ann_id").asText("")
|
||||||
|
val broadcastzones = json.get("broadcastzones").asText("")
|
||||||
|
if (ValidStrings(listOf(username, password, location, airline_tags, city_tags, messagebank_ann_id, broadcastzones))) {
|
||||||
|
if (!db.Username_exists(username)) {
|
||||||
|
// check apakah ada airline tag yang tidak ada di soundbank
|
||||||
|
val atags = airline_tags.split(";").map { it.trim() }
|
||||||
|
.filter { it.isNotEmpty() }.distinct()
|
||||||
|
val airlinetags = db.Get_AirlineCode_Tags()
|
||||||
|
if (atags.all { tag -> airlinetags.any { it == tag } }) {
|
||||||
|
// check apakah ada city tag yang tidak ada di soundbank
|
||||||
|
val ctags = city_tags.split(";").map { it.trim() }
|
||||||
|
.filter { it.isNotEmpty() }.distinct()
|
||||||
|
val citytags = db.Get_City_Tags()
|
||||||
|
if (ctags.all { tag -> citytags.any { it == tag } }) {
|
||||||
|
val bzdesc =
|
||||||
|
broadcastzones.split(";").map { it.trim() }
|
||||||
|
.filter { it.isNotEmpty() }.distinct()
|
||||||
|
val bzlist = db.Get_BroadcastZone_List()
|
||||||
|
if (bzdesc.all { desc -> bzlist.any { it == desc } }) {
|
||||||
|
val mbids = messagebank_ann_id.split(";")
|
||||||
|
.map { it.trim() }
|
||||||
|
.filter { it.isNotEmpty() }.distinct()
|
||||||
|
.mapNotNull { it.toUIntOrNull() }
|
||||||
|
val mbankids = db.Get_MessageID_List()
|
||||||
|
if (mbids.all { id -> mbankids.any { it == id } }) {
|
||||||
|
// semua valid, tambain ke database
|
||||||
|
val newuser = UserDB(
|
||||||
|
0u,
|
||||||
|
username,
|
||||||
|
password,
|
||||||
|
location,
|
||||||
|
airline_tags,
|
||||||
|
city_tags,
|
||||||
|
messagebank_ann_id,
|
||||||
|
broadcastzones
|
||||||
|
)
|
||||||
|
if (db.userDB.Add(newuser)) {
|
||||||
|
db.userDB.Resort()
|
||||||
|
ctx.result(objectmapper.writeValueAsString(resultMessage("OK") ))
|
||||||
|
db.Add_Log("AAS", "Added User: $newuser")
|
||||||
|
} else ctx.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to add user to database")))
|
||||||
|
} else ctx.status(400).result(objectmapper.writeValueAsString(resultMessage("Some ANN_ID not found in Messagebank") ))
|
||||||
|
} else ctx.status(400).result(objectmapper.writeValueAsString(resultMessage("Some broadcast zone tags not found in soundbank")) )
|
||||||
|
} else ctx.status(400).result(objectmapper.writeValueAsString(resultMessage("Some city tags not found in soundbank")))
|
||||||
|
} else ctx.status(400).result(objectmapper.writeValueAsString(resultMessage("Some airline tags not found in soundbank")))
|
||||||
|
} else ctx.status(400).result(objectmapper.writeValueAsString("Username already exists"))
|
||||||
|
} else ctx.status(400).result(objectmapper.writeValueAsString(resultMessage("Not all fields have value")))
|
||||||
|
}
|
||||||
|
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.userDB.DeleteByIndex(index.toInt())) {
|
||||||
|
db.userDB.Resort()
|
||||||
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Deleted User with index $index")
|
||||||
|
} else it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete user with index $index")))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
patch("UpdateByIndex/{index}"){ ctx ->
|
||||||
|
// update by index
|
||||||
|
val index = ctx.pathParam("index").toUIntOrNull()
|
||||||
|
if (index!=null){
|
||||||
|
val user = db.userDB.List.find { xx -> xx.index == index }
|
||||||
|
if (user!=null){
|
||||||
|
val json : JsonNode = objectmapper.readTree(ctx.body())
|
||||||
|
if (!json.isEmpty){
|
||||||
|
val _username = json.get("username").asText("")
|
||||||
|
val _password = json.get("password").asText("")
|
||||||
|
val _location = json.get("location").asText("")
|
||||||
|
val _airline_tags = json.get("airline_tags").asText("")
|
||||||
|
val _city_tags = json.get("city_tags").asText("")
|
||||||
|
val _messagebank_ann_id = json.get("messagebank_ann_id").asText("")
|
||||||
|
val _broadcastzones = json.get("broadcastzones").asText("")
|
||||||
|
if (ValidStrings(listOf(_username, _password, _location, _airline_tags, _city_tags, _messagebank_ann_id, _broadcastzones))) {
|
||||||
|
val _otherusername = db.userDB.List.find { xx -> xx.username.equals(_username, true) && xx.index != index }
|
||||||
|
if (_otherusername == null) {
|
||||||
|
// belum ada user lain yang pakai username ini
|
||||||
|
val atags = _airline_tags.split(";").map { it.trim() }.filter { it.isNotEmpty() }.distinct()
|
||||||
|
val ctags = _city_tags.split(";").map { it.trim() }.filter { it.isNotEmpty() }.distinct()
|
||||||
|
val msgids = _messagebank_ann_id.split(";").map { it.trim() }.filter { it.isNotEmpty() }.distinct().mapNotNull { it.toUIntOrNull() }
|
||||||
|
val bzdesc = _broadcastzones.split(";").map { it.trim() }.filter { it.isNotEmpty() }.distinct()
|
||||||
|
|
||||||
|
val airline_tags = db.Get_AirlineCode_Tags()
|
||||||
|
val city_tags = db.Get_City_Tags()
|
||||||
|
val msgbankids = db.Get_MessageID_List()
|
||||||
|
val bzlist = db.Get_BroadcastZone_List()
|
||||||
|
if (atags.all { tag -> airline_tags.any { it == tag } }) {
|
||||||
|
if (ctags.all { tag -> city_tags.any { it == tag } }) {
|
||||||
|
if (msgids.all { tag -> msgbankids.any { it == tag } }) {
|
||||||
|
if (bzdesc.all { tag -> bzlist.any { it == tag } }) {
|
||||||
|
val editeduser = UserDB(index, _username, _password, _location, _airline_tags, _city_tags, _messagebank_ann_id, _broadcastzones)
|
||||||
|
if (!user.isEqual(editeduser)){
|
||||||
|
if (db.userDB.UpdateByIndex(index.toInt(), editeduser)){
|
||||||
|
db.userDB.Resort()
|
||||||
|
ctx.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Updated User : $editeduser")
|
||||||
|
} else ctx.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to update user with index $index")))
|
||||||
|
} else ctx.status(400).result(objectmapper.writeValueAsString(resultMessage("Nothing has changed for user with index $index")))
|
||||||
|
} else ctx.status(400).result(objectmapper.writeValueAsString(resultMessage("Some broadcast zone is not found in Broadcast Zone list")))
|
||||||
|
} else ctx.status(400).result(objectmapper.writeValueAsString(resultMessage("Some ANN_ID not found in Messagebank")))
|
||||||
|
} else ctx.status(400).result(objectmapper.writeValueAsString(resultMessage("Some city tags not found in soundbank")))
|
||||||
|
} else ctx.status(400).result(objectmapper.writeValueAsString("Some airline tags not found in soundbank"))
|
||||||
|
} else ctx.status(400).result(objectmapper.writeValueAsString(resultMessage("Username already exists for another user")))
|
||||||
|
} else ctx.status(400).result(objectmapper.writeValueAsString(resultMessage("Not all fiels have value")))
|
||||||
|
} else ctx.status(400).result(objectmapper.writeValueAsString(resultMessage("UpdateByIndex with index=$index has empty body")))
|
||||||
|
} else ctx.status(400).result(objectmapper.writeValueAsString(resultMessage("User with index $index not found")))
|
||||||
|
} else ctx.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid index")))
|
||||||
|
}
|
||||||
|
get("ExportXLSX") {
|
||||||
|
val xlsxdata = db.userDB.Export_XLSX()
|
||||||
|
if (xlsxdata != null) {
|
||||||
|
it.header(
|
||||||
|
"Content-Type",
|
||||||
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
||||||
|
)
|
||||||
|
it.header("Content-Disposition", "attachment; filename=\"userdb.xlsx\"")
|
||||||
|
it.outputStream().use { out ->
|
||||||
|
xlsxdata.write(out)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
it.status(500)
|
||||||
|
.result(objectmapper.writeValueAsString(resultMessage("Failed to export user table to XLSX")))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
post("ImportXLSX") {
|
||||||
|
val uploaded = it.uploadedFile("file")
|
||||||
|
if (uploaded == null) {
|
||||||
|
it.status(400)
|
||||||
|
.result(objectmapper.writeValueAsString(resultMessage("No file uploaded")))
|
||||||
|
return@post
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
val xlsx = XSSFWorkbook(uploaded.content())
|
||||||
|
if (db.userDB.Import_XLSX(xlsx)) {
|
||||||
|
db.userDB.Resort()
|
||||||
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
} else {
|
||||||
|
it.status(500)
|
||||||
|
.result(objectmapper.writeValueAsString(resultMessage("Failed to import user table from XLSX")))
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid XLSX file")))
|
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid XLSX file")))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Kirim list message dan broadcast zones untuk ADD/Edit schedule
|
//TODO kirim list message dan broadcast zones untuk ADD/Edit schedule
|
||||||
//TODO add at js file for messagebank and broadcast zones values
|
|
||||||
get("GetMessageAndBroadcastZones") {
|
get("GetMessageAndBroadcastZones") {
|
||||||
val result = object {
|
val result = object {
|
||||||
val messages = db.messageDB.List
|
val messages = db.messageDB.List
|
||||||
@@ -967,24 +1154,20 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
}
|
}
|
||||||
path("BroadcastZones"){
|
path("BroadcastZones"){
|
||||||
get("List") {
|
get("List") {
|
||||||
// TODO : temporary, convert BroadcastZones to BroadcastZonesHtml, karena harus revisi javascript di Bootstrap Studio
|
|
||||||
// val newlist: ArrayList<BroadcastZonesHtml> = db.broadcastDB.List.map { xx ->
|
|
||||||
// BroadcastZonesHtml(
|
|
||||||
// xx.index,
|
|
||||||
// xx.description,
|
|
||||||
// xx.SoundChannel,
|
|
||||||
// xx.id,
|
|
||||||
// xx.bp
|
|
||||||
// )
|
|
||||||
// } as ArrayList<BroadcastZonesHtml>
|
|
||||||
|
|
||||||
it.result(MariaDB.ArrayListtoString(db.broadcastDB.List))
|
it.result(MariaDB.ArrayListtoString(db.broadcastDB.List))
|
||||||
}
|
}
|
||||||
|
get("BroadcastZoneDescriptions") { ctx ->
|
||||||
|
val value = db.broadcastDB.List
|
||||||
|
.distinctBy { it.description }
|
||||||
|
.map { it.description }
|
||||||
|
ctx.result(objectmapper.writeValueAsString(value))
|
||||||
|
}
|
||||||
delete("List") {
|
delete("List") {
|
||||||
// truncate broadcast zones table
|
// truncate broadcast zones table
|
||||||
if (db.broadcastDB.Clear()) {
|
if (db.broadcastDB.Clear()) {
|
||||||
db.broadcastDB.Get()
|
db.broadcastDB.Get()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Clear Broadcast Zones table")
|
||||||
} else {
|
} else {
|
||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate broadcast zones table")))
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate broadcast zones table")))
|
||||||
}
|
}
|
||||||
@@ -1003,6 +1186,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.broadcastDB.Add(newbp)){
|
if (db.broadcastDB.Add(newbp)){
|
||||||
db.broadcastDB.Resort()
|
db.broadcastDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS","Added Broadcast Zone: $newbp")
|
||||||
} else it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to add broadcast zone to database")))
|
} else it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to add broadcast zone to database")))
|
||||||
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Relay")))
|
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Relay")))
|
||||||
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Box")))
|
} else it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid Box")))
|
||||||
@@ -1018,6 +1202,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.broadcastDB.DeleteByIndex(index.toInt())) {
|
if (db.broadcastDB.DeleteByIndex(index.toInt())) {
|
||||||
db.broadcastDB.Resort()
|
db.broadcastDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Deleted Broadcast Zone with index $index")
|
||||||
} else {
|
} else {
|
||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete broadcast zone with index $index")))
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete broadcast zone with index $index")))
|
||||||
}
|
}
|
||||||
@@ -1062,6 +1247,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.broadcastDB.UpdateByIndex(index.toInt(), bz)) {
|
if (db.broadcastDB.UpdateByIndex(index.toInt(), bz)) {
|
||||||
db.broadcastDB.Resort()
|
db.broadcastDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Updated Broadcast Zone : $bz")
|
||||||
} else it.status(500)
|
} else it.status(500)
|
||||||
.result(objectmapper.writeValueAsString(resultMessage("Failed to update broadcast zone with index $index")))
|
.result(objectmapper.writeValueAsString(resultMessage("Failed to update broadcast zone with index $index")))
|
||||||
} else it.status(400)
|
} else it.status(400)
|
||||||
@@ -1110,11 +1296,15 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
get("List"){
|
get("List"){
|
||||||
it.result(MariaDB.ArrayListtoString(db.soundchannelDB.List))
|
it.result(MariaDB.ArrayListtoString(db.soundchannelDB.List))
|
||||||
}
|
}
|
||||||
|
get("SoundChannelDescriptions") {
|
||||||
|
it.result(objectmapper.writeValueAsString(db.Get_SoundChannel_List()))
|
||||||
|
}
|
||||||
delete("List") {
|
delete("List") {
|
||||||
// truncate sound channel table
|
// truncate sound channel table
|
||||||
if (db.soundchannelDB.Clear()) {
|
if (db.soundchannelDB.Clear()) {
|
||||||
db.soundchannelDB.Get()
|
db.soundchannelDB.Get()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Clear Sound Channel table")
|
||||||
} else {
|
} else {
|
||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate sound channel table")))
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate sound channel table")))
|
||||||
}
|
}
|
||||||
@@ -1148,25 +1338,28 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
} else {
|
} else {
|
||||||
|
|
||||||
// cek apakah ada soundchannel lain yang pakai ip dan channel yang sama
|
// cek apakah ada soundchannel lain yang pakai ip dan channel yang sama
|
||||||
if (db.soundchannelDB.List.any { xx -> xx.index != index && _ip.equals(xx.ip) && _channel.equals(xx.channel, true) }) {
|
val othersc = db.soundchannelDB.List.filter { sc -> sc.ip == _ip }.filter { sc -> sc.index != index }
|
||||||
println("Another sound channel already uses IP $_ip and channel $_channel")
|
if (othersc.isNotEmpty()){
|
||||||
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Another sound channel already uses IP $_ip and channel $_channel")))
|
it.status(400).result(objectmapper.writeValueAsString(resultMessage("This IP address is already used by another sound channel")))
|
||||||
return@patch
|
} else {
|
||||||
}
|
|
||||||
|
|
||||||
// ada sesuatu yang ganti
|
// ada sesuatu yang ganti
|
||||||
val newsc = SoundChannel(0u, _channel, _ip)
|
val newsc = SoundChannel(0u, _channel, _ip)
|
||||||
if (db.soundchannelDB.UpdateByIndex(index.toInt(), newsc)) {
|
if (db.soundchannelDB.UpdateByIndex(index.toInt(), newsc)) {
|
||||||
println("Updated sound channel with index $index")
|
println("Updated sound channel with index $index")
|
||||||
|
|
||||||
db.soundchannelDB.Resort()
|
db.soundchannelDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Updated Sound Channel : $newsc")
|
||||||
} else {
|
} else {
|
||||||
println("Failed to update sound channel with index $index")
|
println("Failed to update sound channel with index $index")
|
||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to update sound channel with index $index")))
|
it.status(500)
|
||||||
return@patch
|
.result(objectmapper.writeValueAsString(resultMessage("Failed to update sound channel with index $index")))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
println("Invalid IP address")
|
println("Invalid IP address")
|
||||||
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid IP address")))
|
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid IP address")))
|
||||||
@@ -1181,7 +1374,6 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
get("ExportXLSX"){
|
get("ExportXLSX"){
|
||||||
val xlsxdata = db.soundchannelDB.Export_XLSX()
|
val xlsxdata = db.soundchannelDB.Export_XLSX()
|
||||||
@@ -1213,23 +1405,23 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to import sound channel from XLSX")))
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to import sound channel from XLSX")))
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
it.status(400).result(objectmapper.writeValueAsString(resultMessage("Invalid XLSX file")))
|
it.status(400)
|
||||||
|
.result(objectmapper.writeValueAsString(resultMessage("Invalid XLSX file")))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Steph : coba tambah untuk QueuePaging Table. Belum ada di JS file(?)
|
// Steph : coba tambah untuk QueuePaging Table. Belum ada di JS file(?)
|
||||||
path("QueuePaging"){
|
path("QueuePaging"){
|
||||||
|
|
||||||
get("List"){
|
get("List"){
|
||||||
it.result(MariaDB.ArrayListtoString(db.queuepagingDB.List))
|
it.result(MariaDB.ArrayListtoString(db.queuepagingDB.List))
|
||||||
}
|
}
|
||||||
|
|
||||||
delete("List"){
|
delete("List"){
|
||||||
// truncate queue paging table
|
// truncate queue paging table
|
||||||
if (db.queuepagingDB.Clear()) {
|
if (db.queuepagingDB.Clear()) {
|
||||||
db.queuepagingDB.Get()
|
db.queuepagingDB.Get()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Clear queue paging table")
|
||||||
} else {
|
} else {
|
||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate queue paging table")))
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate queue paging table")))
|
||||||
}
|
}
|
||||||
@@ -1243,6 +1435,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.queuepagingDB.DeleteByIndex(index.toInt())) {
|
if (db.queuepagingDB.DeleteByIndex(index.toInt())) {
|
||||||
db.queuepagingDB.Resort()
|
db.queuepagingDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Deleted queue paging with index $index")
|
||||||
} else {
|
} else {
|
||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete queue paging with index $index")))
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete queue paging with index $index")))
|
||||||
}
|
}
|
||||||
@@ -1254,21 +1447,20 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
|
|
||||||
// Steph : coba tambah untuk QueueTable Table. Belum ada di JS file(?)
|
// Steph : coba tambah untuk QueueTable Table. Belum ada di JS file(?)
|
||||||
path("QueueTable"){
|
path("QueueTable"){
|
||||||
|
|
||||||
get("List"){
|
get("List"){
|
||||||
it.result(MariaDB.ArrayListtoString(db.queuetableDB.List))
|
it.result(MariaDB.ArrayListtoString(db.queuetableDB.List))
|
||||||
}
|
}
|
||||||
|
|
||||||
delete("List"){
|
delete("List"){
|
||||||
// truncate queue table
|
// truncate queue table
|
||||||
if (db.queuetableDB.Clear()) {
|
if (db.queuetableDB.Clear()) {
|
||||||
db.queuetableDB.Get()
|
db.queuetableDB.Get()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Clear Automatic Queue Table")
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate queue sound table")))
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to truncate queue sound table")))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
delete("DeleteByIndex/{index}") {
|
delete("DeleteByIndex/{index}") {
|
||||||
// delete by index
|
// delete by index
|
||||||
val index = it.pathParam("index").toUIntOrNull()
|
val index = it.pathParam("index").toUIntOrNull()
|
||||||
@@ -1278,6 +1470,7 @@ class WebApp(val listenPort: Int, val userlist: List<Pair<String, String>>) {
|
|||||||
if (db.queuetableDB.DeleteByIndex(index.toInt())) {
|
if (db.queuetableDB.DeleteByIndex(index.toInt())) {
|
||||||
db.queuetableDB.Resort()
|
db.queuetableDB.Resort()
|
||||||
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
it.result(objectmapper.writeValueAsString(resultMessage("OK")))
|
||||||
|
db.Add_Log("AAS", "Deleted Automatic Queue Table with index $index")
|
||||||
} else {
|
} else {
|
||||||
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete queue sound with index $index")))
|
it.status(500).result(objectmapper.writeValueAsString(resultMessage("Failed to delete queue sound with index $index")))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user