diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/NewRouletteService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/NewRouletteService.kt index a58dfb0..8f88cb0 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/NewRouletteService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/roulette/NewRouletteService.kt @@ -86,18 +86,38 @@ class NewRouletteService( fun updateRoulette(memberId: Long, request: UpdateNewRouletteRequest): Boolean { rouletteValidate(can = request.can, items = request.items) - val roulette = repository.findByIdOrNull(request.id) - ?: throw SodaException("잘못된 요청입니다.") + if (request.isActive) { + val rouletteList = repository.findByCreatorId(creatorId = memberId) - if (roulette.creatorId != memberId) { - throw SodaException("잘못된 요청입니다.") + if (rouletteList.isEmpty()) { + throw SodaException("잘못된 요청입니다.") + } + + rouletteList.forEach { + if (it.id == request.id) { + it.can = request.can + it.items = request.items + it.isActive = true + } else { + it.isActive = false + } + + repository.save(it) + } + } else { + val roulette = repository.findByIdOrNull(request.id) + ?: throw SodaException("잘못된 요청입니다.") + + if (roulette.creatorId != memberId) { + throw SodaException("잘못된 요청입니다.") + } + + roulette.can = request.can + roulette.items = request.items + roulette.isActive = false + repository.save(roulette) } - roulette.can = request.can - roulette.items = request.items - roulette.isActive = request.isActive - repository.save(roulette) - return request.isActive }