package org.onehippo.forge.konakart.site.service.impl; import com.konakart.al.KKAppEng; import com.konakart.al.KKAppException; import com.konakart.al.ReviewMgr; import com.konakart.app.KKException; import com.konakart.app.Review; import com.konakart.appif.ReviewIf; import com.konakart.util.Utils; import com.konakartadmin.app.AdminReview; import com.konakartadmin.blif.AdminReviewMgrIf; import org.hippoecm.hst.core.component.HstRequest; import org.onehippo.forge.konakart.common.engine.KKAdminEngine; import org.onehippo.forge.konakart.site.service.KKReviewService; import org.onehippo.forge.konakart.site.service.KKServiceHelper; import javax.annotation.Nonnull; public class KKReviewServiceImpl extends KKBaseServiceImpl implements KKReviewService { @Override public ReviewIf[] getReviewsForProductId(@Nonnull HstRequest request, int productId) { return getReviewsForProductId(request, productId, false); } @Override @Nonnull public ReviewIf[] getReviewsForProductId(@Nonnull HstRequest request, int productId, boolean showInvisible) { KKAppEng kkAppEng = getKKAppEng(request); ReviewMgr reviewMgr = kkAppEng.getReviewMgr(); try { reviewMgr.getDataDesc().setShowInvisible(showInvisible); int nbReviews = reviewMgr.fetchReviewsPerProduct(productId); if (nbReviews > 0) { return reviewMgr.getCurrentReviews(); } } catch (KKException e) { log.warn("Failed to fetch the list of reviews"); } catch (KKAppException e) { log.warn("Failed to fetch the list of reviews"); } return new Review[0]; } @Override public void writeReview(HstRequest request, String reviewText, int rating, int customerId) throws Exception { ReviewMgr reviewMgr = KKServiceHelper.getKKEngineService().getKKAppEng(request).getReviewMgr(); reviewMgr.writeReview(reviewText, rating, customerId); } @Override public int writeReview(HstRequest request, int productId, String reviewText, int rating, int customerId) throws Exception { KKAppEng kkAppEng = getKKAppEng(request); Review review = new Review(); review.setRating(rating); review.setReviewText(Utils.escapeHtml(reviewText)); review.setProductId(productId); review.setLanguageId(kkAppEng.getLangId()); review.setCustomerId(customerId); return kkAppEng.getEng().writeReview(kkAppEng.getSessionId(), review); } @Override public int writeReview(HstRequest request, int productId, String reviewText, int rating, int customerId, boolean isVisible) throws Exception { KKAppEng kkAppEng = getKKAppEng(request); AdminReviewMgrIf reviewMgr = KKAdminEngine.getInstance().getFactory().getAdminReviewMgr(true); AdminReview review = new AdminReview(); review.setRating(rating); review.setReviewText(Utils.escapeHtml(reviewText)); review.setProductId(productId); review.setLanguageId(kkAppEng.getLangId()); review.setCustomerId(customerId); review.setStatus(isVisible ? 1 : 0); return reviewMgr.insertReview(review); } }