{"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 getSiteCartInfo: 'getsitecartinfo',\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 setDiscountCodes: 'setdiscountcodes'\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.getSiteCartInfo:\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.getSiteCartInfo = function(includeVat, isPrivate, imageWidth, imageMod) {\r\n var action = supportedActions.getSiteCartInfo;\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.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, buyMode) {\r\n var action = supportedActions.getShoppingList;\r\n var requestObj = { action: action, shoppingListId: shoppingListId, includeVat: includeVat, itemsGroups: itemsGroups, buyMode: buyMode };\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 publicEStore.setDiscountCodes = function (dicountCodes, includeVat, isPrivate) {\r\n var action = supportedActions.setDiscountCodes;\r\n var requestObj = { action: action, discountCouponCodes: dicountCodes, includeVat: includeVat };\r\n\r\n return getPromise(requestObj, isPrivate);\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","getSiteCartInfo","getDetailedCartInfo","getTempOrderLines","getBuyFeedbackData","addToShoppingList","removeFromShoppingList","addToWishList","removeFromWishList","getShoppingList","getShoppingLists","addShoppingList","updateShoppingList","updateShoppingListItemsQuantity","updateShoppingListItemsDescription","removeShoppingList","getShoppingListInfo","getWishListInfo","getEStoreContext","getCustomerShoppingHistory","reorderShoppingListItems","addToOfferRequest","getofferrequestsinfo","removefromcartofferrequest","emptyofferrequests","setDiscountCodes","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","buyMode","getWishList","forceGetFromServer","buyfeedbackItems","moveTo","dicountCodes","discountCouponCodes","destroy","console"],"mappings":"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"}