Search in sources :

Example 31 with ConversionException

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;
}
Also used : ConversionException(com.salesmanager.core.business.exception.ConversionException) Group(com.salesmanager.core.model.user.Group) PersistableGroup(com.salesmanager.shop.model.security.PersistableGroup) PersistableGroup(com.salesmanager.shop.model.security.PersistableGroup) PersistableUser(com.salesmanager.shop.model.user.PersistableUser) User(com.salesmanager.core.model.user.User) ServiceException(com.salesmanager.core.business.exception.ServiceException) Language(com.salesmanager.core.model.reference.language.Language) ArrayList(java.util.ArrayList) MerchantStore(com.salesmanager.core.model.merchant.MerchantStore) ServiceException(com.salesmanager.core.business.exception.ServiceException) ConversionException(com.salesmanager.core.business.exception.ConversionException)

Example 32 with ConversionException

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);
    }
}
Also used : LinkedHashSet(java.util.LinkedHashSet) OrderProduct(com.salesmanager.core.model.order.orderproduct.OrderProduct) PersistableOrderProduct(com.salesmanager.shop.model.order.PersistableOrderProduct) ReadableOrderProduct(com.salesmanager.shop.model.order.ReadableOrderProduct) OrderProductPopulator(com.salesmanager.shop.populator.order.OrderProductPopulator) ReadableOrderProductPopulator(com.salesmanager.shop.populator.order.ReadableOrderProductPopulator) OrderTotalSummary(com.salesmanager.core.model.order.OrderTotalSummary) OrderSummary(com.salesmanager.core.model.order.OrderSummary) ArrayList(java.util.ArrayList) ShippingSummary(com.salesmanager.core.model.shipping.ShippingSummary) OrderAttribute(com.salesmanager.core.model.order.attributes.OrderAttribute) PersistablePaymentPopulator(com.salesmanager.shop.populator.order.transaction.PersistablePaymentPopulator) LinkedHashSet(java.util.LinkedHashSet) HashSet(java.util.HashSet) ShopOrder(com.salesmanager.shop.model.order.ShopOrder) Order(com.salesmanager.core.model.order.Order) ConversionException(com.salesmanager.core.business.exception.ConversionException) BigDecimal(java.math.BigDecimal) ServiceRuntimeException(com.salesmanager.shop.store.api.exception.ServiceRuntimeException) ServiceException(com.salesmanager.core.business.exception.ServiceException) ResourceNotFoundException(com.salesmanager.shop.store.api.exception.ResourceNotFoundException) ConversionException(com.salesmanager.core.business.exception.ConversionException) CreditCardPayment(com.salesmanager.core.model.payments.CreditCardPayment) Payment(com.salesmanager.core.model.payments.Payment) ShoppingCart(com.salesmanager.core.model.shoppingcart.ShoppingCart) ServiceException(com.salesmanager.core.business.exception.ServiceException) ShoppingCartItem(com.salesmanager.core.model.shoppingcart.ShoppingCartItem) OrderTotal(com.salesmanager.shop.model.order.total.OrderTotal)

Example 33 with ConversionException

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;
}
Also used : ConversionException(com.salesmanager.core.business.exception.ConversionException) MerchantStore(com.salesmanager.core.model.merchant.MerchantStore) ReadableMerchantStore(com.salesmanager.shop.model.store.ReadableMerchantStore) PersistableMerchantStore(com.salesmanager.shop.model.store.PersistableMerchantStore) ConversionRuntimeException(com.salesmanager.shop.store.api.exception.ConversionRuntimeException)

Example 34 with ConversionException

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;
}
Also used : ConversionException(com.salesmanager.core.business.exception.ConversionException) MerchantStore(com.salesmanager.core.model.merchant.MerchantStore) ReadableMerchantStore(com.salesmanager.shop.model.store.ReadableMerchantStore) PersistableMerchantStore(com.salesmanager.shop.model.store.PersistableMerchantStore) ConversionRuntimeException(com.salesmanager.shop.store.api.exception.ConversionRuntimeException)

Example 35 with ConversionException

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);
    }
}
Also used : ConversionException(com.salesmanager.core.business.exception.ConversionException) PersistableCustomerReviewPopulator(com.salesmanager.shop.populator.customer.PersistableCustomerReviewPopulator) ReadableCustomerReview(com.salesmanager.shop.model.customer.ReadableCustomerReview) CustomerReview(com.salesmanager.core.model.customer.review.CustomerReview) PersistableCustomerReview(com.salesmanager.shop.model.customer.PersistableCustomerReview) ConversionRuntimeException(com.salesmanager.shop.store.api.exception.ConversionRuntimeException)

Aggregations

ConversionException (com.salesmanager.core.business.exception.ConversionException)57 ConversionRuntimeException (com.salesmanager.shop.store.api.exception.ConversionRuntimeException)17 Language (com.salesmanager.core.model.reference.language.Language)16 HashSet (java.util.HashSet)15 ArrayList (java.util.ArrayList)11 ServiceException (com.salesmanager.core.business.exception.ServiceException)10 Product (com.salesmanager.core.model.catalog.product.Product)10 Customer (com.salesmanager.core.model.customer.Customer)9 ReadableCustomer (com.salesmanager.shop.model.customer.ReadableCustomer)9 PersistableCustomer (com.salesmanager.shop.model.customer.PersistableCustomer)8 BigDecimal (java.math.BigDecimal)8 MerchantStore (com.salesmanager.core.model.merchant.MerchantStore)7 ProductAttribute (com.salesmanager.core.model.catalog.product.attribute.ProductAttribute)6 OrderProduct (com.salesmanager.core.model.order.orderproduct.OrderProduct)6 Country (com.salesmanager.core.model.reference.country.Country)6 Zone (com.salesmanager.core.model.reference.zone.Zone)6 ReadableProduct (com.salesmanager.shop.model.catalog.product.ReadableProduct)6 ServiceRuntimeException (com.salesmanager.shop.store.api.exception.ServiceRuntimeException)6 Date (java.util.Date)6 Category (com.salesmanager.core.model.catalog.category.Category)5