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.repo.AppUserRepo
|
||||
import com.android.trisolarisserver.repo.RoomAmenityRepo
|
||||
import com.android.trisolarisserver.repo.RoomTypeRepo
|
||||
import com.android.trisolarisserver.security.MyPrincipal
|
||||
import org.springframework.http.HttpStatus
|
||||
import org.springframework.security.core.annotation.AuthenticationPrincipal
|
||||
@@ -24,6 +25,7 @@ import java.util.UUID
|
||||
@RequestMapping("/amenities")
|
||||
class RoomAmenities(
|
||||
private val roomAmenityRepo: RoomAmenityRepo,
|
||||
private val roomTypeRepo: RoomTypeRepo,
|
||||
private val appUserRepo: AppUserRepo
|
||||
) {
|
||||
|
||||
@@ -86,6 +88,9 @@ class RoomAmenities(
|
||||
val amenity = roomAmenityRepo.findById(amenityId).orElse(null)
|
||||
?: 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)
|
||||
}
|
||||
|
||||
|
||||
@@ -13,4 +13,5 @@ interface RoomTypeRepo : JpaRepository<RoomType, UUID> {
|
||||
fun findByPropertyIdOrderByCode(propertyId: UUID): List<RoomType>
|
||||
fun existsByPropertyIdAndCode(propertyId: UUID, code: String): Boolean
|
||||
fun existsByPropertyIdAndCodeAndIdNot(propertyId: UUID, code: String, id: UUID): Boolean
|
||||
fun existsByAmenitiesId(id: UUID): Boolean
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user