feat(api): add REST controllers, services, entities and 15-min timeline grid
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
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));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user