function getInfoFromSelectedProduct() { let ids = objProducts.map(obj => obj.id); return $.get($('meta[name="get-contents"]').attr('content') + "/" + ids.join(",")); } function numberToEuroFormat(number) { let formatter = new Intl.NumberFormat('de', { style: 'currency', currency: 'EUR' }); return formatter.format(number); } function getQuantityOfProducts() { let quantitys = objProducts.map(obj => obj.quantity); let quantityOfProducts = 0; for (let i = 0; i < quantitys.length; i++) { if (Number.isInteger(Number(quantitys[i]))) quantityOfProducts += Number(quantitys[i]); } return quantityOfProducts; } function getProductInfo(productInfo) { let objProduct = objProducts.find(obj => obj.id == productInfo.id); return jQuery.extend({}, objProduct, productInfo); } function calculatePrice(objProduct) { objProduct.calc_preis = objProduct.preis; if (objProduct.quantity >= 5) objProduct.calc_preis = objProduct.preis_5; if (objProduct.quantity >= 10) objProduct.calc_preis = objProduct.preis_10; if (Number(objProduct.quantity) >= Number(objProduct.module_pro_palette)) objProduct.calc_preis = objProduct.preis_palette; return objProduct; } function createProductElement(objProduct) { calculatePrice(objProduct); let elementProduct = ` ${objProduct.title}
sofort verfügbar
${numberToEuroFormat(objProduct.calc_preis)}`; if (objProduct.calc_preis != objProduct.preis) elementProduct += `
${(((objProduct.calc_preis - objProduct.preis) * 100) / objProduct.preis).toFixed(2)} % `; elementProduct += ` `; return elementProduct; } function addToBag(productId) { let objProductInfo = objProducts.find(obj => obj.id == productId); let index = objProducts.indexOf(objProductInfo); if (index == -1) objProducts.push({ id: productId, quantity: 1 }); updateProductsInLocalStorage(); } function isJson(str) { try { JSON.parse(str); } catch (e) { return false; } return true; } function isEncoded(str) { try { atob(str); } catch (e) { return false; } return true; } function hasCartCode() { let urlPath = window.location.pathname; let code = urlPath.split("/"); code = code[code.length - 1]; if (isEncoded(code)) { let productLink = atob(code); if (isJson(productLink)) return true; } return false; } function getCartCode() { let urlPath = window.location.pathname; let code = urlPath.split("/"); code = code[code.length - 1]; if (isEncoded(code)) return atob(code); return null; } function updateProductsInLocalStorage() { localStorage.setItem("products", JSON.stringify(objProducts)); $('#count-products-in-bag').text(getQuantityOfProducts()); $('#list-products-in-bag').html(''); totalPrice = 0; if (objProducts.length > 0) { getInfoFromSelectedProduct().done(function (response, status) { response.contents.forEach(function (product) { let objProduct = getProductInfo(product); objProduct = calculatePrice(objProduct); totalPrice += objProduct.calc_preis * objProduct.quantity; let elementProduct = createProductElement(objProduct); $('#list-products-in-bag').append(elementProduct); }); $('#total-price').text(numberToEuroFormat(totalPrice)); }).fail(function (response) { $('.cart-link').hide(); $(".btn-share").hide(); $('#count-products-in-bag').hide(); $('#list-products-in-bag').parent().parent().parent().parent().parent().find('.modal-footer').hide(); $('#total-price').parent().parent().parent().hide(); $('#no-products').hide(); $('#cart-error').show(); $('#modal-buttons').hide(); }); $('.cart-link').show(); $(".btn-share").show(); $('#count-products-in-bag').show(); $('#list-products-in-bag').parent().parent().parent().parent().parent().find('.modal-footer').show(); $('#total-price').parent().parent().parent().show(); $('#no-products').hide(); $('#cart-error').hide(); $('#modal-buttons').show(); cartLink = window.location.origin + '/' + btoa(JSON.stringify(objProducts)); $('.cart-link').val(cartLink); shareData = { title: "Share cart list", text: 'share cart list', url: cartLink, }; } else { $('.cart-link').hide(); $(".btn-share").hide(); $('#count-products-in-bag').hide(); $('#list-products-in-bag').parent().parent().parent().parent().parent().find('.modal-footer').hide(); $('#total-price').parent().parent().parent().hide(); $('#no-products').show(); $('#cart-error').hide(); $('#modal-buttons').hide(); } let productId = $('meta[name="product-id"]').attr('content'); if (productId != undefined) { let objProduct = objProducts.find(obj => obj.id == productId); if (objProduct == undefined) { $('#btn-add-to-bag').show(); $('#btn-show-bag').hide(); if (objProducts.length > 0) $('#btn-check-out').parent().hide(); else $('#btn-check-out').parent().show(); } else { $('#btn-add-to-bag').hide(); $('#btn-show-bag').show(); $('#btn-check-out').parent().hide(); $('#count-items-in-bag').html(objProduct.quantity + ``); } } }