in ebaystore/src/main/java/org/apache/ofbiz/ebaystore/EbayStoreAutoPreferences.java [223:309]
public static String autoPrefLeaveFeedbackOptions(HttpServletRequest request, HttpServletResponse response) {
LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher");
Delegator delegator = (Delegator) request.getAttribute("delegator");
Locale locale = UtilHttp.getLocale(request);
Map<String, Object> paramMap = UtilHttp.getCombinedMap(request);
if (UtilValidate.isEmpty(paramMap.get("productStoreId"))) {
request.setAttribute("_ERROR_MESSAGE_", "Required productStoreId for get api context to connect with ebay site.");
return "error";
}
String productStoreId = (String) paramMap.get("productStoreId");
String isAutoPositiveFeedback = "N";
String condition = null;
if (UtilValidate.isNotEmpty(paramMap.get("isAutoPositiveFeedback"))) {
isAutoPositiveFeedback = (String) paramMap.get("isAutoPositiveFeedback");
}
String feedbackEventCode = (String) paramMap.get("feedbackEventCode");
ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator);
try {
Map<String, Object> resultMap = new HashMap<>();
GenericValue ebayProductStorePref = null;
String comments = null;
String autoPrefJobId = null;
GenericValue userLogin = EntityQuery.use(delegator).from("UserLogin").where("userLoginId", "system").queryOne();
if ("Y".equals(isAutoPositiveFeedback)) {
if ("PAYMENT_RECEIVED".equals(feedbackEventCode)) {
condition = AutomatedLeaveFeedbackEventCodeType.PAYMENT_RECEIVED.toString();
} else if ("POSITIVE_FEEDBACK_RECEIVED".equals(feedbackEventCode)) {
condition = AutomatedLeaveFeedbackEventCodeType.POSITIVE_FEEDBACK_RECEIVED.toString();
}
// allow only 10 comment can be store / set new comments to condition2 separate by [,]
}
for (int i = 1; i <= 5; i++) {
String comment = (String) paramMap.get("comment_".concat(String.valueOf(i)));
if (comment != null && !comment.isEmpty()) {
if (comments == null) {
comments = comment;
} else {
comments = comments.concat("[").concat(",").concat(("]").concat(comment));
}
}
}
if (UtilValidate.isEmpty(comments)) {
request.setAttribute("_ERROR_MESSAGE_", "Required least one at comment for your store feedback send with ebay site.");
return "error";
}
Map<String, Object> context = UtilMisc.<String, Object>toMap("userLogin", userLogin, "serviceName", "autoPrefLeaveFeedbackOption");
ebayProductStorePref = EntityQuery.use(delegator).from("EbayProductStorePref").where("productStoreId", productStoreId, "autoPrefEnumId", "EBAY_AUTO_PIT_FB").queryOne();
context.put("productStoreId", productStoreId);
context.put("autoPrefEnumId", "EBAY_AUTO_PIT_FB");
if (ebayProductStorePref != null && UtilValidate.isNotEmpty(ebayProductStorePref.getString("autoPrefJobId"))) {
autoPrefJobId = ebayProductStorePref.getString("autoPrefJobId");
}
context.put("autoPrefJobId", autoPrefJobId);
context.put("enabled", isAutoPositiveFeedback);
context.put("condition1", condition);
context.put("condition2", comments);
context.put("condition3", null);
if (UtilValidate.isEmpty(ebayProductStorePref)) {
resultMap = dispatcher.runSync("createEbayProductStorePref", context);
if (ServiceUtil.isError(resultMap)) {
String errorMessage = ServiceUtil.getErrorMessage(resultMap);
request.setAttribute("_ERROR_MESSAGE_", errorMessage);
Debug.logError(errorMessage, MODULE);
return "error";
}
} else {
resultMap = dispatcher.runSync("updateEbayProductStorePref", context);
if (ServiceUtil.isError(resultMap)) {
String errorMessage = ServiceUtil.getErrorMessage(resultMap);
request.setAttribute("_ERROR_MESSAGE_", errorMessage);
Debug.logError(errorMessage, MODULE);
return "error";
}
}
request.setAttribute("_EVENT_MESSAGE_", "Setting Automated Positive Feedback for Buyers Success with site " + apiContext.getSite().value());
} catch (GenericEntityException | GenericServiceException e) {
request.setAttribute("_ERROR_MESSAGE_", e.getMessage());
return "error";
}
return "success";
}