package com.salesmanager.shop.store.controller.items.facade;
import com.salesmanager.core.business.services.catalog.product.PricingService;
import com.salesmanager.core.business.services.catalog.product.ProductService;
import com.salesmanager.core.model.catalog.product.Product;
import com.salesmanager.core.model.catalog.product.ProductCriteria;
import com.salesmanager.core.model.merchant.MerchantStore;
import com.salesmanager.core.model.reference.language.Language;
import com.salesmanager.shop.model.catalog.product.ReadableProduct;
import com.salesmanager.shop.model.catalog.product.ReadableProductList;
import com.salesmanager.shop.populator.catalog.ReadableProductPopulator;
import com.salesmanager.shop.utils.ImageFilePath;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import java.util.List;
import javax.inject.Inject;
@Component
public class ProductItemsFacadeImpl implements ProductItemsFacade {
@Inject
ProductService productService;
@Inject
PricingService pricingService;
@Inject
@Qualifier("img")
private ImageFilePath imageUtils;
@Override
public ReadableProductList listItemsByManufacturer(MerchantStore store,
Language language, Long manufacturerId, int startCount, int maxCount) throws Exception {
ProductCriteria productCriteria = new ProductCriteria();
productCriteria.setMaxCount(maxCount);
productCriteria.setStartIndex(startCount);
productCriteria.setManufacturerId(manufacturerId);
com.salesmanager.core.model.catalog.product.ProductList products = productService.listByStore(store, language, 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(), store, language);
productList.getProducts().add(readProduct);
}
productList.setTotalCount(products.getTotalCount());
return productList;
}
@Override
public ReadableProductList listItemsByIds(MerchantStore store, Language language, List<Long> ids, int startCount,
int maxCount) throws Exception {
ProductCriteria productCriteria = new ProductCriteria();
productCriteria.setMaxCount(maxCount);
productCriteria.setStartIndex(startCount);
productCriteria.setProductIds(ids);
com.salesmanager.core.model.catalog.product.ProductList products = productService.listByStore(store, language, 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(), store, language);
productList.getProducts().add(readProduct);
}
productList.setTotalCount(products.getTotalCount());
return productList;
}
}