Commit 916ec9fe authored by Alex Pinto's avatar Alex Pinto

updated create to work with OM's order object

parent 34d11898
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.models.WarehouseOrderRequest;
import com.ascendfinalproject.warehouse.models.WarehouseOrderResponse;
import com.ascendfinalproject.warehouse.services.WarehouseOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.annotation.Order;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
......@@ -23,25 +19,25 @@ public class WarehouseController {
@CrossOrigin
@GetMapping(value = "/orders")
public Flux<WarehouseOrder> getOrders() {
public Flux<WarehouseOrderResponse> getOrders() {
return orderService.getOrders();
}
@CrossOrigin
@GetMapping("/orders/{id}")
public Mono<WarehouseOrder> findOrder(@PathVariable String id){
public Mono<WarehouseOrderResponse> findOrder(@PathVariable String id){
return orderService.findOrderById(id);
}
@CrossOrigin
@PostMapping(value = "/orders")
public Mono<WarehouseOrder> createOrder(@Valid @RequestBody WarehouseOrder order) {
public Mono<WarehouseOrderResponse> createOrder(@Valid @RequestBody WarehouseOrderRequest order) {
return orderService.createOrder(order);
}
@CrossOrigin
@PutMapping(value = "/orders/{id}")
public Mono<WarehouseOrder> updateOrder(@RequestBody WarehouseOrder order, @PathVariable(value = "id") String id) {
public Mono<WarehouseOrderResponse> updateOrder(@RequestBody WarehouseOrderResponse order, @PathVariable(value = "id") String id) {
return orderService.updateOrder(order, id);
}
......
package com.ascendfinalproject.warehouse.models;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Address {
private String street;
private String city;
private String state;
private String zip;
public Address(String street, String city, String state, String zip) {
this.street = street;
this.city = city;
this.state = state;
this.zip = zip;
}
}
package com.ascendfinalproject.warehouse.models;
import lombok.Getter;
import lombok.Setter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Getter
@Setter
public class OrderResponse {
private List<String> allIds = new ArrayList<>();
private Map<String, WarehouseOrder> byId = new HashMap<>();
public void appendId(String id) {
allIds.add(id);
}
public void addOrder(WarehouseOrder order) {
byId.put(order.getId(), order);
}
@Override
public String toString() {
return "OrderResponse{" +
"allIds=" + allIds +
", byId=" + byId +
'}';
}
}
package com.ascendfinalproject.warehouse.models;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import java.util.List;
@Getter
@Setter
public class WarehouseOrderRequest {
@Id
private String id;
private String orderTrackingCode;
private String orderStatus;
private long orderCreatedAt;
private long orderUpdatedAt;
private String customerId;
private String customerEmailAddress;
private List<Item> orderItems;
private Address customerAddress;
}
......@@ -9,7 +9,7 @@ import java.util.List;
@Getter
@Setter
public class WarehouseOrder {
public class WarehouseOrderResponse {
@Id
private String id;
private String orderId;
......@@ -19,6 +19,6 @@ public class WarehouseOrder {
private List<Item> orderItems;
private String address;
public WarehouseOrder() {
public WarehouseOrderResponse() {
}
}
package com.ascendfinalproject.warehouse.repositories;
import com.ascendfinalproject.warehouse.models.WarehouseOrder;
import com.ascendfinalproject.warehouse.models.WarehouseOrderResponse;
import org.springframework.data.mongodb.repository.ReactiveMongoRepository;
public interface WarehouseOrderRepository extends ReactiveMongoRepository<WarehouseOrder, String> {
public interface WarehouseOrderRepository extends ReactiveMongoRepository<WarehouseOrderResponse, String> {
}
......@@ -7,7 +7,6 @@ import org.springframework.stereotype.Service;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
@Service
public class SessionService {
......
package com.ascendfinalproject.warehouse.services;
import com.ascendfinalproject.warehouse.exceptions.NotFoundException;
import com.ascendfinalproject.warehouse.models.Item;
import com.ascendfinalproject.warehouse.models.OrderResponse;
import com.ascendfinalproject.warehouse.models.WarehouseOrder;
import com.ascendfinalproject.warehouse.models.Address;
import com.ascendfinalproject.warehouse.models.WarehouseOrderRequest;
import com.ascendfinalproject.warehouse.models.WarehouseOrderResponse;
import com.ascendfinalproject.warehouse.repositories.WarehouseOrderRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.server.ServerResponse;
import reactor.core.CoreSubscriber;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@Service
public class WarehouseOrderService {
......@@ -23,28 +19,32 @@ public class WarehouseOrderService {
@Autowired
WarehouseOrderRepository orderRepository;
public Mono<WarehouseOrder> findOrderById(String id) {
public Mono<WarehouseOrderResponse> findOrderById(String id) {
return orderRepository.findById(id);
// .switchIfEmpty(ServerResponse.notFound().build());
}
public Flux<WarehouseOrder> getOrders() {
public Flux<WarehouseOrderResponse> getOrders() {
return orderRepository.findAll();
}
public Mono<WarehouseOrder> createOrder(WarehouseOrder order) {
order.setStatus("RECEIVED");
order.setCreatedAt(new Date(System.currentTimeMillis()));
List<Item> itemList = Arrays.asList(
new Item("3", "Hamburger", 3, 3, 33),
new Item("4", "Sausage", 4, 5, 66),
new Item("5", "Fries", 3, 4, 33));
order.setOrderItems(itemList);
order.setAddress("123 apple st");
return orderRepository.save(order);
public Mono<WarehouseOrderResponse> createOrder(WarehouseOrderRequest order) {
WarehouseOrderResponse response = new WarehouseOrderResponse();
response.setOrderId(order.getId());
response.setStatus("RECEIVED");
response.setCreatedAt(new Date(order.getOrderCreatedAt()));
response.setModifiedAt(new Date(order.getOrderUpdatedAt()));
response.setOrderItems(order.getOrderItems());
Address address = order.getCustomerAddress();
response.setAddress(address.getStreet() + ", " +
address.getCity() + ", " +
address.getState() + ", " +
address.getZip()
);
return orderRepository.save(response);
}
public Mono<WarehouseOrder> updateOrder(WarehouseOrder order, String id) {
public Mono<WarehouseOrderResponse> updateOrder(WarehouseOrderResponse order, String id) {
return orderRepository.findById(id)
.doOnError(error -> {
throw new NotFoundException("Warehouse order of ID: " + id + " not found");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment