@Transactional
public void updateStatusExceptEnd(Long id, Long userId, MatchStatus status) {
if (Objects.equals(status, MatchStatus.END)) {
throw new BusinessException(ErrorCode.MATCH_CANNOT_UPDATE_END,
MessageFormat.format("matchId = {0}, userId = {1}, status = {2}", id, userId, status));
}
Match match = matchRepository.findById(id)
.orElseThrow(() -> new EntityNotFoundException(ErrorCode.MATCH_NOT_FOUND,
MessageFormat.format("matchId = {0}", id)));
if (!Objects.equals(match.getUser().getId(), userId)) {
throw new BusinessException(ErrorCode.MATCH_ACCESS_DENIED,
MessageFormat.format("matchId = {0} , userId = {1}", id, userId));
}
if (Objects.equals(match.getStatus(), status)) {
throw new BusinessException(ErrorCode.MATCH_ALREADY_CHANGED_STATUS,
MessageFormat.format("matchId = {0} , status = {1}", id, status));
}
if (Objects.equals(match.getStatus(), MatchStatus.END)) {
throw new BusinessException(ErrorCode.MATCH_ENDED,
MessageFormat.format("matchId = {0} , status = {1}", id, status));
}
match.updateStatus(status);
}
if (!Objects.equals(match.getUser().getId(), userId)) {
throw new BusinessException(ErrorCode.MATCH_ACCESS_DENIED,
MessageFormat.format("matchId = {0} , userId = {1}", id, userId));
}
checkIsAuthorOfMatch(match, userId);
public void checkIsAuthorOfMatch(Match match, Long userId) {
if (!Objects.equals(match.getUser().getId(), userId)) {
throw new BusinessException(ErrorCode.MATCH_ACCESS_DENIED,
MessageFormat.format("matchId = {0} , userId = {1}", id, userId));
}
}