use of com.salesmanager.core.business.exception.ConversionException in project shopizer by shopizer-ecommerce.
the class PersistableUserPopulator method populate.
@Override
public User populate(PersistableUser source, User target, MerchantStore store, Language language) throws ConversionException {
Validate.notNull(source, "PersistableUser cannot be null");
Validate.notNull(store, "MerchantStore cannot be null");
if (target == null) {
target = new User();
}
target.setFirstName(source.getFirstName());
target.setLastName(source.getLastName());
target.setAdminEmail(source.getEmailAddress());
target.setAdminName(source.getUserName());
if (!StringUtils.isBlank(source.getPassword())) {
target.setAdminPassword(passwordEncoder.encode(source.getPassword()));
}
if (!StringUtils.isBlank(source.getStore())) {
try {
MerchantStore userStore = merchantStoreService.getByCode(source.getStore());
target.setMerchantStore(userStore);
} catch (ServiceException e) {
throw new ConversionException("Error while reading MerchantStore store [" + source.getStore() + "]", e);
}
} else {
target.setMerchantStore(store);
}
target.setActive(source.isActive());
Language lang = null;
try {
lang = languageService.getByCode(source.getDefaultLanguage());
} catch (Exception e) {
throw new ConversionException("Cannot get language [" + source.getDefaultLanguage() + "]", e);
}
// set default language
target.setDefaultLanguage(lang);
List<Group> userGroups = new ArrayList<Group>();
List<String> names = new ArrayList<String>();
for (PersistableGroup group : source.getGroups()) {
names.add(group.getName());
}
try {
List<Group> groups = groupService.listGroupByNames(names);
for (Group g : groups) {
userGroups.add(g);
}
} catch (Exception e1) {
throw new ConversionException("Error while getting user groups", e1);
}
target.setGroups(userGroups);
return target;
}
use of com.salesmanager.core.business.exception.ConversionException in project shopizer by shopizer-ecommerce.
the class OrderFacadeImpl method processOrder.
/**
* Process order from api
*/
@Override
public Order processOrder(com.salesmanager.shop.model.order.v1.PersistableOrder order, Customer customer, MerchantStore store, Language language, Locale locale) throws ServiceException {
Validate.notNull(order, "Order cannot be null");
Validate.notNull(customer, "Customer cannot be null");
Validate.notNull(store, "MerchantStore cannot be null");
Validate.notNull(language, "Language cannot be null");
Validate.notNull(locale, "Locale cannot be null");
try {
Order modelOrder = new Order();
persistableOrderApiPopulator.populate(order, modelOrder, store, language);
Long shoppingCartId = order.getShoppingCartId();
ShoppingCart cart = shoppingCartService.getById(shoppingCartId, store);
if (cart == null) {
throw new ServiceException("Shopping cart with id " + shoppingCartId + " does not exist");
}
Set<ShoppingCartItem> shoppingCartItems = cart.getLineItems();
List<ShoppingCartItem> items = new ArrayList<ShoppingCartItem>(shoppingCartItems);
Set<OrderProduct> orderProducts = new LinkedHashSet<OrderProduct>();
OrderProductPopulator orderProductPopulator = new OrderProductPopulator();
orderProductPopulator.setDigitalProductService(digitalProductService);
orderProductPopulator.setProductAttributeService(productAttributeService);
orderProductPopulator.setProductService(productService);
for (ShoppingCartItem item : shoppingCartItems) {
OrderProduct orderProduct = new OrderProduct();
orderProduct = orderProductPopulator.populate(item, orderProduct, store, language);
orderProduct.setOrder(modelOrder);
orderProducts.add(orderProduct);
}
modelOrder.setOrderProducts(orderProducts);
if (order.getAttributes() != null && order.getAttributes().size() > 0) {
Set<OrderAttribute> attrs = new HashSet<OrderAttribute>();
for (com.salesmanager.shop.model.order.OrderAttribute attribute : order.getAttributes()) {
OrderAttribute attr = new OrderAttribute();
attr.setKey(attribute.getKey());
attr.setValue(attribute.getValue());
attr.setOrder(modelOrder);
attrs.add(attr);
}
modelOrder.setOrderAttributes(attrs);
}
// requires Shipping information (need a quote id calculated)
ShippingSummary shippingSummary = null;
// get shipping quote if asked for
if (order.getShippingQuote() != null && order.getShippingQuote().longValue() > 0) {
shippingSummary = shippingQuoteService.getShippingSummary(order.getShippingQuote(), store);
if (shippingSummary != null) {
modelOrder.setShippingModuleCode(shippingSummary.getShippingModule());
}
}
// requires Order Totals, this needs recalculation and then compare
// total with the amount sent as part
// of process order request. If totals does not match, an error
// should be thrown.
OrderTotalSummary orderTotalSummary = null;
OrderSummary orderSummary = new OrderSummary();
orderSummary.setShippingSummary(shippingSummary);
List<ShoppingCartItem> itemsSet = new ArrayList<ShoppingCartItem>(cart.getLineItems());
orderSummary.setProducts(itemsSet);
orderTotalSummary = orderService.caculateOrderTotal(orderSummary, customer, store, language);
if (order.getPayment().getAmount() == null) {
throw new ConversionException("Requires Payment.amount");
}
String submitedAmount = order.getPayment().getAmount();
BigDecimal calculatedAmount = orderTotalSummary.getTotal();
String strCalculatedTotal = calculatedAmount.toPlainString();
// compare both prices
if (!submitedAmount.equals(strCalculatedTotal)) {
throw new ConversionException("Payment.amount does not match what the system has calculated " + strCalculatedTotal + " (received " + submitedAmount + ") please recalculate the order and submit again");
}
modelOrder.setTotal(calculatedAmount);
List<com.salesmanager.core.model.order.OrderTotal> totals = orderTotalSummary.getTotals();
Set<com.salesmanager.core.model.order.OrderTotal> set = new HashSet<com.salesmanager.core.model.order.OrderTotal>();
if (!CollectionUtils.isEmpty(totals)) {
for (com.salesmanager.core.model.order.OrderTotal total : totals) {
total.setOrder(modelOrder);
set.add(total);
}
}
modelOrder.setOrderTotal(set);
PersistablePaymentPopulator paymentPopulator = new PersistablePaymentPopulator();
paymentPopulator.setPricingService(pricingService);
Payment paymentModel = new Payment();
paymentPopulator.populate(order.getPayment(), paymentModel, store, language);
modelOrder.setShoppingCartCode(cart.getShoppingCartCode());
/**
*/
if (!StringUtils.isBlank(customer.getNick()) && !customer.isAnonymous()) {
if (order.getCustomerId() == null && (customerFacade.checkIfUserExists(customer.getNick(), store))) {
customer.setAnonymous(true);
customer.setNick(null);
// send email instructions
}
}
// order service
modelOrder = orderService.processOrder(modelOrder, customer, items, orderTotalSummary, paymentModel, store);
// update cart
try {
cart.setOrderId(modelOrder.getId());
shoppingCartFacade.saveOrUpdateShoppingCart(cart);
} catch (Exception e) {
LOGGER.error("Cannot delete cart " + cart.getId(), e);
}
// email management
if ("true".equals(coreConfiguration.getProperty("ORDER_EMAIL_API"))) {
// send email
try {
notify(modelOrder, customer, store, language, locale);
} catch (Exception e) {
LOGGER.error("Cannot send order confirmation email", e);
}
}
return modelOrder;
} catch (Exception e) {
throw new ServiceException(e);
}
}
use of com.salesmanager.core.business.exception.ConversionException in project shopizer by shopizer-ecommerce.
the class StoreFacadeImpl method convertPersistableMerchantStoreToMerchantStore.
private MerchantStore convertPersistableMerchantStoreToMerchantStore(PersistableMerchantStore store, Language language) {
MerchantStore mStore = new MerchantStore();
// set default values
mStore.setWeightunitcode(MeasureUnit.KG.name());
mStore.setSeizeunitcode(MeasureUnit.IN.name());
try {
mStore = persistableMerchantStorePopulator.populate(store, mStore, language);
} catch (ConversionException e) {
throw new ConversionRuntimeException(e);
}
return mStore;
}
use of com.salesmanager.core.business.exception.ConversionException in project shopizer by shopizer-ecommerce.
the class StoreFacadeImpl method mergePersistableMerchantStoreToMerchantStore.
private MerchantStore mergePersistableMerchantStoreToMerchantStore(PersistableMerchantStore store, String code, Language language) {
MerchantStore mStore = getMerchantStoreByCode(code);
store.setId(mStore.getId());
try {
mStore = persistableMerchantStorePopulator.populate(store, mStore, language);
} catch (ConversionException e) {
throw new ConversionRuntimeException(e);
}
return mStore;
}
use of com.salesmanager.core.business.exception.ConversionException in project shopizer by shopizer-ecommerce.
the class CustomerFacadeImpl method convertPersistableCustomerReviewToCustomerReview.
private CustomerReview convertPersistableCustomerReviewToCustomerReview(PersistableCustomerReview review, MerchantStore store, Language language) {
PersistableCustomerReviewPopulator populator = new PersistableCustomerReviewPopulator();
populator.setCustomerService(customerService);
populator.setLanguageService(languageService);
try {
return populator.populate(review, new CustomerReview(), store, language);
} catch (ConversionException e) {
throw new ConversionRuntimeException(e);
}
}
Aggregations