package com.yummynoodlebar.rest.controller;
import com.yummynoodlebar.core.events.orders.*;
import com.yummynoodlebar.core.services.OrderService;
import com.yummynoodlebar.rest.domain.Order;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@Controller
@RequestMapping("/aggregators/orders")
public class OrderQueriesController {
private static Logger LOG = LoggerFactory.getLogger(OrderQueriesController.class);
@Autowired
private OrderService orderService;
@RequestMapping(method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public List<Order> getAllOrders() {
List<Order> orders = new ArrayList<Order>();
for (OrderDetails detail : orderService.requestAllOrders(new RequestAllOrdersEvent()).getOrdersDetails()) {
orders.add(Order.fromOrderDetails(detail));
}
return orders;
}
@RequestMapping(method = RequestMethod.GET, value = "/{id}")
public ResponseEntity<Order> viewOrder(@PathVariable String id) {
OrderDetailsEvent details = orderService.requestOrderDetails(new RequestOrderDetailsEvent(UUID.fromString(id)));
if (!details.isEntityFound()) {
return new ResponseEntity<Order>(HttpStatus.NOT_FOUND);
}
Order order = Order.fromOrderDetails(details.getOrderDetails());
return new ResponseEntity<Order>(order, HttpStatus.OK);
}
}