/// <reference path="../recengine/event/IProductEvent.ts" />
/// <reference path="../recengine/context/ProductReference.ts" />
/// <reference path="../recengine/event/ProductViewEvent.ts" />
/// <reference path="../recengine/event/ProductBuyEvent.ts" />
/// <reference path="../recengine/event/ProductAddToCartEvent.ts" />
/// <reference path="../data.ts" />
/// <reference path="DateUtils.ts" />
/// <reference path="Json.ts" />
var econda;
(function (econda) {
var util;
(function (util) {
var ProductAddToCartEvent = econda.recengine.event.ProductAddToCartEvent;
var ProductBuyEvent = econda.recengine.event.ProductBuyEvent;
var ProductViewEvent = econda.recengine.event.ProductViewEvent;
var DateUtils = econda.util.DateUtils;
/**
* Helper class for zero gap support.
* @class econda.util.ZeroGapUtil
*/
var ZeroGapUtil = (function () {
function ZeroGapUtil() {
}
ZeroGapUtil.appendProfileProperties = function (params, profileProperties) {
for (var key in profileProperties) {
if (profileProperties.hasOwnProperty(key)) {
params['p.' + key] = profileProperties[key];
}
}
};
ZeroGapUtil.appendHistoryFromProfile = function (params) {
var history = econda.data.visitor.getHistory();
params['p.ec:productBasketAddList'] = ZeroGapUtil.convertProductEventListToJsonParamValue(history.getFilteredItems(function (e) { return e instanceof ProductAddToCartEvent; }));
params['p.ec:productBuyList'] = ZeroGapUtil.convertProductEventListToJsonParamValue(history.getFilteredItems(function (e) { return e instanceof ProductBuyEvent; }));
params['p.ec:productViewList'] = ZeroGapUtil.convertProductEventListToJsonParamValue(history.getFilteredItems(function (e) { return e instanceof ProductViewEvent; }));
};
ZeroGapUtil.convertProductEventListToJsonParamValue = function (productEvents) {
var resultData = [];
for (var i = 0; i < productEvents.length; i++) {
var productReference;
if (productReference = productEvents[i].getProduct()) {
if (productReference.getSku() !== null) {
resultData.push({
t: DateUtils.toUtcIsoString(productEvents[i].getTimestamp()),
sku: productReference.getSku()
});
}
else {
resultData.push({
t: DateUtils.toUtcIsoString(productEvents[i].getTimestamp()),
pid: productReference.getId()
});
}
}
}
var sortedProductList = resultData.reverse();
return econda.util.Json.stringify(sortedProductList);
};
return ZeroGapUtil;
}());
util.ZeroGapUtil = ZeroGapUtil;
})(util = econda.util || (econda.util = {}));
})(econda || (econda = {}));