forked from Olympic/NTO-2025-Client-Android-backend
123
This commit is contained in:
@@ -1,16 +0,0 @@
|
||||
package com.example
|
||||
|
||||
import io.ktor.serialization.kotlinx.json.json
|
||||
import io.ktor.server.application.*
|
||||
import io.ktor.server.plugins.contentnegotiation.ContentNegotiation
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
io.ktor.server.netty.EngineMain.main(args)
|
||||
}
|
||||
|
||||
fun Application.module() {
|
||||
install(ContentNegotiation) {
|
||||
json()
|
||||
}
|
||||
configureRouting()
|
||||
}
|
||||
37
src/main/kotlin/Main.kt
Normal file
37
src/main/kotlin/Main.kt
Normal file
@@ -0,0 +1,37 @@
|
||||
package com.example
|
||||
|
||||
import com.example.di.Dependencies
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.delay
|
||||
|
||||
fun main() = runBlocking {
|
||||
val viewModel = Dependencies.createBookingViewModel()
|
||||
|
||||
// Настраиваем колбэки
|
||||
viewModel.onBookingsUpdated = { bookings ->
|
||||
println("Бронирования обновлены:")
|
||||
bookings.forEach { booking ->
|
||||
println(" Комната: ${booking.room}, Время: ${booking.time}")
|
||||
}
|
||||
}
|
||||
|
||||
viewModel.onError = { error ->
|
||||
if (error != null) {
|
||||
println("Ошибка: $error")
|
||||
}
|
||||
}
|
||||
|
||||
// Загружаем текущие бронирования
|
||||
println("Загружаем бронирования...")
|
||||
viewModel.loadBookings()
|
||||
|
||||
delay(1000) // Ждём загрузки
|
||||
|
||||
// Добавляем новое бронирование
|
||||
println("\nДобавляем новое бронирование...")
|
||||
viewModel.addBooking("505.6", "14:00 - 16:00")
|
||||
|
||||
delay(1000) // Ждём обработки
|
||||
|
||||
viewModel.dispose()
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import io.ktor.http.content.PartData
|
||||
import io.ktor.http.content.forEachPart
|
||||
import io.ktor.server.application.*
|
||||
import io.ktor.server.request.receiveMultipart
|
||||
import io.ktor.server.request.receiveParameters
|
||||
import io.ktor.server.response.*
|
||||
import io.ktor.server.routing.*
|
||||
|
||||
@@ -27,38 +28,29 @@ fun Application.configureRouting() {
|
||||
get("/user") {
|
||||
call.respond(UserDto(booking = booking))
|
||||
}
|
||||
|
||||
// ЗАМЕНИТЕ ЭТОТ БЛОК (от post("/book") до закрывающей скобки):
|
||||
post("/book") {
|
||||
var room = ""
|
||||
var time = ""
|
||||
val multipartData = call.receiveMultipart()
|
||||
try {
|
||||
// Получаем данные в формате x-www-form-urlencoded
|
||||
val parameters = call.receiveParameters()
|
||||
val room = parameters["room"]?.trim() ?: ""
|
||||
val time = parameters["time"]?.trim() ?: ""
|
||||
|
||||
multipartData.forEachPart { part ->
|
||||
try {
|
||||
if (part !is PartData.FormItem) return@forEachPart
|
||||
when (part.name) {
|
||||
"room" -> {
|
||||
room = part.value.trim()
|
||||
}
|
||||
|
||||
"time" -> {
|
||||
time = part.value.trim()
|
||||
}
|
||||
|
||||
else -> Unit
|
||||
}
|
||||
} finally {
|
||||
part.dispose()
|
||||
if (room.isEmpty() || time.isEmpty()) {
|
||||
call.respond(
|
||||
HttpStatusCode.BadRequest,
|
||||
ErrorDto(error = "Fields 'room' and 'time' are required")
|
||||
)
|
||||
} else {
|
||||
booking.add(BookingDto(room = room, time = time))
|
||||
call.respond(HttpStatusCode.OK, mapOf("success" to true))
|
||||
}
|
||||
}
|
||||
|
||||
if (room.isEmpty() && time.isEmpty()) {
|
||||
} catch (e: Exception) {
|
||||
call.respond(
|
||||
HttpStatusCode.BadRequest,
|
||||
ErrorDto(error = "Field is empty")
|
||||
ErrorDto(error = "Invalid request format")
|
||||
)
|
||||
} else {
|
||||
booking.add(BookingDto(room = room, time = time))
|
||||
call.respond(HttpStatusCode.OK)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user