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