From bcfe9fbf2a6cfb88a97231fdb8d10246bd192ef3 Mon Sep 17 00:00:00 2001 From: androidlover5842 Date: Tue, 27 Jan 2026 17:24:42 +0530 Subject: [PATCH] Soft-disable room types instead of delete --- .../android/trisolarisserver/controller/RoomTypes.kt | 10 +++++----- .../trisolarisserver/controller/dto/RoomTypeDtos.kt | 2 ++ .../android/trisolarisserver/models/room/RoomType.kt | 3 +++ 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/com/android/trisolarisserver/controller/RoomTypes.kt b/src/main/kotlin/com/android/trisolarisserver/controller/RoomTypes.kt index 432e13a..c2ec5d1 100644 --- a/src/main/kotlin/com/android/trisolarisserver/controller/RoomTypes.kt +++ b/src/main/kotlin/com/android/trisolarisserver/controller/RoomTypes.kt @@ -72,6 +72,7 @@ class RoomTypes( maxOccupancy = request.maxOccupancy ?: 3, sqFeet = request.sqFeet, bathroomSqFeet = request.bathroomSqFeet, + active = request.active ?: true, otaAliases = request.otaAliases?.toMutableSet() ?: mutableSetOf() ) if (request.amenityIds != null) { @@ -115,6 +116,7 @@ class RoomTypes( roomType.maxOccupancy = request.maxOccupancy ?: roomType.maxOccupancy roomType.sqFeet = request.sqFeet ?: roomType.sqFeet roomType.bathroomSqFeet = request.bathroomSqFeet ?: roomType.bathroomSqFeet + roomType.active = request.active ?: roomType.active if (request.otaAliases != null) { roomType.otaAliases = request.otaAliases.toMutableSet() } @@ -137,11 +139,8 @@ class RoomTypes( val roomType = roomTypeRepo.findByIdAndPropertyId(roomTypeId, propertyId) ?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "Room type not found") - - if (roomRepo.existsByPropertyIdAndRoomTypeId(propertyId, roomTypeId)) { - throw ResponseStatusException(HttpStatus.CONFLICT, "Cannot delete room type with rooms") - } - roomTypeRepo.delete(roomType) + roomType.active = false + roomTypeRepo.save(roomType) } private fun requirePrincipal(principal: MyPrincipal?) { @@ -163,6 +162,7 @@ private fun RoomType.toResponse(): RoomTypeResponse { maxOccupancy = maxOccupancy, sqFeet = sqFeet, bathroomSqFeet = bathroomSqFeet, + active = active, otaAliases = otaAliases.toSet(), amenities = amenities.map { it.toResponse() }.toSet() ) diff --git a/src/main/kotlin/com/android/trisolarisserver/controller/dto/RoomTypeDtos.kt b/src/main/kotlin/com/android/trisolarisserver/controller/dto/RoomTypeDtos.kt index 8a6451a..65e7bed 100644 --- a/src/main/kotlin/com/android/trisolarisserver/controller/dto/RoomTypeDtos.kt +++ b/src/main/kotlin/com/android/trisolarisserver/controller/dto/RoomTypeDtos.kt @@ -9,6 +9,7 @@ data class RoomTypeUpsertRequest( val maxOccupancy: Int? = null, val sqFeet: Int? = null, val bathroomSqFeet: Int? = null, + val active: Boolean? = null, val otaAliases: Set? = null, val amenityIds: Set? = null ) @@ -22,6 +23,7 @@ data class RoomTypeResponse( val maxOccupancy: Int, val sqFeet: Int?, val bathroomSqFeet: Int?, + val active: Boolean, val otaAliases: Set, val amenities: Set ) diff --git a/src/main/kotlin/com/android/trisolarisserver/models/room/RoomType.kt b/src/main/kotlin/com/android/trisolarisserver/models/room/RoomType.kt index b999f78..1b2e188 100644 --- a/src/main/kotlin/com/android/trisolarisserver/models/room/RoomType.kt +++ b/src/main/kotlin/com/android/trisolarisserver/models/room/RoomType.kt @@ -38,6 +38,9 @@ class RoomType( @Column(name = "bathroom_sq_feet") var bathroomSqFeet: Int? = null, + @Column(name = "is_active", nullable = false) + var active: Boolean = true, + @ElementCollection(fetch = FetchType.EAGER) @CollectionTable( name = "room_type_alias",