var basket = {}; var configurationForms = []; function showBasketCount() { let count = 0; if ((basket != undefined) && (basket != null) && (basket.basketProducts != undefined) && (basket.basketProducts != null)) { count = basket.basketProducts.length; } document.getElementById("basketCount").innerText = count; let element = document.getElementById("basketCountButton"); if ((element!=undefined)&&(element!=null)) element.innerText = count; } function getSessionId() { if (basket.sessionId == undefined) { basket.sessionId = document.getElementById("SID").value; } return basket.sessionId; } function productExistsInBasket(productId) { let basketProduct = getBasketProductByProductId(productId); return !(basketProduct == undefined); } function CreateEmptyBasketProduct(productId) { let basketProduct = { productId: productId }; let product = null; for (p in configurableProducts) { let configProduct = configurableProducts[p]; if (configProduct.id == productId) { product = configProduct; break; } } if (product != null) { basketProduct.configuration = product.configuration; basketProduct.unitPriceInCent = product.unitPriceInCent; } return basketProduct; } function configureProduct(productId) { if (productExistsInBasket(productId)) { document.getElementById("productAddedFeedback").innerHTML = "Dit product werd reeds aan het winkelmandje toegevoegd."; $('#productAdded').modal('show'); return; } let basketProduct = CreateEmptyBasketProduct(productId); let configuration = JSON.parse(basketProduct.configuration); let modalId = configuration.type + "ProductConfiguration"; if (document.getElementById(modalId) != undefined) { let paintForm = eval(configuration.type + "PaintForm"); showPopup(modalId,paintForm,okCallback, cancelCallback, basketProduct); } } function okCallback(basketProduct) { addBasketProduct(basketProduct.productId, basketProduct.unitPriceInCent, basketProduct.productConfiguration); } function cancelCallback(inputData) { } function addBasketProduct(productId, unitPriceInCent, productConfiguration) { let bp = createBasketProduct(productId, 1, unitPriceInCent, getSessionId(), productConfiguration); if (bp!=null) showBasketCount(); selectNextStep(); return bp; } function showBasketCountAsync(response) { basket = response; showBasketCount(); } function getBasketAsync(onready, sessionId) { if (sessionId == undefined) { sessionId = document.getElementById("SID").value; } let url = "/basket?sessionId=" + sessionId; AjaxJSONAsync("GET", "/basket?sessionId=" + sessionId,null,onready); } function getBasket(sessionId) { if (sessionId == undefined) { sessionId = document.getElementById("SID").value; } let url = "/basket?sessionId=" + sessionId; let response = AjaxJSONSync("GET", "/basket?sessionId=" + sessionId); return response; } function getBasketProductByProductId(productId) { if ((basket != undefined) && (basket.basketProducts != undefined)) { for (bp in basket.basketProducts) { if (basket.basketProducts[bp].productId == productId) { return basket.basketProducts[bp]; } } } return; } function removeBasketProduct(productId) { if ((basket.basketProducts == undefined) || (basket.sessionId == undefined)) return; let basketProduct = getBasketProductByProductId(productId); if (basketProduct == null) return; let response = deleteBasketProduct(basket.sessionId, basketProduct.lineId); if (response === "") { let index = basket.basketProducts.indexOf(basketProduct); if (index > -1) { basket.basketProducts.splice(index, 1); } } paintBasketProducts(basket); showBasketCount(); } function updatePackaging(e) { let element = e.currentTarget; let packaging = element.value; let productId = element.getAttribute("product"); let basketProduct = getBasketProductByProductId(productId); basketProduct.packaging = packaging; updateBasketProduct(basketProduct); } function updateBasketProduct(basketProduct) { let request = {}; request.lineId = basketProduct.lineId; request.packaging = basketProduct.packaging; request.unitPriceInCent = basketProduct.unitPriceInCent; request.productConfiguration = basketProduct.productConfiguration; let response = AjaxJSONSync("POST", "basket/update/all", request); } function deleteBasketProduct(sessionId, lineId) { let request = {}; request.sessionId = sessionId; request.lineId = lineId; return AjaxJSONSync("POST", "/basket/delete/all", request); } function createBasketProduct(productId, quantity, unitPriceInCent, sessionId, productConfiguration) { let basketProduct = {}; basketProduct.productId = productId; basketProduct.quantity = quantity; basketProduct.unitPriceInCent = unitPriceInCent; basketProduct.sessionId = sessionId; basketProduct.browserInfo = GetBrowserInfo(); if (productConfiguration != undefined) { basketProduct.productConfiguration = productConfiguration; } let response = AjaxJSONSync("POST", "/basket/product/all", basketProduct); if (response == undefined) { document.getElementById("productAddedFeedback").innerHTML = "Systeem fout."; return null; } if (response.errorMessage != "") { document.getElementById("productAddedFeedback").innerHTML = response.errorMessage; return null; } if (response.feedbackMessage != "") { document.getElementById("productAddedFeedback").innerHTML = response.feedbackMessage; } else { document.getElementById("productAddedFeedback").innerHTML = "Het product werd toegevoegd aan het winkelmandje."; } basketProduct.lineId = response.lineId; if (basket.basketProducts == undefined) basket.basketProducts = []; basket.basketProducts[basket.basketProducts.length] = basketProduct; return basketProduct; } function getBasketProducts() { let basketProducts = AjaxJSONSync("GET", "/basket/products/all", false); }