add: DUPLICATE_MOVIE_TIME exception
This commit is contained in:
@@ -34,6 +34,7 @@ public enum ErrorCode {
|
||||
DUPLICATE_EMAIL(CONFLICT, "이메일이 이미 존재합니다."),
|
||||
DUPLICATE_PAYMENT(CONFLICT, "해당 좌석은 현재 판매된 좌석입니다."),
|
||||
DUPLICATE_MOVIE(CONFLICT, "해당 영화 정보가 이미 존재합니다."),
|
||||
DUPLICATE_MOVIE_TIME(CONFLICT, "해당 영화 시간표 정보가 이미 존재합니다."),
|
||||
DELETED_EMAIL(CONFLICT, "이미 삭제된 이메일 입니다."),
|
||||
DELETED_MOVIE(CONFLICT, "이미 삭제된 영화 입니다.");
|
||||
|
||||
@@ -100,6 +101,10 @@ public enum ErrorCode {
|
||||
throw new TicketingException(DUPLICATE_MOVIE);
|
||||
}
|
||||
|
||||
public static TicketingException throwDuplicateMovieTime() {
|
||||
throw new TicketingException(DUPLICATE_MOVIE_TIME);
|
||||
}
|
||||
|
||||
public static TicketingException throwDeletedEmail() {
|
||||
throw new TicketingException(DELETED_EMAIL);
|
||||
}
|
||||
|
||||
@@ -23,11 +23,8 @@ public class MovieTimeRegisterRequest {
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
|
||||
private LocalDateTime startAt;
|
||||
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
|
||||
private LocalDateTime endAt;
|
||||
|
||||
public MovieTimeRegisterDTO toMovieTimeRegisterDTO() {
|
||||
return new MovieTimeRegisterDTO(movieId, theaterNumber, round, startAt, endAt);
|
||||
return new MovieTimeRegisterDTO(movieId, theaterNumber, round, startAt);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.ticketing.server.movie.domain.repository.TheaterRepository;
|
||||
import com.ticketing.server.movie.service.dto.MovieTimeDTO;
|
||||
import com.ticketing.server.movie.service.dto.MovieTimeListDTO;
|
||||
import com.ticketing.server.movie.service.dto.MovieTimeRegisterDTO;
|
||||
import com.ticketing.server.movie.service.dto.RegisteredMovieDTO;
|
||||
import com.ticketing.server.movie.service.dto.RegisteredMovieTimeDTO;
|
||||
import com.ticketing.server.movie.service.interfaces.MovieTimeService;
|
||||
import java.time.LocalDate;
|
||||
@@ -35,18 +36,27 @@ public class MovieTimeServiceImpl implements MovieTimeService {
|
||||
|
||||
@Override
|
||||
public RegisteredMovieTimeDTO registerMovieTime(@Valid MovieTimeRegisterDTO movieTimeRegisterDto) {
|
||||
Movie movie = movieRepository.findById(movieTimeRegisterDto.getMovieId())
|
||||
.orElseThrow(ErrorCode::throwMovieNotFound);
|
||||
Movie movie = findMovieById(movieTimeRegisterDto.getMovieId());
|
||||
Theater theater = findTheaterByNumber(movieTimeRegisterDto.getTheaterNumber());
|
||||
int round = movieTimeRegisterDto.getTheaterNumber();
|
||||
|
||||
MovieTime movieTime = movieTimeRepository.findByMovieAndTheaterAndRoundAndDeletedAtNull(
|
||||
Optional<MovieTime> movieTime =
|
||||
movieTimeRepository.findByMovieAndTheaterAndRoundAndDeletedAtNull(movie, theater, round);
|
||||
|
||||
);
|
||||
if(movieTime.isEmpty()) {
|
||||
MovieTime newMovieTime = movieTimeRepository.save(
|
||||
new MovieTime(movie, theater, round, movieTimeRegisterDto.getStartAt())
|
||||
);
|
||||
|
||||
return new RegisteredMovieTimeDTO(newMovieTime);
|
||||
}
|
||||
|
||||
throw ErrorCode.throwDuplicateMovieTime();
|
||||
}
|
||||
|
||||
@Override
|
||||
public MovieTimeListDTO getMovieTimes(Long movieId, LocalDate runningDate) {
|
||||
Movie movie = movieRepository.findByIdAndDeletedAtNull(movieId)
|
||||
.orElseThrow(ErrorCode::throwMovieNotFound);
|
||||
Movie movie = findMovieById(movieId);
|
||||
|
||||
LocalDateTime startOfDay = runningDate.atStartOfDay().plusHours(6);
|
||||
LocalDateTime endOfDay = startOfDay.plusDays(1);
|
||||
@@ -62,13 +72,18 @@ public class MovieTimeServiceImpl implements MovieTimeService {
|
||||
|
||||
@Override
|
||||
public Movie findMovieById(Long movieId) {
|
||||
Movie movie = movieRepository.findByIdAndDeletedAtNull(movieId)
|
||||
.orElseThrow(ErrorCode::throwMovieNotFound);
|
||||
|
||||
return movie;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Theater findTheaterByNumber(Integer theaterNumber) {
|
||||
Theater theater = theaterRepository.findByTheaterNumber(theaterNumber)
|
||||
.orElseThrow(ErrorCode::throwTh)
|
||||
.orElseThrow(ErrorCode::throwTheaterNotFound);
|
||||
|
||||
return theater;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -22,7 +22,4 @@ public class MovieTimeRegisterDTO {
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
|
||||
private LocalDateTime startAt;
|
||||
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
|
||||
private LocalDateTime endAt;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.ticketing.server.movie.service.interfaces;
|
||||
|
||||
import com.ticketing.server.movie.domain.Movie;
|
||||
import com.ticketing.server.movie.domain.Theater;
|
||||
import com.ticketing.server.movie.service.dto.MovieTimeListDTO;
|
||||
import com.ticketing.server.movie.service.dto.MovieTimeRegisterDTO;
|
||||
import com.ticketing.server.movie.service.dto.RegisteredMovieTimeDTO;
|
||||
@@ -12,4 +14,8 @@ public interface MovieTimeService {
|
||||
|
||||
MovieTimeListDTO getMovieTimes(Long movieId, LocalDate runningDate);
|
||||
|
||||
Movie findMovieById(Long movieId);
|
||||
|
||||
Theater findTheaterByNumber(Integer theaterNumber);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user