diff --git a/src/main/kotlin/com/android/trisolarisserver/controller/Rooms.kt b/src/main/kotlin/com/android/trisolarisserver/controller/Rooms.kt index ce8f3e0..0dedb6a 100644 --- a/src/main/kotlin/com/android/trisolarisserver/controller/Rooms.kt +++ b/src/main/kotlin/com/android/trisolarisserver/controller/Rooms.kt @@ -189,32 +189,52 @@ class Rooms( response.setHeader("X-Room-Create-Step", "member_ok") } - if (roomRepo.existsByPropertyIdAndRoomNumber(propertyId, request.roomNumber)) { - throw ResponseStatusException(HttpStatus.CONFLICT, "Room number already exists for property") - } + try { + if (debugAuth == "1") { + response.setHeader("X-Room-Create-Step", "check_duplicate") + } + if (roomRepo.existsByPropertyIdAndRoomNumber(propertyId, request.roomNumber)) { + throw ResponseStatusException(HttpStatus.CONFLICT, "Room number already exists for property") + } - val property = propertyRepo.findById(propertyId).orElseThrow { - ResponseStatusException(HttpStatus.NOT_FOUND, "Property not found") - } - val roomType = resolveRoomType(propertyId, request) + if (debugAuth == "1") { + response.setHeader("X-Room-Create-Step", "load_property") + } + val property = propertyRepo.findById(propertyId).orElseThrow { + ResponseStatusException(HttpStatus.NOT_FOUND, "Property not found") + } + if (debugAuth == "1") { + response.setHeader("X-Room-Create-Step", "resolve_room_type") + } + val roomType = resolveRoomType(propertyId, request) - val room = Room( - property = property, - roomType = roomType, - roomNumber = request.roomNumber, - floor = request.floor, - hasNfc = request.hasNfc, - active = request.active, - maintenance = request.maintenance, - notes = request.notes - ) + val room = Room( + property = property, + roomType = roomType, + roomNumber = request.roomNumber, + floor = request.floor, + hasNfc = request.hasNfc, + active = request.active, + maintenance = request.maintenance, + notes = request.notes + ) - val saved = roomRepo.save(room).toRoomResponse() - if (debugAuth == "1") { - response.setHeader("X-Room-Create-Step", "saved") + if (debugAuth == "1") { + response.setHeader("X-Room-Create-Step", "save_room") + } + val saved = roomRepo.save(room).toRoomResponse() + if (debugAuth == "1") { + response.setHeader("X-Room-Create-Step", "saved") + } + roomBoardEvents.emit(propertyId) + return saved + } catch (ex: Exception) { + if (debugAuth == "1") { + val msg = ex.message?.take(200) ?: "" + response.setHeader("X-Room-Create-Exception", "${ex::class.java.simpleName}:$msg") + } + throw ex } - roomBoardEvents.emit(propertyId) - return saved } @PutMapping("/{roomId}")