Skip to content

Commit

Permalink
add support for dataFields
Browse files Browse the repository at this point in the history
  • Loading branch information
hani329 committed Nov 16, 2023
1 parent 748ef79 commit fba7260
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ public final class IterableConstants {
public static final String SHARED_PREFS_SESSION_NO = "number_of_sessions";
public static final String SHARED_PREFS_LAST_SESSION = "last_session";
public static final String SHARED_PREFS_FIRST_SESSION = "first_session";
public static final String SHARED_PREFS_EVENT_TYPE = "eventType";
public static final String SHARED_PREFS_EVENT_TYPE = "dataType";
public static final String SHARED_PREFS_CRITERIA = "criteria";
public static final String SHARED_PREFS_CRITERIA_LIST = "criteriaList";
public static final String SHARED_PREFS_CRITERIA_TYPE = "dataType";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,8 @@ public Integer getMatchedCriteria(String criteriaData, JSONArray localStoredEven

JSONObject searchQuery = criteria.getJSONObject("searchQuery");
int currentCriteriaId = criteria.getInt("criteriaId");
JSONArray eventsToProcess = getPurchaseEventsToProcess();

JSONArray nonPurchaseEvents = getNonPurchaseEvents();
JSONArray eventsToProcess = getEventsWithCartItems();
JSONArray nonPurchaseEvents = getNonCartEvents();
for (int j = 0; j < nonPurchaseEvents.length(); j++) {
eventsToProcess.put(nonPurchaseEvents.getJSONObject(j));
}
Expand All @@ -51,29 +50,47 @@ public Integer getMatchedCriteria(String criteriaData, JSONArray localStoredEven
return criteriaId;
}

private JSONArray getPurchaseEventsToProcess() {
private JSONArray getEventsWithCartItems() {
JSONArray processedEvents = new JSONArray();
try {
for (int i = 0; i < localStoredEventList.length(); i++) {
JSONObject localEventData = localStoredEventList.getJSONObject(i);
if (localEventData.has(IterableConstants.SHARED_PREFS_EVENT_TYPE) && (
localEventData.get(IterableConstants.SHARED_PREFS_EVENT_TYPE).equals(IterableConstants.TRACK_PURCHASE)
|| (localEventData.get(IterableConstants.SHARED_PREFS_EVENT_TYPE).equals(IterableConstants.TRACK_UPDATE_CART)))) {

JSONObject updatedItem = new JSONObject();
if (localEventData.has(IterableConstants.KEY_ITEMS)) {

JSONArray items = new JSONArray(localEventData.getString(IterableConstants.KEY_ITEMS));
for (int j = 0; j < items.length(); j++) {
JSONObject updatedItem = items.getJSONObject(j);
Iterator<String> keys = localEventData.keys();
while (keys.hasNext()) {
String key = keys.next();
if (!key.equals(IterableConstants.KEY_ITEMS)) {
updatedItem.put(key, localEventData.get(key));
}
JSONObject item = items.getJSONObject(j);
Iterator<String> itemKeys = item.keys();

while (itemKeys.hasNext()) {
String key = itemKeys.next();
updatedItem.put("shoppingCartItems." + key, item.get(key));
}
processedEvents.put(updatedItem);
}
}

if (localEventData.has("dataFields")) {
JSONObject dataFields = localEventData.getJSONObject("dataFields");
Iterator<String> fieldKeys = dataFields.keys();
while (fieldKeys.hasNext()) {
String key = fieldKeys.next();
updatedItem.put(key, dataFields.get(key));
}
}

Iterator<String> keys = localEventData.keys();
while (keys.hasNext()) {
String key = keys.next();
if (!key.equals(IterableConstants.KEY_ITEMS) && !key.equals("dataFields")) {
updatedItem.put(key, localEventData.get(key));
}
}
processedEvents.put(updatedItem);
}
}
} catch (JSONException e) {
Expand All @@ -82,7 +99,7 @@ private JSONArray getPurchaseEventsToProcess() {
return processedEvents;
}

private JSONArray getNonPurchaseEvents() {
private JSONArray getNonCartEvents() {
JSONArray nonPurchaseEvents = new JSONArray();
try {
for (int i = 0; i < localStoredEventList.length(); i++) {
Expand Down Expand Up @@ -155,7 +172,7 @@ private boolean evaluateFieldLogic(JSONObject node, JSONArray localEventData) th
ArrayList<String> localDataKeys = extractKeys(eventData);

for (String key : localDataKeys) {
if (field.endsWith(key)) {
if (field.equals(key)) {
Object matchedCountObj = eventData.get(key);
if (evaluateComparison(comparatorType, matchedCountObj, node.getString("value"))) {
return true;
Expand Down

0 comments on commit fba7260

Please sign in to comment.