in ebaystore/src/main/java/org/apache/ofbiz/ebaystore/EbayStoreAutoPreferences.java [128:221]
public static Map<String, Object> autoPrefLeaveFeedbackOption(DispatchContext dctx, Map<String, ? extends Object> context) throws ApiException, SdkException, Exception {
Delegator delegator = dctx.getDelegator();
Locale locale = (Locale) context.get("locale");
if (UtilValidate.isEmpty(context.get("productStoreId")) && UtilValidate.isEmpty(context.get("jobId"))) {
return ServiceUtil.returnFailure(UtilProperties.getMessage(RESOURCE, "EbayStoreRequiredProductStoreId", locale));
}
String jobId = (String) context.get("jobId");
String productStoreId = (String) context.get("productStoreId");
String isAutoPositiveFeedback = "N";
String feedbackEventCode = null;
GenericValue ebayProductStorePref = null;
List<String> list = new LinkedList<>();
try {
ApiContext apiContext = EbayStoreHelper.getApiContext(productStoreId, locale, delegator);
ebayProductStorePref = EntityQuery.use(delegator).from("EbayProductStorePref").where("productStoreId", productStoreId, "autoPrefEnumId", "EBAY_AUTO_PIT_FB").queryOne();
if (ebayProductStorePref != null && UtilValidate.isNotEmpty(ebayProductStorePref.getString("autoPrefJobId"))) {
isAutoPositiveFeedback = ebayProductStorePref.getString("enabled");
// if isAutoPositiveFeedback is N that means not start this job run service
if ("Y".equals(isAutoPositiveFeedback) && jobId.equals(ebayProductStorePref.getString("autoPrefJobId"))) {
feedbackEventCode = ebayProductStorePref.getString("condition1");
String storeComments = ebayProductStorePref.getString("condition2");
String comment = null;
if (UtilValidate.isNotEmpty(storeComments)) {
if (storeComments.indexOf("\\[,\\]") != -1) {
String[] strs = storeComments.split("\\[,\\]");
for (String str : strs) {
list.add(str);
}
}
}
// start getting sold item list from ebay follow your site
GetSellingManagerSoldListingsCall sellingManagerSoldListings = new GetSellingManagerSoldListingsCall(apiContext);
List<SellingManagerSoldOrderType> items = new LinkedList<SellingManagerSoldOrderType>();
SellingManagerSoldOrderType[] sellingManagerSoldOrders = sellingManagerSoldListings.getSellingManagerSoldListings();
if (UtilValidate.isNotEmpty(sellingManagerSoldOrders)) {
for (SellingManagerSoldOrderType solditem : sellingManagerSoldOrders) {
SellingManagerOrderStatusType orderStatus = solditem.getOrderStatus();
if (orderStatus != null && !orderStatus.isFeedbackSent()) {
SellingManagerPaidStatusCodeType paidStatus = orderStatus.getPaidStatus();
CommentTypeCodeType commentType = orderStatus.getFeedbackReceived();
//Buyer has paid for this item.
if ("PAYMENT_RECEIVED".equals(feedbackEventCode) && SellingManagerPaidStatusCodeType.PAID.equals(paidStatus)) {
items.add(solditem);
}
//Buyer has paid for this item and left me positive feedback.
if ("POSITIVE_FEEDBACK_RECEIVED".equals(feedbackEventCode) && CommentTypeCodeType.POSITIVE.equals(commentType) && SellingManagerPaidStatusCodeType.PAID.equals(paidStatus)) {
items.add(solditem);
}
}
}
GetUserCall getUserCall = new GetUserCall(apiContext);
String commentingUser = getUserCall.getUser().getUserID();
for (SellingManagerSoldOrderType item : items) {
// start leave feedbacks
SellingManagerSoldTransactionType[] soldTrans = item.getSellingManagerSoldTransaction();
if (UtilValidate.isNotEmpty(soldTrans)) {
for (SellingManagerSoldTransactionType soldTran : soldTrans) {
LeaveFeedbackCall leaveFeedbackCall = new LeaveFeedbackCall(apiContext);
FeedbackDetailType detail = new FeedbackDetailType();
// ramdom comments
if (!list.isEmpty()) {
Collections.shuffle(list, new Random());
comment = list.get(0);
}
detail.setCommentText(comment);
detail.setCommentingUser(commentingUser);
//detail.setCommentingUserScore(value);
detail.setCommentType(CommentTypeCodeType.POSITIVE);
detail.setItemID(soldTran.getItemID());
detail.setItemPrice(soldTran.getItemPrice());
detail.setItemTitle(soldTran.getItemTitle());
leaveFeedbackCall.setFeedbackDetail(detail);
leaveFeedbackCall.setTargetUser(item.getBuyerID());
leaveFeedbackCall.setTransactionID(String.valueOf(soldTran.getTransactionID()));
leaveFeedbackCall.leaveFeedback();
Debug.logInfo("Auto leave feedback with site ".concat(apiContext.getSite().value()).concat("itemId ".concat(soldTran.getItemID())).concat(" comment is ".concat(comment)), MODULE);
}
}
}
}
}
}
} catch (GenericEntityException gee) {
return ServiceUtil.returnError(gee.getMessage());
} catch (Exception e) {
return ServiceUtil.returnFailure(UtilProperties.getMessage(RESOURCE, "EbayStoreProblemConnectingToEbaySite", locale) + e);
}
return ServiceUtil.returnSuccess();
}