@Override public Order create(@Valid Order order) throws EntityAlreadyExistsException, InvalidEntityException { this.dao.begin(); String slug = String.format("%08d", lastOrderNumber() + 1); order.setSlug(slug); order.setId(UUID.randomUUID()); this.dao.createEntity(order, ORDER_TABLE_NAME, getTenant()); this.dao.createOrder(order); for (OrderItem item : order.getOrderItems()) { item.setId(UUID.randomUUID()); item.setOrderId(order.getId()); } this.dao.insertOrderItems(order.getOrderItems()); this.dao.commit(); return order; }
@Override public void onEvent(Event event, Object source, Object data) { // Update stocks for bought products Order order = (Order) source; List<OrderItem> items = order.getOrderItems(); for (OrderItem item : items) { UUID itemId = item.getPurchasableId(); if (itemId == null) { return; } Long quantity = item.getQuantity(); try { Product product = productStore.get().findById(itemId); if (product.getStock() != null) { productStore.get().updateStock(itemId, -quantity.intValue()); } else if (product.getParentId() != null) { Product parent = productStore.get().findById(product.getParentId()); productStore.get().updateStock(product.getParentId(), -quantity.intValue()); } } catch (EntityDoesNotExistException e) { // Ignore, there is just no stock to update } } } }
List<OrderItem> items = order.getOrderItems(); Map<String, Object> context = Maps.newHashMap();
Optional<Address> da, Tenant tenant, Locale locale) List<OrderItem> items = order.getOrderItems(); Map<String, Object> context = Maps.newHashMap();
FluentIterable.from(order.getOrderItems()).transform(new Function<OrderItem, OrderItemWebObject>()