diff --git a/src/main/java/roomescape/controller/ReservationController.java b/src/main/java/roomescape/controller/ReservationController.java index 5f823738d..3f578fec8 100644 --- a/src/main/java/roomescape/controller/ReservationController.java +++ b/src/main/java/roomescape/controller/ReservationController.java @@ -1,53 +1,50 @@ package roomescape.controller; -import jakarta.transaction.Transactional; import java.net.URI; import java.util.List; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import roomescape.entity.dto.ReservationCreateDto; import roomescape.entity.Reservation; -import roomescape.entity.repository.ReservationRepository; -import roomescape.exception.NotFoundException; import roomescape.exception.ReservationException; +import roomescape.service.ReservationService; @RestController +@RequestMapping("/reservations") public class ReservationController { - private final ReservationRepository reservationRepository; + private final ReservationService reservationService; - public ReservationController(ReservationRepository reservationRepository) { - this.reservationRepository = reservationRepository; + public ReservationController(ReservationService reservationService) { + this.reservationService = reservationService; } - @GetMapping("/reservations") + @GetMapping public List getReservations() { - return reservationRepository.findAll(); + return reservationService.findAllReservations(); } @Transactional - @PostMapping("/reservations") - public ResponseEntity createReservation(@RequestBody Reservation reservation) { - final Reservation save = reservationRepository.save(reservation); - URI location = URI.create("/reservations/" + save.getId()); - return ResponseEntity.created(location).body(save); + @PostMapping + public ResponseEntity createReservation(@RequestBody ReservationCreateDto reservationCreateDto) { + final Reservation reservation = reservationService.saveReservation(reservationCreateDto); + URI location = URI.create("/reservations/" + reservation.getId()); + return ResponseEntity.created(location).body(reservation); } @Transactional - @DeleteMapping("/reservations/{id}") + @DeleteMapping("/{id}") public ResponseEntity deleteReservation(@PathVariable Long id) { - final int countOfDeleted = reservationRepository.deleteById(id); - - if (countOfDeleted <= 0) { - throw new NotFoundException("해당 id를 가진 예약을 찾을 수 없습니다."); - } - + reservationService.deleteReservationById(id); return ResponseEntity.noContent().build(); } diff --git a/src/main/java/roomescape/controller/RoomEscapeController.java b/src/main/java/roomescape/controller/RoomEscapeController.java index 860c24215..2c0450541 100644 --- a/src/main/java/roomescape/controller/RoomEscapeController.java +++ b/src/main/java/roomescape/controller/RoomEscapeController.java @@ -13,6 +13,11 @@ public String home() { @GetMapping("/reservation") public String reservation() { - return "reservation"; + return "new-reservation"; + } + + @GetMapping("/time") + public String time() { + return "time"; } } diff --git a/src/main/java/roomescape/controller/TimeController.java b/src/main/java/roomescape/controller/TimeController.java new file mode 100644 index 000000000..c9eec5948 --- /dev/null +++ b/src/main/java/roomescape/controller/TimeController.java @@ -0,0 +1,48 @@ +package roomescape.controller; + +import java.net.URI; +import java.util.List; +import org.springframework.http.ResponseEntity; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import roomescape.entity.dto.TimeCreateDto; +import roomescape.entity.value.Time; +import roomescape.service.ReservationService; + +@RestController +@RequestMapping("/times") +public class TimeController { + + private final ReservationService reservationService; + + public TimeController(ReservationService reservationService) { + this.reservationService = reservationService; + } + + @GetMapping + public List