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; package com.ascendfinalproject.warehouse.controllers;
import com.ascendfinalproject.warehouse.models.OrderResponse; import com.ascendfinalproject.warehouse.models.WarehouseOrderRequest;
import com.ascendfinalproject.warehouse.models.Session; import com.ascendfinalproject.warehouse.models.WarehouseOrderResponse;
import com.ascendfinalproject.warehouse.models.WarehouseOrder;
import com.ascendfinalproject.warehouse.services.SessionService;
import com.ascendfinalproject.warehouse.services.WarehouseOrderService; import com.ascendfinalproject.warehouse.services.WarehouseOrderService;
import org.springframework.beans.factory.annotation.Autowired; 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 org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
...@@ -23,25 +19,25 @@ public class WarehouseController { ...@@ -23,25 +19,25 @@ public class WarehouseController {
@CrossOrigin @CrossOrigin
@GetMapping(value = "/orders") @GetMapping(value = "/orders")
public Flux<WarehouseOrder> getOrders() { public Flux<WarehouseOrderResponse> getOrders() {
return orderService.getOrders(); return orderService.getOrders();
} }
@CrossOrigin @CrossOrigin
@GetMapping("/orders/{id}") @GetMapping("/orders/{id}")
public Mono<WarehouseOrder> findOrder(@PathVariable String id){ public Mono<WarehouseOrderResponse> findOrder(@PathVariable String id){
return orderService.findOrderById(id); return orderService.findOrderById(id);
} }
@CrossOrigin @CrossOrigin
@PostMapping(value = "/orders") @PostMapping(value = "/orders")
public Mono<WarehouseOrder> createOrder(@Valid @RequestBody WarehouseOrder order) { public Mono<WarehouseOrderResponse> createOrder(@Valid @RequestBody WarehouseOrderRequest order) {
return orderService.createOrder(order); return orderService.createOrder(order);
} }
@CrossOrigin @CrossOrigin
@PutMapping(value = "/orders/{id}") @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); 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; ...@@ -9,7 +9,7 @@ import java.util.List;
@Getter @Getter
@Setter @Setter
public class WarehouseOrder { public class WarehouseOrderResponse {
@Id @Id
private String id; private String id;
private String orderId; private String orderId;
...@@ -19,6 +19,6 @@ public class WarehouseOrder { ...@@ -19,6 +19,6 @@ public class WarehouseOrder {
private List<Item> orderItems; private List<Item> orderItems;
private String address; private String address;
public WarehouseOrder() { public WarehouseOrderResponse() {
} }
} }
package com.ascendfinalproject.warehouse.repositories; package com.ascendfinalproject.warehouse.repositories;
import com.ascendfinalproject.warehouse.models.WarehouseOrder; import com.ascendfinalproject.warehouse.models.WarehouseOrderResponse;
import org.springframework.data.mongodb.repository.ReactiveMongoRepository; 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; ...@@ -7,7 +7,6 @@ import org.springframework.stereotype.Service;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.util.Scanner;
@Service @Service
public class SessionService { public class SessionService {
......
package com.ascendfinalproject.warehouse.services; package com.ascendfinalproject.warehouse.services;
import com.ascendfinalproject.warehouse.exceptions.NotFoundException; import com.ascendfinalproject.warehouse.exceptions.NotFoundException;
import com.ascendfinalproject.warehouse.models.Item; import com.ascendfinalproject.warehouse.models.Address;
import com.ascendfinalproject.warehouse.models.OrderResponse; import com.ascendfinalproject.warehouse.models.WarehouseOrderRequest;
import com.ascendfinalproject.warehouse.models.WarehouseOrder; import com.ascendfinalproject.warehouse.models.WarehouseOrderResponse;
import com.ascendfinalproject.warehouse.repositories.WarehouseOrderRepository; import com.ascendfinalproject.warehouse.repositories.WarehouseOrderRepository;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; 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.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List;
@Service @Service
public class WarehouseOrderService { public class WarehouseOrderService {
...@@ -23,28 +19,32 @@ public class WarehouseOrderService { ...@@ -23,28 +19,32 @@ public class WarehouseOrderService {
@Autowired @Autowired
WarehouseOrderRepository orderRepository; WarehouseOrderRepository orderRepository;
public Mono<WarehouseOrder> findOrderById(String id) { public Mono<WarehouseOrderResponse> findOrderById(String id) {
return orderRepository.findById(id); return orderRepository.findById(id);
// .switchIfEmpty(ServerResponse.notFound().build()); // .switchIfEmpty(ServerResponse.notFound().build());
} }
public Flux<WarehouseOrder> getOrders() { public Flux<WarehouseOrderResponse> getOrders() {
return orderRepository.findAll(); return orderRepository.findAll();
} }
public Mono<WarehouseOrder> createOrder(WarehouseOrder order) { public Mono<WarehouseOrderResponse> createOrder(WarehouseOrderRequest order) {
order.setStatus("RECEIVED"); WarehouseOrderResponse response = new WarehouseOrderResponse();
order.setCreatedAt(new Date(System.currentTimeMillis())); response.setOrderId(order.getId());
List<Item> itemList = Arrays.asList( response.setStatus("RECEIVED");
new Item("3", "Hamburger", 3, 3, 33), response.setCreatedAt(new Date(order.getOrderCreatedAt()));
new Item("4", "Sausage", 4, 5, 66), response.setModifiedAt(new Date(order.getOrderUpdatedAt()));
new Item("5", "Fries", 3, 4, 33)); response.setOrderItems(order.getOrderItems());
order.setOrderItems(itemList); Address address = order.getCustomerAddress();
order.setAddress("123 apple st"); response.setAddress(address.getStreet() + ", " +
return orderRepository.save(order); 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) return orderRepository.findById(id)
.doOnError(error -> { .doOnError(error -> {
throw new NotFoundException("Warehouse order of ID: " + id + " not found"); 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