Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat [#109] 지난 공연 제외하는 기능 추가 #110

Merged
merged 8 commits into from
Jan 20, 2025
Next Next commit
feat [#109] 공연(콘서트, 페스티벌) 정보 조회 날짜가 지나지 않았는지 검증 추가
ch1hyun committed Jan 18, 2025
commit 6e43ff37a34ecb6ff5037c3926690e61b0cdc237
Original file line number Diff line number Diff line change
@@ -35,7 +35,7 @@ public class PerformanceController {
@GetMapping("/concerts/{concertId}")
public ResponseEntity<BaseResponse<?>> getConcertInfo(
@RequestHeader(name = "Authorization", required = false) Long userId,
@PathVariable("concertId") @Min(value = 0, message = "요청 형식이 올바르지 않습니다.") Long concertId
@PathVariable("concertId") @Min(value = 0, message = "요청 형식이 올바르지 않습니다.") long concertId
) {
ConcertDetailDTO concertDetailDTO = performanceFacade.getConcertDetailInfo(concertId);
return ApiResponseUtil.success(SuccessMessage.SUCCESS, ConcertDetailResponse.of(concertDetailDTO, s3FileHandler));
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.sopt.confeti.api.performance.facade;

import java.time.LocalDate;
import lombok.RequiredArgsConstructor;
import org.sopt.confeti.annotation.Facade;
import org.sopt.confeti.api.performance.facade.dto.request.CreateFestivalDTO;
@@ -10,6 +11,8 @@
import org.sopt.confeti.domain.festival.Festival;
import org.sopt.confeti.domain.festival.application.FestivalService;
import org.sopt.confeti.domain.festivalfavorite.application.FestivalFavoriteService;
import org.sopt.confeti.global.exception.NotFoundException;
import org.sopt.confeti.global.message.ErrorMessage;
import org.sopt.confeti.global.util.S3FileHandler;
import org.springframework.transaction.annotation.Transactional;

@@ -25,9 +28,18 @@ public class PerformanceFacade {
@Transactional(readOnly = true)
public ConcertDetailDTO getConcertDetailInfo(final long concertId) {
Concert concert = concertService.getConcertDetailByConcertId(concertId);
validateConcertNotPassed(concert);

return ConcertDetailDTO.from(concert);
}

@Transactional(readOnly = true)
protected void validateConcertNotPassed(final Concert concert) {
if (LocalDate.now().isAfter(concert.getConcertEndAt())) {
throw new NotFoundException(ErrorMessage.NOT_FOUND);
}
}

@Transactional
public void createFestival(final CreateFestivalDTO createFestivalDTO) {
festivalService.create(createFestivalDTO);
@@ -42,6 +54,15 @@ public FestivalDetailDTO getFestivalDetailInfo(final Long userId, final long fes
}

Festival festival = festivalService.getFestivalDetailByFestivalId(festivalId);
validateFestivalNotPassed(festival);

return FestivalDetailDTO.of(festival, isFavorite, s3FileHandler);
}

@Transactional(readOnly = true)
protected void validateFestivalNotPassed(final Festival festival) {
if (LocalDate.now().isAfter(festival.getFestivalEndAt())) {
throw new NotFoundException(ErrorMessage.NOT_FOUND);
}
}
}