diff --git a/src/main/java/study/book/object/movie/Screening.java b/src/main/java/study/book/object/movie/Screening.java index 60e4176..222263b 100644 --- a/src/main/java/study/book/object/movie/Screening.java +++ b/src/main/java/study/book/object/movie/Screening.java @@ -10,31 +10,20 @@ @ToString public class Screening { private Movie movie; - private int sequece; + private int sequence; private LocalDateTime whenScreened; public Screening(Movie movie, int sequence, LocalDateTime whenScreened) { this.movie = movie; - this.sequece = sequence; + this.sequence = sequence; this.whenScreened = whenScreened; } - public Money calculateFee(int audienceCount) { - switch (movie.getMovieType()) { - case AMOUNT_DISCOUNT: - if(movie.isDiscountable(whenScreened, sequece)) { - return movie.calculateAmountDiscountedFee().times(audienceCount); - } - break; - case PERCENT_DISCOUNT: - if(movie.isDiscountable(whenScreened, sequece)) { - return movie.calculatePercentDiscountFee().times(audienceCount); - } - break; - case NONE_DISCOUNT: - return movie.calculateNoneDiscountFee().times(audienceCount); - } + public Reservation reserve(Customer customer, int audienceCount) { + return new Reservation(customer, this, calculateFee(audienceCount), audienceCount); + } - return movie.calculateNoneDiscountFee().times(audienceCount); + private Money calculateFee(int audienceCount) { + return movie.calculateMovieFee(this).times(audienceCount); } }