use of com.salesmanager.shop.populator.catalog.ReadableProductPopulator in project shopizer by shopizer-ecommerce.
the class ProductCommonFacadeImpl method updateProductQuantity.
@Override
public ReadableProduct updateProductQuantity(ReadableProduct product, int quantity, Language language) throws Exception {
Product persistable = productService.getById(product.getId());
if (persistable == null) {
throw new Exception("product is null for id " + product.getId());
}
java.util.Set<ProductAvailability> availabilities = persistable.getAvailabilities();
for (ProductAvailability availability : availabilities) {
availability.setProductQuantity(quantity);
}
productService.update(persistable);
ReadableProduct readableProduct = new ReadableProduct();
ReadableProductPopulator populator = new ReadableProductPopulator();
populator.setPricingService(pricingService);
populator.setimageUtils(imageUtils);
populator.populate(persistable, readableProduct, persistable.getMerchantStore(), language);
return readableProduct;
}
use of com.salesmanager.shop.populator.catalog.ReadableProductPopulator in project shopizer by shopizer-ecommerce.
the class ReadableOrderProductMapper method merge.
@Override
public ReadableOrderProduct merge(OrderProduct source, ReadableOrderProduct target, MerchantStore store, Language language) {
Validate.notNull(source, "OrderProduct cannot be null");
Validate.notNull(target, "ReadableOrderProduct cannot be null");
Validate.notNull(store, "MerchantStore cannot be null");
Validate.notNull(language, "Language cannot be null");
target.setId(source.getId());
target.setOrderedQuantity(source.getProductQuantity());
try {
target.setPrice(pricingService.getDisplayAmount(source.getOneTimeCharge(), store));
} catch (Exception e) {
throw new ConversionRuntimeException("Cannot convert price", e);
}
target.setProductName(source.getProductName());
target.setSku(source.getSku());
// subtotal = price * quantity
BigDecimal subTotal = source.getOneTimeCharge();
subTotal = subTotal.multiply(new BigDecimal(source.getProductQuantity()));
try {
String subTotalPrice = pricingService.getDisplayAmount(subTotal, store);
target.setSubTotal(subTotalPrice);
} catch (Exception e) {
throw new ConversionRuntimeException("Cannot format price", e);
}
if (source.getOrderAttributes() != null) {
List<ReadableOrderProductAttribute> attributes = new ArrayList<ReadableOrderProductAttribute>();
for (OrderProductAttribute attr : source.getOrderAttributes()) {
ReadableOrderProductAttribute readableAttribute = new ReadableOrderProductAttribute();
try {
String price = pricingService.getDisplayAmount(attr.getProductAttributePrice(), store);
readableAttribute.setAttributePrice(price);
} catch (ServiceException e) {
throw new ConversionRuntimeException("Cannot format price", e);
}
readableAttribute.setAttributeName(attr.getProductAttributeName());
readableAttribute.setAttributeValue(attr.getProductAttributeValueName());
attributes.add(readableAttribute);
}
target.setAttributes(attributes);
}
String productSku = source.getSku();
if (!StringUtils.isBlank(productSku)) {
Product product = productService.getByCode(productSku, language);
if (product != null) {
// TODO autowired
ReadableProductPopulator populator = new ReadableProductPopulator();
populator.setPricingService(pricingService);
populator.setimageUtils(imageUtils);
ReadableProduct productProxy;
try {
productProxy = populator.populate(product, new ReadableProduct(), store, language);
target.setProduct(productProxy);
} catch (ConversionException e) {
throw new ConversionRuntimeException("Cannot convert product", e);
}
Set<ProductImage> images = product.getImages();
ProductImage defaultImage = null;
if (images != null) {
for (ProductImage image : images) {
if (defaultImage == null) {
defaultImage = image;
}
if (image.isDefaultImage()) {
defaultImage = image;
}
}
}
if (defaultImage != null) {
target.setImage(defaultImage.getProductImage());
}
}
}
return target;
}
use of com.salesmanager.shop.populator.catalog.ReadableProductPopulator in project shopizer by shopizer-ecommerce.
the class ReadableOrderProductPopulator method populate.
@Override
public ReadableOrderProduct populate(OrderProduct source, ReadableOrderProduct target, MerchantStore store, Language language) throws ConversionException {
Validate.notNull(productService, "Requires ProductService");
Validate.notNull(pricingService, "Requires PricingService");
Validate.notNull(imageUtils, "Requires imageUtils");
target.setId(source.getId());
target.setOrderedQuantity(source.getProductQuantity());
try {
target.setPrice(pricingService.getDisplayAmount(source.getOneTimeCharge(), store));
} catch (Exception e) {
throw new ConversionException("Cannot convert price", e);
}
target.setProductName(source.getProductName());
target.setSku(source.getSku());
// subtotal = price * quantity
BigDecimal subTotal = source.getOneTimeCharge();
subTotal = subTotal.multiply(new BigDecimal(source.getProductQuantity()));
try {
String subTotalPrice = pricingService.getDisplayAmount(subTotal, store);
target.setSubTotal(subTotalPrice);
} catch (Exception e) {
throw new ConversionException("Cannot format price", e);
}
if (source.getOrderAttributes() != null) {
List<ReadableOrderProductAttribute> attributes = new ArrayList<ReadableOrderProductAttribute>();
for (OrderProductAttribute attr : source.getOrderAttributes()) {
ReadableOrderProductAttribute readableAttribute = new ReadableOrderProductAttribute();
try {
String price = pricingService.getDisplayAmount(attr.getProductAttributePrice(), store);
readableAttribute.setAttributePrice(price);
} catch (ServiceException e) {
throw new ConversionException("Cannot format price", e);
}
readableAttribute.setAttributeName(attr.getProductAttributeName());
readableAttribute.setAttributeValue(attr.getProductAttributeValueName());
attributes.add(readableAttribute);
}
target.setAttributes(attributes);
}
String productSku = source.getSku();
if (!StringUtils.isBlank(productSku)) {
Product product = productService.getByCode(productSku, language);
if (product != null) {
ReadableProductPopulator populator = new ReadableProductPopulator();
populator.setPricingService(pricingService);
populator.setimageUtils(imageUtils);
ReadableProduct productProxy = populator.populate(product, new ReadableProduct(), store, language);
target.setProduct(productProxy);
Set<ProductImage> images = product.getImages();
ProductImage defaultImage = null;
if (images != null) {
for (ProductImage image : images) {
if (defaultImage == null) {
defaultImage = image;
}
if (image.isDefaultImage()) {
defaultImage = image;
}
}
}
if (defaultImage != null) {
target.setImage(defaultImage.getProductImage());
}
}
}
return target;
}
use of com.salesmanager.shop.populator.catalog.ReadableProductPopulator in project shopizer by shopizer-ecommerce.
the class ShopProductRESTController method getProducts.
private ReadableProductList getProducts(final int start, final int max, final String store, final String language, final String category, final List<QueryFilter> filters, HttpServletRequest request, HttpServletResponse response) throws Exception {
try {
/**
* How to Spring MVC Rest web service - ajax / jquery
* http://codetutr.com/2013/04/09/spring-mvc-easy-rest-based-json-services-with-responsebody/
*/
MerchantStore merchantStore = (MerchantStore) request.getAttribute(Constants.MERCHANT_STORE);
Map<String, Language> langs = languageService.getLanguagesMap();
if (merchantStore != null) {
if (!merchantStore.getCode().equals(store)) {
// reset for the current request
merchantStore = null;
}
}
if (merchantStore == null) {
merchantStore = merchantStoreService.getByCode(store);
}
if (merchantStore == null) {
LOGGER.error("Merchant store is null for code " + store);
// TODO localized message
response.sendError(503, "Merchant store is null for code " + store);
return null;
}
Language lang = langs.get(language);
if (lang == null) {
lang = langs.get(Constants.DEFAULT_LANGUAGE);
}
ProductCriteria productCriteria = new ProductCriteria();
productCriteria.setMaxCount(max);
productCriteria.setStartIndex(start);
// get the category by code
if (!StringUtils.isBlank(category)) {
Category cat = categoryService.getBySeUrl(merchantStore, category);
if (cat == null) {
LOGGER.error("Category " + category + " is null");
// TODO localized message
response.sendError(503, "Category is null");
return null;
}
String lineage = new StringBuilder().append(cat.getLineage()).append(cat.getId()).append("/").toString();
List<Category> categories = categoryService.getListByLineage(store, lineage);
List<Long> ids = new ArrayList<Long>();
if (categories != null && categories.size() > 0) {
for (Category c : categories) {
ids.add(c.getId());
}
}
ids.add(cat.getId());
productCriteria.setCategoryIds(ids);
}
if (filters != null) {
for (QueryFilter filter : filters) {
if (filter.getFilterType().name().equals(QueryFilterType.BRAND.name())) {
// the only filter implemented
productCriteria.setManufacturerId(filter.getFilterId());
}
}
}
com.salesmanager.core.model.catalog.product.ProductList products = productService.listByStore(merchantStore, lang, productCriteria);
ReadableProductPopulator populator = new ReadableProductPopulator();
populator.setPricingService(pricingService);
populator.setimageUtils(imageUtils);
ReadableProductList productList = new ReadableProductList();
for (Product product : products.getProducts()) {
// create new proxy product
ReadableProduct readProduct = populator.populate(product, new ReadableProduct(), merchantStore, lang);
productList.getProducts().add(readProduct);
}
productList.setTotalPages(Math.toIntExact(products.getTotalCount()));
return productList;
} catch (Exception e) {
LOGGER.error("Error while getting products", e);
response.sendError(503, "An error occured while retrieving products " + e.getMessage());
}
return null;
}
use of com.salesmanager.shop.populator.catalog.ReadableProductPopulator in project shopizer by shopizer-ecommerce.
the class SearchFacadeImpl method convertProductToReadableProduct.
private ReadableProduct convertProductToReadableProduct(Product product, MerchantStore merchantStore, Language language) {
ReadableProductPopulator populator = new ReadableProductPopulator();
populator.setPricingService(pricingService);
populator.setimageUtils(imageUtils);
try {
return populator.populate(product, new ReadableProduct(), merchantStore, language);
} catch (ConversionException e) {
throw new ConversionRuntimeException(e);
}
}
Aggregations