This commit is contained in:
пользователь1
2025-12-12 09:35:48 +05:00
parent 8ccb1b60f2
commit 42d293a00b
5 changed files with 70 additions and 44 deletions

View File

@@ -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
View 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()
}

View File

@@ -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)
}
}
}