use of com.salesmanager.shop.populator.catalog.PersistableProductReviewPopulator in project shopizer by shopizer-ecommerce.
the class ProductFacadeImpl method saveOrUpdateReview.
@Override
public void saveOrUpdateReview(PersistableProductReview review, MerchantStore store, Language language) throws Exception {
PersistableProductReviewPopulator populator = new PersistableProductReviewPopulator();
populator.setLanguageService(languageService);
populator.setCustomerService(customerService);
populator.setProductService(productService);
com.salesmanager.core.model.catalog.product.review.ProductReview rev = new com.salesmanager.core.model.catalog.product.review.ProductReview();
populator.populate(review, rev, store, language);
if (review.getId() == null) {
productReviewService.create(rev);
} else {
productReviewService.update(rev);
}
review.setId(rev.getId());
}
use of com.salesmanager.shop.populator.catalog.PersistableProductReviewPopulator in project shopizer by shopizer-ecommerce.
the class ProductCommonFacadeImpl method saveOrUpdateReview.
@Override
public void saveOrUpdateReview(PersistableProductReview review, MerchantStore store, Language language) throws Exception {
PersistableProductReviewPopulator populator = new PersistableProductReviewPopulator();
populator.setLanguageService(languageService);
populator.setCustomerService(customerService);
populator.setProductService(productService);
com.salesmanager.core.model.catalog.product.review.ProductReview rev = new com.salesmanager.core.model.catalog.product.review.ProductReview();
populator.populate(review, rev, store, language);
if (review.getId() == null) {
productReviewService.create(rev);
} else {
productReviewService.update(rev);
}
review.setId(rev.getId());
}
use of com.salesmanager.shop.populator.catalog.PersistableProductReviewPopulator in project shopizer by shopizer-ecommerce.
the class ShopProductRESTController method createProductReview.
@RequestMapping(value = "/private/{store}/product/review", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
@ResponseBody
public PersistableProductReview createProductReview(@PathVariable final String store, @Valid @RequestBody PersistableProductReview review, HttpServletRequest request, HttpServletResponse response) throws Exception {
try {
MerchantStore merchantStore = (MerchantStore) request.getAttribute(Constants.MERCHANT_STORE);
if (merchantStore != null) {
if (!merchantStore.getCode().equals(store)) {
merchantStore = null;
}
}
if (merchantStore == null) {
merchantStore = merchantStoreService.getByCode(store);
}
if (merchantStore == null) {
LOGGER.error("Merchant store is null for code " + store);
response.sendError(500, "Merchant store is null for code " + store);
return null;
}
// rating already exist
ProductReview prodReview = productReviewService.getByProductAndCustomer(review.getProductId(), review.getCustomerId());
if (prodReview != null) {
response.sendError(500, "A review already exist for this customer and product");
return null;
}
// rating maximum 5
if (review.getRating() > Constants.MAX_REVIEW_RATING_SCORE) {
response.sendError(503, "Maximum rating score is " + Constants.MAX_REVIEW_RATING_SCORE);
return null;
}
PersistableProductReviewPopulator populator = new PersistableProductReviewPopulator();
populator.setLanguageService(languageService);
populator.setCustomerService(customerService);
populator.setProductService(productService);
com.salesmanager.core.model.catalog.product.review.ProductReview rev = new com.salesmanager.core.model.catalog.product.review.ProductReview();
populator.populate(review, rev, merchantStore, merchantStore.getDefaultLanguage());
productReviewService.create(rev);
review.setId(rev.getId());
return review;
} catch (Exception e) {
LOGGER.error("Error while saving product review", e);
try {
response.sendError(503, "Error while saving product review" + e.getMessage());
} catch (Exception ignore) {
}
return null;
}
}
use of com.salesmanager.shop.populator.catalog.PersistableProductReviewPopulator in project shopizer by shopizer-ecommerce.
the class CustomerProductReviewController method submitProductReview.
@PreAuthorize("hasRole('AUTH_CUSTOMER')")
@RequestMapping(value = "/review/submit.html", method = RequestMethod.POST)
public String submitProductReview(@ModelAttribute("review") PersistableProductReview review, BindingResult bindingResult, Model model, HttpServletRequest request, HttpServletResponse response, Locale locale) throws Exception {
MerchantStore store = getSessionAttribute(Constants.MERCHANT_STORE, request);
Language language = getLanguage(request);
Customer customer = customerFacade.getCustomerByUserName(request.getRemoteUser(), store);
if (customer == null) {
return "redirect:" + Constants.SHOP_URI;
}
Product product = productService.getById(review.getProductId());
if (product == null) {
return "redirect:" + Constants.SHOP_URI;
}
if (StringUtils.isBlank(review.getDescription())) {
FieldError error = new FieldError("description", "description", messages.getMessage("NotEmpty.review.description", locale));
bindingResult.addError(error);
}
if (review.getRating() == null) {
FieldError error = new FieldError("rating", "rating", messages.getMessage("NotEmpty.review.rating", locale, "Product rating is required"));
bindingResult.addError(error);
}
review.setDescription(SanitizeUtils.getSafeString(review.getDescription()));
ReadableProduct readableProduct = new ReadableProduct();
ReadableProductPopulator readableProductPopulator = new ReadableProductPopulator();
readableProductPopulator.setPricingService(pricingService);
readableProductPopulator.setimageUtils(imageUtils);
readableProductPopulator.populate(product, readableProduct, store, language);
model.addAttribute("product", readableProduct);
/**
* template *
*/
StringBuilder template = new StringBuilder().append(ControllerConstants.Tiles.Customer.review).append(".").append(store.getStoreTemplate());
if (bindingResult.hasErrors()) {
return template.toString();
}
// check if customer has already evaluated the product
List<ProductReview> reviews = productReviewService.getByProduct(product);
for (ProductReview r : reviews) {
if (r.getCustomer().getId().longValue() == customer.getId().longValue()) {
ReadableProductReviewPopulator reviewPopulator = new ReadableProductReviewPopulator();
ReadableProductReview rev = new ReadableProductReview();
reviewPopulator.populate(r, rev, store, language);
model.addAttribute("customerReview", rev);
return template.toString();
}
}
PersistableProductReviewPopulator populator = new PersistableProductReviewPopulator();
populator.setCustomerService(customerService);
populator.setLanguageService(languageService);
populator.setProductService(productService);
review.setDate(DateUtil.formatDate(new Date()));
review.setCustomerId(customer.getId());
ProductReview productReview = populator.populate(review, store, language);
productReviewService.create(productReview);
model.addAttribute("review", review);
model.addAttribute("success", "success");
ReadableProductReviewPopulator reviewPopulator = new ReadableProductReviewPopulator();
ReadableProductReview rev = new ReadableProductReview();
reviewPopulator.populate(productReview, rev, store, language);
model.addAttribute("customerReview", rev);
return template.toString();
}
Aggregations