@Override public ExtensionResultStatusType attachAdditionalDataToNewNamedCart(Customer customer, Order cart) { return execute(attachAdditionalDataToNewNamedCart, customer, cart); }
@Override public void preValidateUpdateQuantityOperation(Order cart, OrderItemRequestDTO dto) { ExtensionResultHolder erh = new ExtensionResultHolder(); extensionManager.getProxy().preValidateUpdateQuantityOperation(cart, dto, erh); if (erh.getThrowable() instanceof IllegalCartOperationException) { throw ((IllegalCartOperationException) erh.getThrowable()); } else if (erh.getThrowable() != null) { throw new RuntimeException(erh.getThrowable()); } }
@Override public Order findCartForCustomerWithEnhancements(Customer customer, Order candidateOrder) { ExtensionResultHolder<Order> erh = new ExtensionResultHolder<Order>(); ExtensionResultStatusType resultStatusType = extensionManager.findCartForCustomerWithEnhancements(customer, candidateOrder, erh); if (ExtensionResultStatusType.NOT_HANDLED != resultStatusType) { return erh.getResult(); } return candidateOrder; }
@PostConstruct public void init() { if (isEnabled()) { extensionManager.registerHandler(this); } }
@Override public void preValidateCartOperation(Order cart) { ExtensionResultHolder erh = new ExtensionResultHolder(); extensionManager.getProxy().preValidateCartOperation(cart, erh); if (erh.getThrowable() instanceof IllegalCartOperationException) { throw ((IllegalCartOperationException) erh.getThrowable()); } else if (erh.getThrowable() != null) { throw new RuntimeException(erh.getThrowable()); } }
@Override public Order findCartForCustomerWithEnhancements(Customer customer) { ExtensionResultHolder<Order> erh = new ExtensionResultHolder<Order>(); ExtensionResultStatusType resultStatusType = extensionManager.findCartForCustomerWithEnhancements(customer, erh); if (ExtensionResultStatusType.NOT_HANDLED != resultStatusType) { return erh.getResult(); } return findCartForCustomer(customer); }
@Override public ExtensionResultStatusType preValidateCartOperation(Order cart, ExtensionResultHolder erh) { return execute(preValidateCartOperation, cart, erh); }
@Override @Transactional("blTransactionManager") public Order addOfferCodes(Order order, List<OfferCode> offerCodes, boolean priceOrder) throws PricingException, OfferException { preValidateCartOperation(order); Set<Offer> addedOffers = offerService.getUniqueOffersFromOrder(order); if (extensionManager != null) { extensionManager.getProxy().addOfferCodes(order, offerCodes, priceOrder); } if (offerCodes != null && !offerCodes.isEmpty()) { for (OfferCode offerCode : offerCodes) { if (order.getAddedOfferCodes().contains(offerCode) || addedOffers.contains(offerCode.getOffer())) { throw new OfferAlreadyAddedException("The offer has already been added."); } else if (!offerService.verifyMaxCustomerUsageThreshold(order, offerCode)) { throw new OfferMaxUseExceededException("The customer has used this offer code more than the maximum allowed number of times."); } else if (!offerCode.isActive() || !offerCode.getOffer().isActive()) { throw new OfferExpiredException("The offer has expired."); } order.getAddedOfferCodes().add(offerCode); } order = save(order, priceOrder); } return order; }
@Override public ExtensionResultStatusType attachAdditionalDataToOrder(Order order, boolean priceOrder) { return execute(attachAdditionalDataToOrder, order, priceOrder); }
@Override @Transactional("blTransactionManager") public Order createNamedOrderForCustomer(String name, Customer customer) { Order namedOrder = orderDao.create(); namedOrder.setCustomer(customer); namedOrder.setName(name); namedOrder.setStatus(OrderStatus.NAMED); if (extensionManager != null) { extensionManager.getProxy().attachAdditionalDataToNewNamedCart(customer, namedOrder); } if (BroadleafRequestContext.getBroadleafRequestContext() != null) { namedOrder.setLocale(BroadleafRequestContext.getBroadleafRequestContext().getLocale()); } return persist(namedOrder); // No need to price here }
@Override public ExtensionResultStatusType addOfferCodes(Order order, List<OfferCode> offerCodes, boolean priceOrder) { return execute(addOfferCodes, order, offerCodes, priceOrder); }
extensionManager.getProxy().attachAdditionalDataToOrder(order, priceOrder);
@Override public ExtensionResultStatusType preValidateUpdateQuantityOperation(Order cart, OrderItemRequestDTO dto, ExtensionResultHolder erh) { return execute(preValidateUpdateQuantityOperation, cart, dto, erh); }
@Override public ExtensionResultStatusType findCartForCustomerWithEnhancements(Customer customer, ExtensionResultHolder erh) { return execute(findStaleCacheAwareCartForCustomer, customer, erh); }
@Override public ExtensionResultStatusType findCartForCustomerWithEnhancements(Customer customer, Order candidateCart, ExtensionResultHolder erh) { return execute(findStaleCacheAwareCartForCustomer2, customer, candidateCart, erh); }