63 lines
2.0 KiB
Java
63 lines
2.0 KiB
Java
package com.caspos.controller;
|
|
|
|
import com.caspos.dto.CreateReservationRequest;
|
|
import com.caspos.dto.ReservationDto;
|
|
import com.caspos.service.ReservationService;
|
|
import org.springframework.format.annotation.DateTimeFormat;
|
|
import org.springframework.http.HttpStatus;
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
import java.time.LocalDate;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.UUID;
|
|
|
|
@RestController
|
|
@RequestMapping("/api/v1/reservations")
|
|
@CrossOrigin(origins = {"http://localhost:5173", "http://localhost:3000"})
|
|
public class ReservationController {
|
|
|
|
private final ReservationService reservationService;
|
|
|
|
public ReservationController(ReservationService reservationService) {
|
|
this.reservationService = reservationService;
|
|
}
|
|
|
|
/**
|
|
* GET /api/v1/reservations?date=YYYY-MM-DD
|
|
*/
|
|
@GetMapping
|
|
public ResponseEntity<List<ReservationDto>> getByDate(
|
|
@RequestParam(required = false)
|
|
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date
|
|
) {
|
|
LocalDate target = date != null ? date : LocalDate.now();
|
|
return ResponseEntity.ok(reservationService.getByDate(target));
|
|
}
|
|
|
|
/**
|
|
* POST /api/v1/reservations
|
|
*/
|
|
@PostMapping
|
|
public ResponseEntity<ReservationDto> create(@RequestBody CreateReservationRequest request) {
|
|
return ResponseEntity.status(HttpStatus.CREATED).body(reservationService.create(request));
|
|
}
|
|
|
|
/**
|
|
* PATCH /api/v1/reservations/{id}/status
|
|
* Body: { "status": "CONFIRMED" }
|
|
*/
|
|
@PatchMapping("/{id}/status")
|
|
public ResponseEntity<ReservationDto> updateStatus(
|
|
@PathVariable UUID id,
|
|
@RequestBody Map<String, String> body
|
|
) {
|
|
String status = body.get("status");
|
|
if (status == null || status.isBlank()) {
|
|
return ResponseEntity.badRequest().build();
|
|
}
|
|
return ResponseEntity.ok(reservationService.updateStatus(id, status));
|
|
}
|
|
}
|