use of com.salesmanager.core.model.catalog.category.Category in project shopizer by shopizer-ecommerce.
the class CategoryServiceImpl method delete.
// @Override
public void delete(Category category) throws ServiceException {
// get category with lineage (subcategories)
StringBuilder lineage = new StringBuilder();
lineage.append(category.getLineage()).append(category.getId()).append(Constants.SLASH);
List<Category> categories = this.getListByLineage(category.getMerchantStore(), lineage.toString());
Category dbCategory = getById(category.getId(), category.getMerchantStore().getId());
if (dbCategory != null && dbCategory.getId().longValue() == category.getId().longValue()) {
categories.add(dbCategory);
Collections.reverse(categories);
List<Long> categoryIds = new ArrayList<Long>();
for (Category c : categories) {
categoryIds.add(c.getId());
}
List<Product> products = productService.getProducts(categoryIds);
for (Product product : products) {
// session.evict(product);// refresh product so we get all
// product categories
Product dbProduct = productService.getById(product.getId());
Set<Category> productCategories = dbProduct.getCategories();
if (productCategories.size() > 1) {
for (Category c : categories) {
productCategories.remove(c);
productService.update(dbProduct);
}
if (product.getCategories() == null || product.getCategories().size() == 0) {
productService.delete(dbProduct);
}
} else {
productService.delete(dbProduct);
}
}
Category categ = getById(category.getId(), category.getMerchantStore().getId());
categoryRepository.delete(categ);
}
}
use of com.salesmanager.core.model.catalog.category.Category 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.core.model.catalog.category.Category in project shopizer by shopizer-ecommerce.
the class ProductApi method addProductToCategory.
@ResponseStatus(HttpStatus.CREATED)
@RequestMapping(value = { "/private/product/{productId}/category/{categoryId}", "/auth/product/{productId}/category/{categoryId}" }, method = RequestMethod.POST)
@ApiImplicitParams({ @ApiImplicitParam(name = "store", dataType = "String", defaultValue = "DEFAULT"), @ApiImplicitParam(name = "lang", dataType = "String", defaultValue = "en") })
@ResponseBody
public ReadableProduct addProductToCategory(@PathVariable Long productId, @PathVariable Long categoryId, @ApiIgnore MerchantStore merchantStore, @ApiIgnore Language language, HttpServletResponse response) throws Exception {
try {
// get the product
Product product = productService.getById(productId);
if (product == null) {
throw new ResourceNotFoundException("Product id [" + productId + "] is not found");
}
if (product.getMerchantStore().getId().intValue() != merchantStore.getId().intValue()) {
throw new UnauthorizedException("Product id [" + productId + "] does not belong to store [" + merchantStore.getCode() + "]");
}
Category category = categoryService.getById(categoryId);
if (category == null) {
throw new ResourceNotFoundException("Category id [" + categoryId + "] is not found");
}
if (category.getMerchantStore().getId().intValue() != merchantStore.getId().intValue()) {
throw new UnauthorizedException("Category id [" + categoryId + "] does not belong to store [" + merchantStore.getCode() + "]");
}
return productCommonFacade.addProductToCategory(category, product, language);
} catch (Exception e) {
LOGGER.error("Error while adding product to category", e);
try {
response.sendError(503, "Error while adding product to category " + e.getMessage());
} catch (Exception ignore) {
}
return null;
}
}
use of com.salesmanager.core.model.catalog.category.Category in project shopizer by shopizer-ecommerce.
the class ProductApi method removeProductFromCategory.
@ResponseStatus(HttpStatus.OK)
@RequestMapping(value = { "/private/product/{productId}/category/{categoryId}", "/auth/product/{productId}/category/{categoryId}" }, method = RequestMethod.DELETE)
@ApiImplicitParams({ @ApiImplicitParam(name = "store", dataType = "String", defaultValue = "DEFAULT"), @ApiImplicitParam(name = "lang", dataType = "String", defaultValue = "en") })
@ResponseBody
public ReadableProduct removeProductFromCategory(@PathVariable Long productId, @PathVariable Long categoryId, @ApiIgnore MerchantStore merchantStore, @ApiIgnore Language language, HttpServletResponse response) {
try {
Product product = productService.getById(productId);
if (product == null) {
throw new ResourceNotFoundException("Product id [" + productId + "] is not found");
}
if (product.getMerchantStore().getId().intValue() != merchantStore.getId().intValue()) {
throw new UnauthorizedException("Product id [" + productId + "] does not belong to store [" + merchantStore.getCode() + "]");
}
Category category = categoryService.getById(categoryId);
if (category == null) {
throw new ResourceNotFoundException("Category id [" + categoryId + "] is not found");
}
if (category.getMerchantStore().getId().intValue() != merchantStore.getId().intValue()) {
throw new UnauthorizedException("Category id [" + categoryId + "] does not belong to store [" + merchantStore.getCode() + "]");
}
return productCommonFacade.removeProductFromCategory(category, product, language);
} catch (Exception e) {
LOGGER.error("Error while removing product from category", e);
try {
response.sendError(503, "Error while removing product from category " + e.getMessage());
} catch (Exception ignore) {
}
return null;
}
}
use of com.salesmanager.core.model.catalog.category.Category in project shopizer by shopizer-ecommerce.
the class CategoryFacadeImpl method getCategoryByFriendlyUrl.
@Override
public ReadableCategory getCategoryByFriendlyUrl(MerchantStore store, String friendlyUrl, Language language) throws Exception {
Validate.notNull(friendlyUrl, "Category search friendly URL must not be null");
ReadableCategoryPopulator categoryPopulator = new ReadableCategoryPopulator();
ReadableCategory readableCategory = new ReadableCategory();
Category category = categoryService.getBySeUrl(store, friendlyUrl);
categoryPopulator.populate(category, readableCategory, store, language);
return readableCategory;
}
Aggregations