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+``); } } }