generated from pricelees/issue-pr-template
[#44] 매장 기능 도입 #45
@ -0,0 +1,66 @@
|
|||||||
|
package roomescape.schedule.web
|
||||||
|
|
||||||
|
import jakarta.validation.Valid
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat
|
||||||
|
import org.springframework.http.ResponseEntity
|
||||||
|
import org.springframework.web.bind.annotation.*
|
||||||
|
import roomescape.common.dto.AuditInfo
|
||||||
|
import roomescape.common.dto.response.CommonApiResponse
|
||||||
|
import roomescape.schedule.business.ScheduleService
|
||||||
|
import roomescape.schedule.docs.AdminScheduleAPI
|
||||||
|
import java.time.LocalDate
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/admin")
|
||||||
|
class AdminScheduleController(
|
||||||
|
private val scheduleService: ScheduleService,
|
||||||
|
) : AdminScheduleAPI {
|
||||||
|
@GetMapping("/stores/{storeId}/schedules")
|
||||||
|
override fun searchSchedules(
|
||||||
|
@PathVariable("storeId") storeId: Long,
|
||||||
|
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") date: LocalDate?,
|
||||||
|
@RequestParam(required = false) themeId: Long?,
|
||||||
|
): ResponseEntity<CommonApiResponse<AdminScheduleSummaryListResponse>> {
|
||||||
|
val response = scheduleService.searchSchedules(storeId, date, themeId)
|
||||||
|
|
||||||
|
return ResponseEntity.ok(CommonApiResponse(response))
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/schedules/{id}/audits")
|
||||||
|
override fun findScheduleAudit(
|
||||||
|
@PathVariable("id") id: Long
|
||||||
|
): ResponseEntity<CommonApiResponse<AuditInfo>> {
|
||||||
|
val response = scheduleService.findScheduleAuditOrUnknown(id)
|
||||||
|
|
||||||
|
return ResponseEntity.ok(CommonApiResponse(response))
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/stores/{storeId}/schedules")
|
||||||
|
override fun createSchedule(
|
||||||
|
@PathVariable("storeId") storeId: Long,
|
||||||
|
@Valid @RequestBody request: ScheduleCreateRequest
|
||||||
|
): ResponseEntity<CommonApiResponse<ScheduleCreateResponse>> {
|
||||||
|
val response = scheduleService.createSchedule(storeId, request)
|
||||||
|
|
||||||
|
return ResponseEntity.ok(CommonApiResponse(response))
|
||||||
|
}
|
||||||
|
|
||||||
|
@PatchMapping("/schedules/{id}")
|
||||||
|
override fun updateSchedule(
|
||||||
|
@PathVariable("id") id: Long,
|
||||||
|
@Valid @RequestBody request: ScheduleUpdateRequest
|
||||||
|
): ResponseEntity<CommonApiResponse<Unit>> {
|
||||||
|
scheduleService.updateSchedule(id, request)
|
||||||
|
|
||||||
|
return ResponseEntity.ok(CommonApiResponse(Unit))
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/schedules/{id}")
|
||||||
|
override fun deleteSchedule(
|
||||||
|
@PathVariable("id") id: Long
|
||||||
|
): ResponseEntity<CommonApiResponse<Unit>> {
|
||||||
|
scheduleService.deleteSchedule(id)
|
||||||
|
|
||||||
|
return ResponseEntity.noContent().build()
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,57 +1,20 @@
|
|||||||
package roomescape.schedule.web
|
package roomescape.schedule.web
|
||||||
|
|
||||||
import jakarta.validation.Valid
|
|
||||||
import org.springframework.format.annotation.DateTimeFormat
|
import org.springframework.format.annotation.DateTimeFormat
|
||||||
import org.springframework.http.ResponseEntity
|
import org.springframework.http.ResponseEntity
|
||||||
import org.springframework.web.bind.annotation.*
|
import org.springframework.web.bind.annotation.*
|
||||||
import roomescape.common.dto.response.CommonApiResponse
|
import roomescape.common.dto.response.CommonApiResponse
|
||||||
import roomescape.schedule.business.ScheduleService
|
import roomescape.schedule.business.ScheduleService
|
||||||
import roomescape.schedule.docs.ScheduleAPI
|
import roomescape.schedule.docs.PublicScheduleAPI
|
||||||
|
import roomescape.schedule.docs.UserScheduleAPI
|
||||||
import java.time.LocalDate
|
import java.time.LocalDate
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/schedules")
|
|
||||||
class ScheduleController(
|
class ScheduleController(
|
||||||
private val scheduleService: ScheduleService
|
private val scheduleService: ScheduleService
|
||||||
) : ScheduleAPI {
|
) : UserScheduleAPI, PublicScheduleAPI {
|
||||||
@GetMapping("/themes")
|
|
||||||
override fun findAvailableThemes(
|
|
||||||
@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") date: LocalDate
|
|
||||||
): ResponseEntity<CommonApiResponse<AvailableThemeIdListResponse>> {
|
|
||||||
val response = scheduleService.findThemesByDate(date)
|
|
||||||
|
|
||||||
return ResponseEntity.ok(CommonApiResponse(response))
|
@PostMapping("/schedules/{id}/hold")
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping
|
|
||||||
override fun findAllTime(
|
|
||||||
@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") date: LocalDate,
|
|
||||||
@RequestParam("themeId") themeId: Long
|
|
||||||
): ResponseEntity<CommonApiResponse<ScheduleListByDateResponse>> {
|
|
||||||
val response = scheduleService.findSchedules(date, themeId)
|
|
||||||
|
|
||||||
return ResponseEntity.ok(CommonApiResponse(response))
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/{id}")
|
|
||||||
override fun findScheduleDetail(
|
|
||||||
@PathVariable("id") id: Long
|
|
||||||
): ResponseEntity<CommonApiResponse<ScheduleDetailResponse>> {
|
|
||||||
val response = scheduleService.findDetail(id)
|
|
||||||
|
|
||||||
return ResponseEntity.ok(CommonApiResponse(response))
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping
|
|
||||||
override fun createSchedule(
|
|
||||||
@Valid @RequestBody request: ScheduleCreateRequest
|
|
||||||
): ResponseEntity<CommonApiResponse<ScheduleCreateResponse>> {
|
|
||||||
val response = scheduleService.createSchedule(request)
|
|
||||||
|
|
||||||
return ResponseEntity.ok(CommonApiResponse(response))
|
|
||||||
}
|
|
||||||
|
|
||||||
@PatchMapping("/{id}/hold")
|
|
||||||
override fun holdSchedule(
|
override fun holdSchedule(
|
||||||
@PathVariable("id") id: Long
|
@PathVariable("id") id: Long
|
||||||
): ResponseEntity<CommonApiResponse<Unit>> {
|
): ResponseEntity<CommonApiResponse<Unit>> {
|
||||||
@ -60,22 +23,13 @@ class ScheduleController(
|
|||||||
return ResponseEntity.ok(CommonApiResponse())
|
return ResponseEntity.ok(CommonApiResponse())
|
||||||
}
|
}
|
||||||
|
|
||||||
@PatchMapping("/{id}")
|
@GetMapping("/stores/{storeId}/schedules")
|
||||||
override fun updateSchedule(
|
override fun getStoreSchedulesByDate(
|
||||||
@PathVariable("id") id: Long,
|
@PathVariable("storeId") storeId: Long,
|
||||||
@Valid @RequestBody request: ScheduleUpdateRequest
|
@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") date: LocalDate
|
||||||
): ResponseEntity<CommonApiResponse<Unit>> {
|
): ResponseEntity<CommonApiResponse<ScheduleWithThemeListResponse>> {
|
||||||
scheduleService.updateSchedule(id, request)
|
val response = scheduleService.getStoreScheduleByDate(storeId, date)
|
||||||
|
|
||||||
return ResponseEntity.ok(CommonApiResponse(Unit))
|
return ResponseEntity.ok(CommonApiResponse(response))
|
||||||
}
|
|
||||||
|
|
||||||
@DeleteMapping("/{id}")
|
|
||||||
override fun deleteSchedule(
|
|
||||||
@PathVariable("id") id: Long
|
|
||||||
): ResponseEntity<CommonApiResponse<Unit>> {
|
|
||||||
scheduleService.deleteSchedule(id)
|
|
||||||
|
|
||||||
return ResponseEntity.noContent().build()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user