{"version":3,"file":"mosoft.estore.min.js","sources":["mosoft.estore.js"],"sourcesContent":["(function (w, factory) {\r\n w.PublicEStore = factory();\r\n}(window, function () {\r\n var $ = window.jQuery;\r\n var _ = window._;\r\n var globalActionChannel = 'estore.action';\r\n var globalCallbackChannel = 'estore.callback';\r\n var globalErrorChannel = 'estore.error';\r\n\r\n var handlerUrl = window.R + 'Handlers/Public/PublicEStore.ashx';\r\n\r\n var internalCache = {};\r\n\r\n var publicEStore = {\r\n name: 'MPEF'\r\n };\r\n\r\n // Check if PubSub engine was loaded\r\n var pubSub = window.PubSub;\r\n if(typeof pubSub !== 'object' || !pubSub) {\r\n console.error('PubSub library is not loaded');\r\n return null;\r\n }\r\n\r\n // Supported action values should always be in lower case!\r\n var supportedActions = {\r\n addToCart: 'addtocart',\r\n removeFromCart: 'removefromcart',\r\n emptyCart: 'emptycart',\r\n updateCartQuantity: 'updatecartquantity',\r\n getCartInfo: 'getcartinfo',\r\n getDetailedCartInfo: 'getdetailedcartinfo',\r\n getTempOrderLines: 'gettemporderlines',\r\n getBuyFeedbackData: 'getbuyfeedbackdata',\r\n addToShoppingList: 'addtoshoppinglist',\r\n removeFromShoppingList: 'removefromshoppinglist',\r\n addToWishList: 'addtowishlist',\r\n removeFromWishList: 'removefromwishlist',\r\n getShoppingList: 'getshoppinglist',\r\n getShoppingLists: 'getshoppinglists',\r\n addShoppingList: 'addshoppinglist',\r\n updateShoppingList: 'updateshoppinglist',\r\n updateShoppingListItemsQuantity: 'updateshoppinglistitemsquantity',\r\n updateShoppingListItemsDescription: 'updateshoppinglistitemsdescription',\r\n removeShoppingList: 'removeshoppinglist',\r\n getShoppingListInfo: 'getshoppinglistinfo',\r\n getWishListInfo: 'getwishlistinfo',\r\n getEStoreContext: 'getestorecontext',\r\n getCustomerShoppingHistory: 'getcustomershoppinghistory',\r\n reorderShoppingListItems: 'reordershoppinglistitems',\r\n addToOfferRequest: 'addtoofferrequest',\r\n getofferrequestsinfo: 'getofferrequestsinfo',\r\n removefromcartofferrequest: 'removefromcartofferrequest',\r\n emptyofferrequests: 'emptyofferrequests'\r\n };\r\n\r\n var supportedChannels = {\r\n action: {\r\n global: globalActionChannel,\r\n shopCart: globalActionChannel + '.shopcart',\r\n shoppingList: globalActionChannel + '.shoppinglist',\r\n offerRequest: globalActionChannel + '.offerrequest'\r\n },\r\n callback: {\r\n global: globalCallbackChannel,\r\n shopCart: globalCallbackChannel + '.shopcart',\r\n shoppingList: globalCallbackChannel + '.shoppinglist',\r\n offerRequest: globalCallbackChannel + '.offerrequest'\r\n },\r\n error: {\r\n global: globalErrorChannel\r\n }\r\n };\r\n\r\n var actionHandler = function (topic, requestObj, deferred, isPrivate) {\r\n if (typeof requestObj === 'object' && requestObj) {\r\n var privateAction = !!isPrivate;\r\n var contract = _.omit(requestObj, ['callerId', 'transactionId', 'action', 'includeVat']);\r\n var errorTopic = requestObj.callerId ? globalErrorChannel + '.' + requestObj.callerId : globalErrorChannel;\r\n $.ajax({\r\n url: handlerUrl,\r\n type: 'POST',\r\n data: {\r\n callerId: requestObj.callerId,\r\n transactionId: requestObj.transactionId ? requestObj.transactionId : new Date().getTime(),\r\n action: requestObj.action,\r\n contract: JSON.stringify(contract),\r\n includeVat: requestObj.includeVat\r\n },\r\n dataType: 'json',\r\n success: function (response) {\r\n switch (response.status.toLowerCase()) {\r\n case 'ok':\r\n case 'warning':\r\n // Publish message only for the public actions\r\n if (!privateAction) {\r\n var pubTopic = topic.replace(globalActionChannel, globalCallbackChannel) + '.' + response.action;\r\n pubSub.publish(pubTopic, response);\r\n }\r\n // Call custom callback if specified\r\n if (typeof deferred === 'object' && deferred) {\r\n deferred.resolve(response);\r\n }\r\n break;\r\n default:\r\n // Publish message only for the public actions\r\n if (!privateAction) {\r\n pubSub.publish(errorTopic, response);\r\n }\r\n // Call custom error callback if specified\r\n if (typeof deferred === 'object' && deferred) {\r\n deferred.reject(response);\r\n }\r\n break;\r\n }\r\n },\r\n error: function (jqXHR, errorStatus, errorThrown) {\r\n // Since all internal server errors are handled by the backend, this handler will be executed very rare,\r\n // mostly in cases when application is unavailable or there are some network issues\r\n var error = {\r\n action: requestObj.action,\r\n transactionID: requestObj.transactionId,\r\n status: 'Error',\r\n message: errorThrown\r\n };\r\n\r\n if (!privateAction) {\r\n pubSub.publish(errorTopic, error);\r\n }\r\n\r\n // Call custom error callback if specified\r\n if (typeof deferred === 'object' && deferred) {\r\n deferred.reject(error);\r\n }\r\n }\r\n });\r\n }\r\n };\r\n\r\n var getRequiredFieldName = function (action) {\r\n // Determine required field name according to the action\r\n var targetContractField = 'productId';\r\n switch (action.toLowerCase()) {\r\n case supportedActions.removeFromCart:\r\n case supportedActions.getBuyFeedbackData:\r\n targetContractField = 'tempOrderLineId';\r\n break;\r\n case supportedActions.addToShoppingList:\r\n case supportedActions.removeFromShoppingList:\r\n case supportedActions.addToWishList:\r\n case supportedActions.removeFromWishList:\r\n targetContractField = 'productId';\r\n break;\r\n }\r\n\r\n return targetContractField;\r\n };\r\n\r\n var getActionChannel = function (action) {\r\n if (typeof action !== 'string' || !action) {\r\n return '';\r\n }\r\n\r\n var channel = globalActionChannel;\r\n switch (action.toLowerCase()) {\r\n case supportedActions.addToCart:\r\n case supportedActions.removeFromCart:\r\n case supportedActions.emptyCart:\r\n case supportedActions.updateCartQuantity:\r\n case supportedActions.getCartInfo:\r\n case supportedActions.getDetailedCartInfo:\r\n case supportedActions.getTempOrderLines:\r\n case supportedActions.getBuyFeedbackData:\r\n channel = supportedChannels.action.shopCart;\r\n break;\r\n case supportedActions.addToShoppingList:\r\n case supportedActions.removeFromShoppingList:\r\n case supportedActions.addToWishList:\r\n case supportedActions.removeFromWishList:\r\n case supportedActions.getShoppingList:\r\n case supportedActions.getShoppingLists:\r\n case supportedActions.addShoppingList:\r\n case supportedActions.updateShoppingList:\r\n case supportedActions.updateShoppingListItemsQuantity:\r\n case supportedActions.updateShoppingListItemsDescription:\r\n case supportedActions.removeShoppingList:\r\n case supportedActions.getShoppingListInfo:\r\n case supportedActions.getWishListInfo:\r\n case supportedActions.reorderShoppingListItems:\r\n channel = supportedChannels.action.shoppingList;\r\n break;\r\n case supportedActions.addToOfferRequest:\r\n case supportedActions.getofferrequestsinfo:\r\n case supportedActions.removefromcartofferrequest:\r\n case supportedActions.emptyofferrequests:\r\n channel = supportedChannels.action.offerRequest;\r\n break;\r\n }\r\n\r\n return channel;\r\n };\r\n\r\n var preProcessItems = function (items, requiredField) {\r\n if (!items) {\r\n return [];\r\n }\r\n\r\n var prods = $.isArray(items) ? items : [items];\r\n // Some actions does not require the whole contract to be specified into the request\r\n // In this case, assume that if 'items' field is not an array of objects, then it is an array of a single required for the action fields\r\n if (prods.length > 0 && typeof prods[0] !== 'object' && typeof requiredField !== 'undefined') {\r\n // Create item objects based on the passed required field values\r\n prods = $.map(prods, function (value) {\r\n var itemObj = {};\r\n itemObj[requiredField] = value;\r\n return itemObj;\r\n });\r\n }\r\n\r\n // Fix comma float number separator. On the server side InvariantCulture is using while parsing JSON, so we need to replace ',' with '.' for floats\r\n _.each(prods, function (prod) {\r\n if (prod.quantity && prod.quantity.replace) {\r\n prod.quantity = prod.quantity.replace(',', '.');\r\n }\r\n });\r\n\r\n return prods;\r\n };\r\n\r\n var getPromise = function (requestObj, isPrivate) {\r\n return $.Deferred(function (defer) {\r\n actionHandler(getActionChannel(requestObj.action), requestObj, defer, isPrivate);\r\n }).promise();\r\n };\r\n\r\n publicEStore.actions = supportedActions;\r\n\r\n publicEStore.channels = supportedChannels;\r\n\r\n publicEStore.publish = function (channel, data) {\r\n return pubSub.publish(channel, data);\r\n };\r\n\r\n publicEStore.subscribe = function (channel, handler) {\r\n return pubSub.subscribe(channel, handler);\r\n };\r\n\r\n publicEStore.unsubscribe = function (tokenOrFunction) {\r\n return pubSub.unsubscribe(tokenOrFunction);\r\n };\r\n\r\n publicEStore.addToCart = function (items, includeVat, isPrivate) {\r\n var action = supportedActions.addToCart;\r\n var requestObj = { action: action, items: preProcessItems(items), includeVat: includeVat };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.removeFromCart = function (items, isPrivate) {\r\n var action = supportedActions.removeFromCart;\r\n var requestObj = { action: action, items: preProcessItems(items, getRequiredFieldName(action)) };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.emptyCart = function(isPrivate) {\r\n var action = supportedActions.emptyCart;\r\n var requestObj = { action: action };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.updateCartQuantity = function (items, isPrivate) {\r\n var action = supportedActions.updateCartQuantity;\r\n var requestObj = { action: action, items: preProcessItems(items) };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.addToShoppingList = function (shoppingListId, items, includeVat, isPrivate) {\r\n var action = supportedActions.addToShoppingList;\r\n var requestObj = { action: action, items: preProcessItems(items, getRequiredFieldName(action)), shoppingListId: shoppingListId, includeVat: includeVat };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.removeFromShoppingList = function (shoppingListId, items, isPrivate) {\r\n var action = supportedActions.removeFromShoppingList;\r\n var requestObj = { action: action, items: preProcessItems(items, getRequiredFieldName(action)), shoppingListId: shoppingListId };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.addShoppingList = function(name, description, items, includeVat, isPrivate) {\r\n var action = supportedActions.addShoppingList;\r\n var requestObj = { action: action, name: name, description: description, items: preProcessItems(items, getRequiredFieldName(action)), includeVat: includeVat };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.updateShoppingList = function (shoppingListId, name, description, isPrivate) {\r\n var action = supportedActions.updateShoppingList;\r\n var requestObj = { action: action, shoppingListId: shoppingListId, name: name, description: description };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.updateShoppingListItemsQuantity = function (items, isPrivate) {\r\n var action = supportedActions.updateShoppingListItemsQuantity;\r\n var requestObj = { action: action, items: preProcessItems(items) };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.updateShoppingListItemsDescription = function (items, isPrivate) {\r\n var action = supportedActions.updateShoppingListItemsDescription;\r\n var requestObj = { action: action, items: preProcessItems(items) };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.removeShoppingList = function (shoppingListId, isPrivate) {\r\n var action = supportedActions.removeShoppingList;\r\n var requestObj = { action: action, shoppingListId: shoppingListId };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.getShoppingLists = function(isPrivate) {\r\n var action = supportedActions.getShoppingLists;\r\n var requestObj = { action: action };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.addToWishList = function (items, includeVat, isPrivate) {\r\n var action = supportedActions.addToWishList;\r\n var requestObj = { action: action, items: preProcessItems(items, getRequiredFieldName(action)), includeVat: includeVat };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.removeFromWishList = function (items, isPrivate) {\r\n var action = supportedActions.removeFromWishList;\r\n var requestObj = { action: action, items: preProcessItems(items, getRequiredFieldName(action)) };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.getTempOrderLines = function (includeVat, isPrivate) {\r\n var action = supportedActions.getTempOrderLines;\r\n var requestObj = { action: action, includeVat: includeVat };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.getCartInfo = function (includeVat, isPrivate) {\r\n var action = supportedActions.getCartInfo;\r\n var requestObj = { action: action, includeVat: includeVat };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.getDetailedCartInfo = function(includeVat, isPrivate, imageWidth, imageMod) {\r\n var action = supportedActions.getDetailedCartInfo;\r\n var requestObj = { action: action, includeVat: includeVat, imageWidth: imageWidth, imageMod: imageMod };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.getShoppingList = function (shoppingListId, includeVat, isPrivate, itemsGroups) {\r\n var action = supportedActions.getShoppingList;\r\n var requestObj = { action: action, shoppingListId: shoppingListId, includeVat: includeVat, itemsGroups: itemsGroups };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.getWishList = function (includeVat, isPrivate) {\r\n return publicEStore.getShoppingList(0, includeVat, isPrivate);\r\n };\r\n\r\n publicEStore.getShoppingListInfo = function (shoppingListId, includeVat, isPrivate) {\r\n var action = supportedActions.getShoppingListInfo;\r\n var requestObj = { action: action, shoppingListId: shoppingListId, includeVat: includeVat };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.getWishListInfo = function (includeVat, isPrivate) {\r\n var action = supportedActions.getWishListInfo;\r\n var requestObj = { action: action, includeVat: includeVat };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.getEStoreContext = function (forceGetFromServer, isPrivate) {\r\n if (!internalCache['estorecontext'] || forceGetFromServer) {\r\n var action = supportedActions.getEStoreContext;\r\n var requestObj = { action: action };\r\n\r\n internalCache['estorecontext'] = getPromise(requestObj, isPrivate);\r\n }\r\n\r\n return internalCache['estorecontext'];\r\n };\r\n\r\n publicEStore.getBuyFeedbackData = function (buyfeedbackItems, isPrivate) {\r\n var action = supportedActions.getBuyFeedbackData;\r\n var requestObj = { action: action, items: preProcessItems(buyfeedbackItems, getRequiredFieldName(action)) };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.getCustomerShoppingHistory = function() {\r\n var action = supportedActions.getCustomerShoppingHistory;\r\n var requestObj = { action: action };\r\n\r\n return getPromise(requestObj);\r\n };\r\n\r\n publicEStore.reorderShoppingListItems = function (items, moveTo, isPrivate) {\r\n var action = supportedActions.reorderShoppingListItems;\r\n var requestObj = { action: action, items: preProcessItems(items), moveTo: moveTo };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n\r\n publicEStore.addToOfferRequest = function (items) {\r\n var action = supportedActions.addToOfferRequest;\r\n var requestObj = { action: action, items: preProcessItems(items) };\r\n\r\n return getPromise(requestObj);\r\n };\r\n\r\n publicEStore.getofferrequestsinfo = function () {\r\n var action = supportedActions.getofferrequestsinfo;\r\n var requestObj = { action: action };\r\n\r\n return getPromise(requestObj);\r\n };\r\n\r\n publicEStore.removefromcartofferrequest = function (items) {\r\n var action = supportedActions.removefromcartofferrequest;\r\n var requestObj = { action: action, items: preProcessItems(items) };\r\n\r\n return getPromise(requestObj);\r\n };\r\n\r\n publicEStore.emptyofferrequests = function (isPrivate) {\r\n var action = supportedActions.emptyofferrequests;\r\n var requestObj = { action: action };\r\n\r\n return getPromise(requestObj, isPrivate);\r\n };\r\n \r\n\r\n // Subscribe to the action channels\r\n var internalSubcriptionToken = pubSub.subscribe(globalActionChannel, actionHandler);\r\n\r\n publicEStore.destroy = function () {\r\n pubSub.unsubscribe(internalSubcriptionToken);\r\n internalCache = null;\r\n };\r\n\r\n return publicEStore;\r\n}));"],"names":["$","_","globalActionChannel","globalCallbackChannel","globalErrorChannel","handlerUrl","internalCache","publicEStore","pubSub","supportedActions","supportedChannels","actionHandler","getRequiredFieldName","preProcessItems","getPromise","internalSubcriptionToken","window","PublicEStore","jQuery","R","name","PubSub","addToCart","removeFromCart","emptyCart","updateCartQuantity","getCartInfo","getDetailedCartInfo","getTempOrderLines","getBuyFeedbackData","addToShoppingList","removeFromShoppingList","addToWishList","removeFromWishList","getShoppingList","getShoppingLists","addShoppingList","updateShoppingList","updateShoppingListItemsQuantity","updateShoppingListItemsDescription","removeShoppingList","getShoppingListInfo","getWishListInfo","getEStoreContext","getCustomerShoppingHistory","reorderShoppingListItems","addToOfferRequest","getofferrequestsinfo","removefromcartofferrequest","emptyofferrequests","action","global","shopCart","shoppingList","offerRequest","callback","error","topic","requestObj","deferred","isPrivate","privateAction","errorTopic","contract","omit","callerId","ajax","url","type","data","transactionId","Date","getTime","JSON","stringify","includeVat","dataType","success","response","status","toLowerCase","pubTopic","replace","publish","resolve","reject","jqXHR","errorStatus","errorThrown","transactionID","message","targetContractField","items","requiredField","prods","isArray","length","map","value","itemObj","each","prod","quantity","Deferred","defer","channel","promise","actions","channels","subscribe","handler","unsubscribe","tokenOrFunction","shoppingListId","description","imageWidth","imageMod","itemsGroups","getWishList","forceGetFromServer","buyfeedbackItems","moveTo","destroy","console"],"mappings":"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"}