Prevent deleting amenities used by room types
All checks were successful
build-and-deploy / build-deploy (push) Successful in 27s
All checks were successful
build-and-deploy / build-deploy (push) Successful in 27s
This commit is contained in:
@@ -5,6 +5,7 @@ import com.android.trisolarisserver.controller.dto.AmenityUpsertRequest
|
|||||||
import com.android.trisolarisserver.models.room.RoomAmenity
|
import com.android.trisolarisserver.models.room.RoomAmenity
|
||||||
import com.android.trisolarisserver.repo.AppUserRepo
|
import com.android.trisolarisserver.repo.AppUserRepo
|
||||||
import com.android.trisolarisserver.repo.RoomAmenityRepo
|
import com.android.trisolarisserver.repo.RoomAmenityRepo
|
||||||
|
import com.android.trisolarisserver.repo.RoomTypeRepo
|
||||||
import com.android.trisolarisserver.security.MyPrincipal
|
import com.android.trisolarisserver.security.MyPrincipal
|
||||||
import org.springframework.http.HttpStatus
|
import org.springframework.http.HttpStatus
|
||||||
import org.springframework.security.core.annotation.AuthenticationPrincipal
|
import org.springframework.security.core.annotation.AuthenticationPrincipal
|
||||||
@@ -24,6 +25,7 @@ import java.util.UUID
|
|||||||
@RequestMapping("/amenities")
|
@RequestMapping("/amenities")
|
||||||
class RoomAmenities(
|
class RoomAmenities(
|
||||||
private val roomAmenityRepo: RoomAmenityRepo,
|
private val roomAmenityRepo: RoomAmenityRepo,
|
||||||
|
private val roomTypeRepo: RoomTypeRepo,
|
||||||
private val appUserRepo: AppUserRepo
|
private val appUserRepo: AppUserRepo
|
||||||
) {
|
) {
|
||||||
|
|
||||||
@@ -86,6 +88,9 @@ class RoomAmenities(
|
|||||||
val amenity = roomAmenityRepo.findById(amenityId).orElse(null)
|
val amenity = roomAmenityRepo.findById(amenityId).orElse(null)
|
||||||
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "Amenity not found")
|
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "Amenity not found")
|
||||||
|
|
||||||
|
if (roomTypeRepo.existsByAmenitiesId(amenityId)) {
|
||||||
|
throw ResponseStatusException(HttpStatus.CONFLICT, "Amenity is used by room types")
|
||||||
|
}
|
||||||
roomAmenityRepo.delete(amenity)
|
roomAmenityRepo.delete(amenity)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,4 +13,5 @@ interface RoomTypeRepo : JpaRepository<RoomType, UUID> {
|
|||||||
fun findByPropertyIdOrderByCode(propertyId: UUID): List<RoomType>
|
fun findByPropertyIdOrderByCode(propertyId: UUID): List<RoomType>
|
||||||
fun existsByPropertyIdAndCode(propertyId: UUID, code: String): Boolean
|
fun existsByPropertyIdAndCode(propertyId: UUID, code: String): Boolean
|
||||||
fun existsByPropertyIdAndCodeAndIdNot(propertyId: UUID, code: String, id: UUID): Boolean
|
fun existsByPropertyIdAndCodeAndIdNot(propertyId: UUID, code: String, id: UUID): Boolean
|
||||||
|
fun existsByAmenitiesId(id: UUID): Boolean
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user