Commit 1095d6fa authored by Shanelle Valencia's avatar Shanelle Valencia

[AFP-53] 🚧 Fix status update issues to update all other fields of order [@svalencia]

parent c4da26ab
...@@ -36,12 +36,14 @@ public class OrderController { ...@@ -36,12 +36,14 @@ public class OrderController {
return orderService.createOrder(orderObject); return orderService.createOrder(orderObject);
} }
@GetMapping("/orders") @GetMapping("/orders")
@CrossOrigin @CrossOrigin
public Flux<Order> getAllOrders(){ public Flux<Order> getAllOrders(){
return orderService.getAllOrders(); return orderService.getAllOrders();
} }
@GetMapping("/orders/{orderId}") @GetMapping("/orders/{orderId}")
@CrossOrigin @CrossOrigin
public Mono<Order> getOrderById(@PathVariable("orderId") String orderId) { public Mono<Order> getOrderById(@PathVariable("orderId") String orderId) {
......
...@@ -2,6 +2,7 @@ package com.afp.ordermanagement.reactivekafkaservice; ...@@ -2,6 +2,7 @@ package com.afp.ordermanagement.reactivekafkaservice;
import com.afp.ordermanagement.model.Order; import com.afp.ordermanagement.model.Order;
import com.afp.ordermanagement.model.OrderStatus; import com.afp.ordermanagement.model.OrderStatus;
import com.afp.ordermanagement.repository.OrderRepository;
import com.afp.ordermanagement.service.OrderService; import com.afp.ordermanagement.service.OrderService;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -29,6 +30,9 @@ public class Receiver { ...@@ -29,6 +30,9 @@ public class Receiver {
@Autowired @Autowired
private OrderService orderService; private OrderService orderService;
@Autowired
private OrderRepository orderRepository;
@EventListener(ApplicationStartedEvent.class) @EventListener(ApplicationStartedEvent.class)
...@@ -50,7 +54,11 @@ public class Receiver { ...@@ -50,7 +54,11 @@ public class Receiver {
Map<String, String> orderStatus = objectMapper.readValue(orderStatusStr, Map.class); Map<String, String> orderStatus = objectMapper.readValue(orderStatusStr, Map.class);
String id = orderStatus.get("id"); String id = orderStatus.get("id");
String status = orderStatus.get("orderStatus").toUpperCase(Locale.ROOT); String status = orderStatus.get("orderStatus").toUpperCase(Locale.ROOT);
updateOrderStatus(id, status); // updateOrderStatus(id, status);
Order newOrder = new Order(OrderStatus.valueOf(status));
Mono<Order> updateOrder = orderService.updateOrderByOrderId(id, newOrder);
updateOrder.subscribe();
log.info("orderStatus: {}", orderStatus); log.info("orderStatus: {}", orderStatus);
} catch (Exception e) { } catch (Exception e) {
log.error("Caught error", e); log.error("Caught error", e);
...@@ -58,33 +66,44 @@ public class Receiver { ...@@ -58,33 +66,44 @@ public class Receiver {
} }
private void updateOrderStatus(String orderId, String orderStatus) { // private void updateOrderStatus(String orderId, String orderStatus) {
if (checkExistingOrder(orderId)) { // if (checkExistingOrder(orderId)) {
log.info("Updating {} with status {}", orderId, orderStatus); // log.info("Updating {} with status {}", orderId, orderStatus);
Order newOrder = new Order(OrderStatus.valueOf(orderStatus)); // Order newOrder = new Order(OrderStatus.valueOf(orderStatus));
Mono<Order> updateOrder = orderService.updateOrderByOrderId(orderId, newOrder); // Mono<Order> updateOrder = orderService.updateOrderByOrderId(orderId, newOrder);
updateOrder.subscribe(); // updateOrder.subscribe();
// updateOrder.block(); //subscribe vs block? //// updateOrder.block(); //subscribe vs block?
} // }
} // }
private boolean checkExistingOrder(String orderId) { private boolean checkExistingOrder(String orderId) {
Flux<Order> orders = orderService.getAllOrders(); // Flux<Order> orders = orderService.getAllOrders();
List<Order> orderList = orders.collectList().block(); // List<Order> orderList = orders.collectList().block();
Order res = orderList.stream() // Order res = orderList.stream()
.filter(order -> orderId.equals(order.getId())) // .filter(order -> orderId.equals(order.getId()))
.findAny() // .findAny()
.orElse(null); // .orElse(null);
if (res == null) { Mono<Order> order = orderRepository.findById(orderId);
// if (res == null) {
// log.error("Order {} not found", orderId);
// return false;
// }
log.info("ORDER MONO");
log.info(String.valueOf(order));
if (order == null) {
log.error("Order {} not found", orderId); log.error("Order {} not found", orderId);
return false; return false;
} else {
log.info("Order exists on the database");
return true;
} }
log.info("Order exists on the database");
return true;
} }
} }
...@@ -4,9 +4,11 @@ import com.afp.ordermanagement.model.Order; ...@@ -4,9 +4,11 @@ import com.afp.ordermanagement.model.Order;
import org.springframework.data.mongodb.repository.ReactiveMongoRepository; import org.springframework.data.mongodb.repository.ReactiveMongoRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@Repository @Repository
public interface OrderRepository extends ReactiveMongoRepository<Order, String> { public interface OrderRepository extends ReactiveMongoRepository<Order, String> {
Flux<Order> findByCustomerId(String customerId); Flux<Order> findByCustomerId(String customerId);
} }
...@@ -47,6 +47,7 @@ public class OrderService { ...@@ -47,6 +47,7 @@ public class OrderService {
existingOrder.setOrderTrackingCode(newOrder.getOrderTrackingCode()); existingOrder.setOrderTrackingCode(newOrder.getOrderTrackingCode());
existingOrder.setOrderItems(newOrder.getOrderItems()); existingOrder.setOrderItems(newOrder.getOrderItems());
existingOrder.setOrderStatus(newOrder.getOrderStatus()); existingOrder.setOrderStatus(newOrder.getOrderStatus());
existingOrder.setOrderItems(newOrder.getOrderItems());
return orderRepository.save(existingOrder); return orderRepository.save(existingOrder);
}); });
} }
......
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