protected void updateOrderItemCartMessages(OrderItem orderItem) { List<String> cartMessages = gatherOrderItemCartMessages(orderItem); if (CollectionUtils.isEmpty(cartMessages)) { cartMessages = gatherProductCartMessages(orderItem); } orderItem.setCartMessages(cartMessages); orderItemService.saveOrderItem(orderItem); }
@PostConstruct public void init() { if (isEnabled()) { extensionManager.registerHandler(this); } }
@Override public ExtensionResultStatusType attachAdditionalDataToOrder(Order order, boolean priceOrder) { for (OrderItem orderItem : order.getOrderItems()) { updateOrderItemCartMessages(orderItem); } return ExtensionResultStatusType.HANDLED_CONTINUE; }
protected List<String> gatherProductCartMessages(OrderItem orderItem) { List<String> cartMessages = new ArrayList<>(); if (DiscreteOrderItem.class.isAssignableFrom(orderItem.getClass())) { DiscreteOrderItem discreteOrderItem = (DiscreteOrderItem) orderItem; Product product = discreteOrderItem.getProduct(); for (PromotionMessageGenerator generator : generators) { Map<String, List<PromotionMessageDTO>> promotionMessages = generator.generatePromotionMessages(product); List<PromotionMessageDTO> messageDTOs = new ArrayList<>(); addPromotionMessagesForType(messageDTOs, promotionMessages.get(PromotionMessagePlacementType.CART.getType())); addPromotionMessagesForType(messageDTOs, promotionMessages.get(PromotionMessagePlacementType.EVERYWHERE.getType())); BLCPromotionMessageUtils.sortMessagesByPriority(messageDTOs); cartMessages.addAll(BLCPromotionMessageUtils.gatherMessagesFromDTOs(messageDTOs)); } } return cartMessages; }