package com.ascendfinalproject.warehouse.controllers; import com.ascendfinalproject.warehouse.models.OrderResponse; import com.ascendfinalproject.warehouse.models.Session; import com.ascendfinalproject.warehouse.models.WarehouseOrder; import com.ascendfinalproject.warehouse.services.SessionService; import com.ascendfinalproject.warehouse.services.WarehouseOrderService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.Order; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @RestController @RequestMapping(value = "/api") public class WarehouseController { @Autowired WarehouseOrderService orderService; @CrossOrigin @GetMapping(value = "/orders") public Flux<WarehouseOrder> getOrders() { return orderService.getOrders(); } @CrossOrigin @GetMapping("/orders/{id}") public Mono<ResponseEntity> getById(@PathVariable String id) { return orderService.getById(id) .map(order -> (ResponseEntity.status(HttpStatus.OK).body(order))) .cast(ResponseEntity.class) .defaultIfEmpty(ResponseEntity.status(HttpStatus.NOT_FOUND).body(null)); } @CrossOrigin @PostMapping(value = "/orders") public Mono<WarehouseOrder> createOrder(@RequestBody WarehouseOrder order) { return orderService.createOrder(order); } @CrossOrigin @PutMapping(value = "/orders/{id}") public Mono<WarehouseOrder> updateOrder(@RequestBody WarehouseOrder order, @PathVariable(value = "id") String id) { return orderService.updateOrder(order, id); } @CrossOrigin @DeleteMapping(value = "/orders/{id}") public Mono<Void> deleteOrder(@PathVariable(value = "id") String id) { return orderService.deleteOrder(id); } @CrossOrigin @DeleteMapping(value = "/orders/all") public Mono<Void> deleteAllOrders() { System.out.println("Deleted all orders"); return orderService.deleteAllOrders(); } }