function deleteFromCart(productId) { let xmlhttpCart = new XMLHttpRequest(); xmlhttpCart.overrideMimeType('application/json'); xmlhttpCart.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { reloadCart(); } } xmlhttpCart.open("GET", "/shoppingCart2/delItem.ajax?productId=" + productId, true); xmlhttpCart.send(); } var allowCheckout = false; var productIdsWithQty = []; function reloadCart() { let xmlhttpCart = new XMLHttpRequest(); xmlhttpCart.overrideMimeType('application/json'); xmlhttpCart.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { let cartHtml = ""; let lmsCartBox = document.querySelector("[role=\"lms-cart\"]"); lmsCartBox.innerHTML = ""; const cartJson = JSON.parse(this.responseText); console.log(cartJson) document.querySelectorAll("input[name='coupons']").forEach(function (couponeInput) { console.log('couponeInput', couponeInput); console.log('cartJson.couponsStr', cartJson.couponsStr); couponeInput.value = cartJson.couponsStr; }); productIdsWithQty = []; for (var k in cartJson.items) { // cartJson.items[k].qty; let productId = cartJson.items[k].productId; let qty = cartJson.items[k].qty; productIdsWithQty.push({productId: productId, qty: qty}); let sName = cartJson.items[k].productName; // let sPrice = cartJson.items[k].itemPriceStr; let sPrice = cartJson.items[k].itemTotalStr; let subItemNumber = 0; var cartItemTempl = "" + "
" + "
" + "
" + "
" + "
" + " \"\"" + "
" + "
" + "
" + "
" + "
" + "
" + "

" + " {{name}}" + "

" + " {{subItemsText}}" + "
" + "
" + "
" + "
" + "

{{price}} $

" + "
" + // " " + " " + "
" + "
" + "
" + "
" + "
" + "
" + "
" + "
" + "
" + "
"; var subItemsText = ''; if (cartJson.items[k].subCartItems != null && cartJson.items[k].subCartItems.length > 0) { for (let i in cartJson.items[k].subCartItems) { let subCartItem = cartJson.items[k].subCartItems[i]; if (subCartItem.textLabels.length > 0 && subCartItem.textLabels[0] != '') { subItemsText += '
' + subCartItem.textLabels[0] + '
'; } } } cartItemTempl = cartItemTempl.replace(/{{subItemsText}}/i, subItemsText); cartItemTempl = cartItemTempl.replace(/{{name}}/i, sName); cartItemTempl = cartItemTempl.replace(/{{price}}/i, sPrice); cartHtml += cartItemTempl; } lmsCartBox.innerHTML = cartHtml; let totalPrice = document.querySelector("b[role=\"total-price\"]"); if (totalPrice) totalPrice.textContent = cartJson.totalStr + " $"; let hasProgramError = false; let validatedProduct = []; for (let i in productIdsWithQty) { let pid = productIdsWithQty[i].productId; let qty = productIdsWithQty[i].qty; console.log('productIdsWithQty[' + i + ']: ', productIdsWithQty[i]); let productRequiredRelated = []; let allCoursesInProgram = []; let currentProgram = -1; if (!validatedProduct.find(function (el) { return el == pid })) { let xmlhttpCart = new XMLHttpRequest(); xmlhttpCart.overrideMimeType('application/json'); xmlhttpCart.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { let allSessionsInProgramOfPid = new DOMParser().parseFromString(this.responseText, 'text/html'); let exists = false; allSessionsInProgramOfPid.querySelectorAll('body div[role="session-item-inprogram"]').forEach(function (el, index) { exists = true; let data = { cid: el.dataset.cid, sid: el.dataset.sid, pid: el.dataset.pid, progid: el.dataset.programid } let pQty = 0; for (let i in productIdsWithQty) { let pidQty = productIdsWithQty[i].productId; if (pidQty == data.pid) { validatedProduct.push(data.pid) pQty = productIdsWithQty[i].qty; console.log('found qty ' + pQty + ' for pid ' + pidQty + ' and cid ' + data.cid); break; } } data['qty'] = pQty; // console.log('data object with qty: ', data); allCoursesInProgram[data.cid] = 0; productRequiredRelated.push(data); }) console.log('allCoursesInProgram: ', allCoursesInProgram); if (exists) { for (let i in productRequiredRelated) { let data = productRequiredRelated[i]; allCoursesInProgram[data.cid] += data.qty; } let prev = -2; for (let key in allCoursesInProgram) { if (prev == -2) prev = allCoursesInProgram[key]; let cur = allCoursesInProgram[key]; if (prev != cur) { console.log('error'); hasProgramError = true; } prev = cur; } } } } xmlhttpCart.open("GET", "/entity/roster/entityRosterView.html?entityRosterId=11&productId=" + productIdsWithQty[i].productId, false); xmlhttpCart.send(); console.log("xmlhttpCart.send();") } else { console.log("pid: " + pid + " is already validated for program") } } if (hasProgramError) allowCheckout = false; else allowCheckout = true; console.log("setting up function on buy btn"); document.querySelector(".btnFiltershop").addEventListener("click", (e) => { e.preventDefault(); if (allowCheckout) { let url = '/shoppingCart2/order2/create.html?expired=true&coupons=&clientId=' + cartJson.clientId; location.href = url; } else { let errorPlaceholder = document.querySelector("[id=\"error_placeholder\"]"); errorPlaceholder.innerHTML = "Please add all modules (1,2, 3 and 4) to the cart to finalize your transaction."; errorPlaceholder.style.display = 'block'; } }) } } // xmlhttpCart.open("GET", "/shoppingCart2/shoppingCart.html", true); xmlhttpCart.open("GET", "/shoppingCart2/getCartContent.ajax", true); xmlhttpCart.send(); } window.addEventListener('DOMContentLoaded', (event) => { var error = location.search.split('error=')[1] ? location.search.split('error=')[1] : '0'; if (error == '1') { // error_placeholder let errorPlaceholder = document.querySelector("[id=\"error_placeholder\"]"); errorPlaceholder.innerHTML = "Try to buy more than the remaining places"; errorPlaceholder.style.display = 'block'; // alert('error1'); } reloadCart(); /*document.querySelectorAll("[id='applyCoupone']").forEach(function(applyCouponeButton){ applyCouponeButton.addEventListener('click', function (e) { let coupon = document.getElementById('inputCoupone').value; if (coupon != null){ } }); });*/ var form = document.getElementById("couponForm"); if (form != null) { async function handleSubmit(event) { event.preventDefault(); // var status = document.getElementById("myFormStatus"); var data = new FormData(event.target); fetch(event.target.action, { method: "post", body: data }).then(response => { reloadCart(); /*if (response.ok) { status.innerHTML = "Thanks for your submission!"; form.reset() } else { response.json().then(data => { if (Object.hasOwn(data, 'errors')) { status.innerHTML = data["errors"].map(error => error["message"]).join(", ") } else { status.innerHTML = "Oops! There was a problem submitting your form" } }) }*/ }).catch(error => { // status.innerHTML = "Oops! There was a problem submitting your form" }); } form.addEventListener("submit", handleSubmit) } }) document.addEventListener('DOMContentLoaded', function () { //NEW COURSES let xmlhttp1 = new XMLHttpRequest(); xmlhttp1.overrideMimeType('text/xml'); xmlhttp1.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { let coursesContentHtmlList = new DOMParser().parseFromString(this.responseText, 'text/html'); coursesContentHtmlList.querySelectorAll('body div[role="list-view"]').forEach(function (el, index) { $('.courses-active').slick('slickAdd', el); }) } } xmlhttp1.open("GET", "/entity/roster/entityRosterView.html?entityRosterId=9&no_header=true", true); xmlhttp1.send(); })