Software: Apache. PHP/8.1.30 uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root) Safe-mode: OFF (not secure) /home/picotech/domains/ecom1.picotech.app/public_html/public/frontend/js/ drwxr-xr-x |
Viewing file: Select action/file-type: function closeLoginModal() { $('#loginModal').modal('hide'); } function closesignupModal() { $('#signupModal').modal('hide'); } function closeProductModal() { $('#productDetailsModal').modal('hide'); } $(document).ready(function () { $('.loginbtn').click(function () { $('#signupModal').modal('hide'); $('#loginModal').modal('show'); }); $('.signupbtn').click(function () { $('#loginModal').modal('hide'); $('#signupModal').modal('show'); }); /*Scroll top*/ var scrollTop = $(".scrollTop"); $(window).scroll(function () { var topPos = $(this).scrollTop(); if (topPos > 0) { $(scrollTop).css("opacity", "1"); } else { $(scrollTop).css("opacity", "0"); } }); $(scrollTop).click(function () { $('html, body').animate({ scrollTop: 0 }, 600); return false; }); /*Menu dropdown*/ var ico = $('<i class="fa fa-angle-down menudrop"></i>'); $('.menu_link li:has(.submenu) > a').append(ico); $('.menudrop').on('click', function (e) { $(this).parent().parent().addClass('no-hover'); $('.menu_link ul li').not($(this).parent().parent()).find('.submenu').stop(true, true).delay(200).fadeOut(500); $('.menu_link ul li').not($(this).parent().parent()).removeClass('open'); $('.menu_link ul li a .menudrop').not($(this)).removeClass('openedmenu'); $('.menu_link ul li a .menudrop').not($(this)).addClass('closemenu'); e.preventDefault(); if ($(this).hasClass('openedmenu')) { $(this).parent().parent().find('.submenu').stop(true, true).delay(200).fadeOut(500); $(this).removeClass('openedmenu'); $(this).addClass('closemenu'); } else { $(this).parent().parent().find('.submenu').stop(true, true).delay(200).fadeIn(500); $(this).removeClass('closemenu'); $(this).addClass('openedmenu'); } }); if ($(window).width() >= 1120) { $(".menu_link nav > ul > li.has-sub").hover( function () { $('body').addClass("menuoverlay"); $(window).trigger('resize'); }, function () { $('body').removeClass("menuoverlay"); } ); } $(".togglebtn, .overlay").click(function () { $(".togglebtn, .overlay, .menu_link").toggleClass("active"); if ($(".overlay").hasClass("active")) { $(".overlay").fadeIn(); $('html').addClass('menuhidden'); } else { $(".overlay").fadeOut(); $('html').removeClass('menuhidden'); } }); $(window).scroll(function () { if (($(window).scrollTop() > 200) && ($(window).width() >= 1121)) { $('body').addClass('fixed-header'); } else { $('body').removeClass('fixed-header'); } }); $(".ft-navigation-div .heading-md").click(function () { if ($(window).width() < 993) { $(this).toggleClass("showhide"); $(this).next().slideToggle(""); } }); /*Same height*/ var $this = $(this); function serviceboxheight() { var max = 0; $('.testilist li .sbox', $this).each(function () { $(this).height(''); var h = $(this).height(); max = Math.max(max, h); }).height(max); } //setHeight(); $(window).on('load resize orientationchange', serviceboxheight); }); $(document).on("click",".quickviewtext",function(event){ let productID = $(this).attr('data-product'); let url = document.getElementsByName('baseURL')[0].content; let token = document.getElementsByName('csrf-token')[0].content; url = url+'/product-detail'; $.ajax({ url: url, type: 'post', data:{'_token':token,'product_id':productID}, dataType: 'json', success: function(response) { if (response.status == 1) { renderProductDetail(response,productID); } else { new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Error', contentText: response.message, closeDelay: 2500 }); } } }); }); //ADD TO CART PRODUCT DETAILS BUTTON $(document).on("click",".add-to-cart",function(event){ event.preventDefault(); let productID = $(this).parent().find('input[name="productID"]').val() let qty = $(this).parent().find('input[type="number"]').val(); let url = document.getElementsByName('baseURL')[0].content; let token = document.getElementsByName('csrf-token')[0].content; let currentRoute = document.getElementsByName('currentRoute')[0].content; let assetURL = document.getElementsByName('assetURL')[0].content; url = url+'/add-to-cart'; let optionObj = Object.create(null); if($('input[name="optionCheckbox"]:checked').val()) { optionObj.optionCheckboxSelected = $('input[name="optionCheckbox"]:checked').val(); } if($('input[name="optionColor"]:checked').val()) { optionObj.optionColorSelected = $('input[name="optionColor"]:checked').val(); } if($('input[name="optionRadioSelected"]:checked').val()) { optionObj.optionRadioSelected = $('input[name="optionRadioSelected"]:checked').val(); } if($('input[name="optionRadio"]:checked').val()) { optionObj.optionRadioSelected = $('input[name="optionRadio"]:checked').val(); } if($("#select"+productID).val()) { optionObj.optionSelectSelected = $("#select"+productID).val(); } let price = 0; if(currentRoute == 'product.details' && !isNaN(parseFloat($('#priceproduct').text()))) { price = parseFloat($('#priceproduct').text()) } if(currentRoute != 'product.details' && !isNaN(parseFloat($('#priceproduct'+productID).text()))) { price = parseFloat($('#priceproduct'+productID).text()) } $.ajax({ url: url, type: 'post', data:{'_token':token,'product_id':productID,'quantity':qty,"price" :price ,"options":Object.keys(optionObj).length > 0 ? JSON.stringify(optionObj) : null}, dataType: 'json', success: function(response) { if (response.status == 1) { $('#productDetailsModal').modal('hide'); new RetroNotify({ style: 'green', animate: 'slideTopRight', contentHeader: '<i class="fa fa-check"></i> Success', contentText: response.message, closeDelay: 2500 }); $('.basket-count').text(response.cartCount); } else if(response.status == 3) { new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: 'Product Option Required', closeDelay: 2500 }); //product Details if(currentRoute != 'product.details') { renderProductDetail(response,productID); } } else{ new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Error', contentText: response.message, closeDelay: 2500 }); } } }); }); //ADD TO CART BUTTON $(document).on("click",".btn-add-to-cart",function(event){ event.preventDefault(); let productID = $(this).parent().find('input[name="productID"]').val() console.log("PRODUCT ID ",productID); let qty = 1; let url = document.getElementsByName('baseURL')[0].content; let token = document.getElementsByName('csrf-token')[0].content; let currentRoute = document.getElementsByName('currentRoute')[0].content; let assetURL = document.getElementsByName('assetURL')[0].content; console.log("url ID ",url); console.log("token ID ",token); console.log("assetURL ID ",assetURL); console.log("currentRoute ID ",currentRoute); url = url+'/add-to-cart'; let optionObj = ''; // if($('input[name="optionCheckbox"]:checked').val()) { // optionObj.optionCheckboxSelected = $('input[name="optionCheckbox"]:checked').val(); // } // if($('input[name="optionColor"]:checked').val()) { // optionObj.optionColorSelected = $('input[name="optionColor"]:checked').val(); // } // if($('input[name="optionRadioSelected"]:checked').val()) { // optionObj.optionRadioSelected = $('input[name="optionRadioSelected"]:checked').val(); // } // if($('input[name="optionRadio"]:checked').val()) { // optionObj.optionRadioSelected = $('input[name="optionRadio"]:checked').val(); // } // if( $("#select"+productID).val()) { // optionObj.optionSelectSelected = $("#select"+productID).val(); // } let price = 0; if(currentRoute == 'product.details' && !isNaN(parseFloat($('#priceproduct').text()))) { price = parseFloat($('#priceproduct').text()) } if(currentRoute != 'product.details' && !isNaN(parseFloat($('#priceproduct'+productID).text()))) { price = parseFloat($('#priceproduct'+productID).text()) } $.ajax({ url: url, type: 'post', data:{'_token':token,'product_id':productID,'quantity':qty,"price" :price ,"options":Object.keys(optionObj).length > 0 ? JSON.stringify(optionObj) : null}, dataType: 'json', success: function(response) { if (response.status == 1) { $('#productDetailsModal').modal('hide'); new RetroNotify({ style: 'green', animate: 'slideTopRight', contentHeader: '<i class="fa fa-check"></i> Success', contentText: response.message, closeDelay: 2500 }); $('.basket-count').text(response.cartCount); } else if(response.status == 3) { new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: 'Product Option Required', closeDelay: 2500 }); //product Details if(currentRoute != 'product.details') { renderProductDetail(response,productID); } } else{ new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Error', contentText: response.message, closeDelay: 2500 }); } } }); }); function renderProductDetail(response,productID) { $('.product-modal-ul').empty(); let productData = response.productData; const product_des = productData.product.product_description.description; let assetURL = document.getElementsByName('assetURL')[0].content; let currency = document.getElementsByName('currency')[0].content; $(".modalImg").attr("src",assetURL+"/product/"+productData.product.image); $(".modalImg").attr("title",'product image'); //set name $('.modal-product-title').text(productData.product.product_description.name) //set modal and stock $('.modal-stock').addClass(productData.product.quantity > 0 ? 'greenclr' : 'redclr') $('.modal-stock').text(productData.product.quantity > 0 ? 'In Stock' : 'Out of Stock') $('.modal-model').text(productData.product.model) $(".modal-brand-logo").attr("src",assetURL+"/manufacturer/"+productData.product.product_manufacturer.image); $('.category-modal-title').text(productData.product.category.name); $('.pro_description').html(product_des); let productOptions = productData.productOptions; let price = response.price; price = productData.product.price; let special = response.special; let liRender = ''; for (var key in productOptions) { let title = key.split('-'); liRender += `<li class="my-3"> <div class="probox"> <div class="prod-head">${title[1]}: <span class="optionSelected"></span></div> <div class="prod-info">`; let options = productOptions[key]; //if checkbox if(title[0] == 'Checkbox') { localStorage.removeItem('Checkbox'); liRender += `<div class="row mt-3">`; for(p=0;p<options.length;p++) { if(options[p].label.length == 1 || options[p].label.length == 2) { liRender += `<div class="col-md-1 col-1 col-sm-1 col-lg-1 mx-2"> <label class="check-label"> <input type="radio" name="optionCheckbox" value="${options[p].product_option_id}" onchange="changePrice(${options[p].price},'Checkbox','${options[p].label}',${productID})" > <span class="checkmark-round">${options[p].label}</span> </label> </div>`; } else { liRender += `<div class="col-md-4 col-sm-4 col-4 col-lg-4"> <label class="check-label">${options[p].label} `; liRender += options[p].price > 0 ? `(+${options[p].price})` : ''; liRender += `<input type="radio" id="checkbox${productID}" name="optionCheckbox" value="${options[p].product_option_id}" onchange="changePrice(${options[p].price},'Checkbox',${productID})" > <span class="checkmark"></span> </label> </div>`; } } liRender += `</div>`; } //if radio if(title[0] == 'Radio') { localStorage.removeItem('Radio'); liRender += `<div class="row">`; for(p=0;p<options.length;p++) { if(options[p].label.length == 1 || options[p].label.length == 2) { liRender += `<div class="col-md-1 col-1 col-sm-1 col-lg-1 mx-2"> <label class="check-label"> <input type="radio" name="optionRadio" value="${options[p].product_option_id}" onchange="changePrice(${options[p].price},'Radio','${options[p].label}',${productID})" > <span class="checkmark-round">${options[p].label}</span> </label> </div>`; } else { liRender += `<div class="col-md-4 col-sm-4 col-4 col-lg-4"> <label class="check-label">${options[p].label} `; liRender += options[p].price > 0 ? `(+${options[p].price})` : ''; liRender += `<input type="radio" id="radio${productID}" name="optionRadio" value="${options[p].product_option_id}" onchange="changePrice(${options[p].price},'Radio',${productID})" > <span class="checkmark"></span> </label> </div>`; } } liRender += `</div>`; } //if select if(title[0] == 'Select') { localStorage.removeItem('Select'); liRender += ` <select name="selectoption" id="select${productID}" class="form-control size_id" > <option value="">Select Size</option>`; for(p=0;p<options.length;p++) { liRender += `<option value="${options[p].product_option_id}">${options[p].label}`; liRender += options[p].price > 0 ? `(+${options[p].price})` : ''; liRender += ` </option>` } liRender += `</select>`; } //if Color if(title[0] == 'Color') { localStorage.removeItem('Color'); liRender += `<div class="row my-1">`; for(p=0;p<options.length;p++) { liRender += `<div class="col-md-1 col-1 col-sm-1 mx-1 col-lg-1"> <label class="check-label">`; liRender += `<input type="radio" id="color${productID}" name="optionColor" value="${options[p].product_option_id}" onchange="changePrice(${options[p].price},'Color',${productID},this)" > <span class="checkmark-round" style="background:${options[p].color_code}"></span> </label> </div>`; } liRender += `</div>`; } liRender += `</div> </div> </li> <hr>` } //set price liRender += `<div class="price-wrap"> <input type="hidden" id="originalPrice" name="orignalPrice" value="${special > 0 ? special : price}"> <div class="price">Price: <span id="priceproduct${productID}">${currency}${special > 0 ? special : price}</span>`; if(special > 0) { liRender += `<span class="originalPrice mx-2" style="font-size:16px;">${currency}${price}</span>`; } liRender += ` </div></div>` liRender += ` <div class="quantity-wrap"> <div class="quantitybox d-flex justify-content-center align-items-center"> <div class="value-button decrease" onclick="decreaseValue($(this))" value="Decrease Value"> <i class="fas fa-sharp fa-regular fa-minus"></i> </div> <div class="quantity "> <label class="screen-reader-text" >Sponge Float dense sponge 40mm with long edge quantity</label> <input type="number" class="input-text qty text" step="1" min="1" max="100" name="quantity" value="1" title="Qty" size="4" placeholder="" inputmode="numeric" /> </div> <div class="value-button increase" onclick="increaseValue($(this))" value="Increase Value"> <i class="fas fa-sharp fa-regular fa-plus"></i> </div> </div> <input type="hidden" name="productID" value="${productData.product.id}"> <button class="add-to-cart">Add to Cart </button> </div>`; $('.product-modal-ul').append(liRender); $('#productDetailsModal').modal('show'); } //on Price Change function changePrice(price,type,label,productID = 0,that) { let currency = document.getElementsByName('currency')[0].content; let newPrice = $('#priceproduct').text().replace(/^\D|,+/g, ''); newPrice = parseFloat(newPrice); if(that) { $('.checkmark-round').empty(); $(that).siblings('.checkmark-round').html('<i class="fas fa-check" style="color:white"></i>') } $('.optionSelected').text(label); if(productID != 0) { newPrice =$('#priceproduct'+productID).text().replace(/^\D|,+/g, ''); newPrice = parseFloat(newPrice); } if(price > 0) { newPrice += parseFloat(price) } let getType = localStorage.getItem(type); if(getType > 0) { newPrice -= parseFloat(getType) } localStorage.setItem(type, price); if(productID != 0) { $('#priceproduct'+productID).text(currency+''+newPrice.toFixed(2)) } else{ $('#priceproduct').text(currency+''+newPrice.toFixed(2)) } } /*-----QUANTITY BOX-----*/ /*Increment input*/ function increaseValue(ele) { var value = ele.parent().find('input[type="number"]').val(); // var value = parseInt(inputele.value, 10); value = isNaN(value) ? 0 : value; value++; ele.parent().find('input[type="number"]').val(value); if (value == 0) { ele.parents('.roomlistbox').removeClass('selectedinput'); if ($('.quantitybox').length > 0) { ele.parents('.quantitybox').parent().prev().parent().removeClass('selectedinput'); } } else { ele.parents('.roomlistbox').addClass('selectedinput'); if ($('.quantitybox').length > 0) { ele.parents('.quantitybox').parent().prev().parent().addClass('selectedinput'); } } } function decreaseValue(ele) { var value = ele.parent().find('input[type="number"]').val(); // var value = parseInt(inputele.value, 10); value = isNaN(value) ? 0 : value; value < 1 ? value = 1 : ''; value--; ele.parent().find('input[type="number"]').val(value); if (value == 0) { ele.parents('.roomlistbox').removeClass('selectedinput'); if ($('.quantitybox').length > 0) { ele.parents('.quantitybox').parent().prev().parent().removeClass('selectedinput'); } } else { ele.parents('.roomlistbox').addClass('selectedinput'); if ($('.quantitybox').length > 0) { ele.parents('.quantitybox').parent().prev().parent().addClass('selectedinput'); } } } /*-----ADD TO WISHLIST-----*/ function addToWish(that,productID,isProductDetail = false) { event.preventDefault(); let isLoggedin = document.getElementsByName('isLogin')[0].content; if(!isLoggedin) { new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: "Login Required", closeDelay: 2500 }); } else { let url = document.getElementsByName('baseURL')[0].content; let token = document.getElementsByName('csrf-token')[0].content; let assetURL = document.getElementsByName('frontendAssetURL')[0].content; let locale = document.getElementsByName('direction')[0].content; url = url+'/add-to-wishlist'; $.ajax({ url: url, type: 'post', data:{'_token':token,'product_id':productID}, dataType: 'json', success: function(response) { if (response.status == 1) { $('.wishlist-count').text(response.wishlistData.length) new RetroNotify({ style: 'green', animate: 'slideTopRight', contentHeader: '<i class="fa fa-check"></i> Success', contentText: response.message, closeDelay: 2500 }); if(response.add == 1) { if(isProductDetail) { $(that).empty(); if(locale == 1){ $(that).append('<i class="fa fa-heart" style="margin-left:10px;"></i>'); $(that).append(' Wishlist'); } else { $(that).append('<i class="fa fa-heart" style="margin-right:10px;" ></i>'); $(that).append(' Wishlist'); } } else{ $(that).closest('div').addClass('fill-wishlist') $(that).find('img').remove(); $(that).append('<i class="fas fa-heart"></i>'); } } else { if(isProductDetail) { $(that).empty(); if(locale == 1){ $(that).append('<i class="fa fa-heart-o" style="margin-left:10px;"></i>'); $(that).append(' Wishlist'); } else { $(that).append('<i class="fa fa-heart-o" style="margin-right:10px;" ></i>'); $(that).append(' Wishlist'); } } else{ $(that).closest('div').removeClass('fill-wishlist') $(that).find('i').remove(); $(that).append('<img src="'+assetURL+'/images/little-heart.png" alt="" title="" class="" />'); } } } else{ new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: response.message, closeDelay: 2500 }); } } }); } } /*-----UPDATE CART-----*/ function updateQty(that,cartID) { let qty = $(that).parent().find('input[type="number"]').val(); let isLoggedin = document.getElementsByName('isLogin')[0].content; let currency = document.getElementsByName('currency')[0].content; if(qty > 0) { let url = document.getElementsByName('baseURL')[0].content; let token = document.getElementsByName('csrf-token')[0].content; url = url+'/update-quantity'; $.ajax({ url: url, type: 'post', data:{'_token':token,'cart_id':cartID,'quantity':qty}, dataType: 'json', success: function(response) { if (response.status == 1) { new RetroNotify({ style: 'green', animate: 'slideTopRight', contentHeader: '<i class="fa fa-check"></i> Success', contentText: response.message, closeDelay: 2500 }); let unitPrice = $('.unitprice'+cartID).text().replace(/^\D|,+/g, ''); unitPrice = parseFloat(unitPrice); $('.totalPrice'+cartID).text(currency+''+unitPrice * qty); $('.subTotal').text(currency+''+response.subTotal); $('.grandTotal').text(currency+''+response.grandTotal); $('.taxAmt').text(currency+''+response.taxes.taxAmount.toFixed(2)); $('.discountAmt').text(response.discount ? currency+''+response.discount : 0); if(response.discount > 0 ){ $('.discount-message').removeClass('d-none') let html =`You Save ${response.discount}` if(response.discountType == 1){ html +=` Discount(${response.discountPer }%)` } $('.discount-message').html(html); } else { $('.discount-message').addClass('d-none') } $('.basket-count').text(response.cartCount); } else{ new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: response.message, closeDelay: 2500 }); } } }); } else { new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: 'Quantity must be Greater then 0' , closeDelay: 2500 }); } } /*-----DELETE CART-----*/ function deleteCart(that,cartID) { Swal.fire({ title: 'Are you sure?', text:'Do you want to remove this item from cart?', icon: 'warning', showCancelButton: true, confirmButtonColor: '#d33', cancelButtonColor: ' #626ABB', confirmButtonText: 'Yes, remove it!' }).then((result) => { if (result.isConfirmed) { let url = document.getElementsByName('baseURL')[0].content; let token = document.getElementsByName('csrf-token')[0].content; url = url+'/remove-item'; $.ajax({ url: url, type: 'post', data:{'_token':token,'cart_id':cartID}, dataType: 'json', success: function(response) { if (response.status == 1) { new RetroNotify({ style: 'green', animate: 'slideTopRight', contentHeader: '<i class="fa fa-check"></i> Success', contentText: response.message , closeDelay: 2500 }); // let unitPrice = parseFloat($('.unitprice'+cartID).text()); // $('.totalPrice'+cartID).text(unitPrice * qty); $('.subTotal').text(response.subTotal); $('.grandTotal').text(response.grandTotal); $('.taxAmt').text(response.taxes[1]); $('.discountAmt').text(response.discount ? response.discount : 0); $('.cart'+cartID).remove(); if(response.cartCount == 0) { $('.shopping-wrapper').empty(); $('.empty-cart').removeClass('d-none'); } $('.basket-count').text(response.cartCount); } else{ new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: response.message , closeDelay: 2500 }); } } }); } }) } /*-----Apply Coupon-----*/ function applyCoupon() { $('#coupon_input').val(); if($('#coupon_input').val()) { let url = document.getElementsByName('baseURL')[0].content; let token = document.getElementsByName('csrf-token')[0].content; let currency = document.getElementsByName('currency')[0].content; url = url+'/apply-coupon'; $.ajax({ url: url, type: 'post', data:{'_token':token,'couponCode':$('#coupon_input').val()}, dataType: 'json', success: function(response) { if (response.status == 1) { new RetroNotify({ style: 'green', animate: 'slideTopRight', contentHeader: '<i class="fa fa-check"></i> Success', contentText: response.message , closeDelay: 2500 }); $('.grandTotal').text(currency+''+response.grandTotal); $('.discountAmt').text(currency+''+response.discount.discountAmt); $('.discount-message').removeClass('d-none') let html =`You Save ${currency}${response.discount.discountAmt}` if(response.discountType == 1){ html +=` Discount(${response.discountPer}%)` } $('.discount-message').html(html) } else if(response.status == 0) { new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: response.message , closeDelay: 2500 }); $('.discountAmt').text('0'); $('.discount-message').addClass('d-none') $('.grandTotal').text(currency+''+response.grandTotal); } else{ new RetroNotify({ style: 'red', animate: 'slideTopRight', contentHeader: '<i class="fa fa-close"></i> Failed', contentText: response.message , closeDelay: 2500 }); $('.discount-message').addClass('d-none') } } }); } else{ new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: 'Coupon Code Required!' , closeDelay: 2500 }); } } function addAddress(countries,type) { (async () => { localStorage.setItem('countries',countries); let isLoggedin = document.getElementsByName('isLogin')[0].content; let addressHTML = `<input id="name" placeholder="Enter name" class="form-control">`; if(!isLoggedin) { addressHTML += `<input id="useremail" type="email" placeholder="Enter email address" class="my-3 form-control"> <input id="usermobile" type="number" placeholder="Enter mobile number" class="my-3 form-control"> `; } addressHTML += `<textarea class="form-control mt-3 mb-3" placeholder="Enter your address" id="address_1" ></textarea> <textarea class="form-control mt-3 mb-3" placeholder="Enter your address 2 (optional)" id="address_2" ></textarea> <select class="form-control mt-3 mb-3" id="country_id"> <option>Select Country</option>` let countryArr = JSON.parse(countries); for(let c=0;c<countryArr.length;c++){ addressHTML +=`<option value='${countryArr[c].id}'>${countryArr[c].name}</option>`; } addressHTML +=`</select> <input id="city" placeholder="Enter city" class="form-control"> <input id="postcode" placeholder="Enter postcode" class="form-control mt-3 mb-3"> ` const { value: formValues } = await Swal.fire({ title: 'Add Address', html:addressHTML , focusConfirm: false, confirmButtonText:"Add Address", preConfirm: () => { let error = false; if(!document.getElementById('name').value) { error = true; new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: 'Name is required' , closeDelay: 2500 }); } if(!isLoggedin && !document.getElementById('useremail').value) { error = true; new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: 'Email is required' , closeDelay: 2500 }); } if(!isLoggedin && !document.getElementById('usermobile').value) { error = true; new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: 'Mobile Number is required' , closeDelay: 2500 }); } if(!document.getElementById('address_1').value) { error = true; new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: 'Address is required' , closeDelay: 2500 }); } if(!document.getElementById('country_id').value) { error = true; new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: 'Country is required' , closeDelay: 2500 }); } if(!document.getElementById('city').value) { error = true; new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: 'City is required' , closeDelay: 2500 }); } if(!document.getElementById('postcode').value) { error = true; new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: 'Postcode is required' , closeDelay: 2500 }); } if(error == false) { return [ document.getElementById('name').value, document.getElementById('address_1').value, document.getElementById('address_2').value, document.getElementById('country_id').value, document.getElementById('city').value, document.getElementById('postcode').value, document.getElementById('useremail') ? document.getElementById('useremail').value : '' , document.getElementById('usermobile') ? document.getElementById('usermobile').value: '' ] } } }) if (formValues) { let url = document.getElementsByName('baseURL')[0].content; let token = document.getElementsByName('csrf-token')[0].content; url = url+'/add-address'; $.ajax({ url: url, type: 'post', data:{'_token':token,'type':type,'name':formValues[0],'address_1':formValues[1],'address_2':formValues[2],'country_id' : formValues[3],'city':formValues[4],'postcode':formValues[5],'email':formValues[6],'mobile':formValues[7]}, dataType: 'json', success: function(response) { if (response.status == 1) { new RetroNotify({ style: 'green', animate: 'slideTopRight', contentHeader: '<i class="fa fa-check"></i> Success', contentText: response.message , closeDelay: 2500 }); let renderHTML = `<div class="col-md-6 col-sm-12 col-xl-6 mt-3 mb-3 "> <div class="address-box"> <a class="edit-add" onclick="updateAddress(${response.addresses.id})"><i class="fa fa-pencil" aria-hidden="true"></i></a> <p class='addressItem${response.addresses.id}'>${response.addresses.name}, ${response.addresses.address_1}, ${response.addresses.address_2}, ${response.addresses.city}, ${response.addresses.postcode}, ${response.addresses.country} </p> <div class="address-check"> <label class="check-label">Delivery Address <input type="radio" name="selectedDeliveryAddress" value="${response.addresses.id}"> <span class="checkmark"></span> </label> </div> </div> </div>`; $('.addressData .col-xl-6:first').before(renderHTML); window.location.reload(); } else if(response.status == 0) { new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: response.message, closeDelay: 2500 }); } else{ new RetroNotify({ style: 'red', animate: 'slideTopRight', contentHeader: '<i class="fa fa-close"></i> Failed', contentText: response.message, closeDelay: 2500 }); $('.discount-message').addClass('d-none') } } }); } })() } ///UPDATE ADDRESS function updateAddress(addressID,countries) { if(countries == undefined) { countires = localStorage.getItem('countries'); } let url = document.getElementsByName('baseURL')[0].content; let token = document.getElementsByName('csrf-token')[0].content; let getAddressUrl = url+'/get-address'; let updateAddressUrl = url+'/update-address'; let addressHTML = ''; //get address $.ajax({ url: getAddressUrl, type: 'post', data:{'_token':token,'id':addressID}, dataType: 'json', success: function(responseAddress) { if(responseAddress.status == 1) { addressHTML = `<input id="name" value="${responseAddress.data.name}" placeholder="Enter name" class="form-control"> <textarea class="form-control mt-3 mb-3" placeholder="Enter your address" id="address_1" >${responseAddress.data.address_1}</textarea> <textarea class="form-control mt-3 mb-3" placeholder="Enter your address 2 (optional)" id="address_2" >${responseAddress.data.address_2}</textarea> <select class="form-control mt-3 mb-3" id="country_id"> <option>Select Country</option>` let countryArr = countries ? JSON.parse(countries) :JSON.parse(localStorage.getItem('countries')); let optionsHTML = ''; for(let c=0;c<countryArr.length;c++){ optionsHTML +='<option value='+countryArr[c].id if(countryArr[c].id == responseAddress.data.country_id) { optionsHTML += ' selected'; } optionsHTML +='>'+countryArr[c].name+'</option>'; } addressHTML += optionsHTML; addressHTML +=`</select> <input id="city" value="${responseAddress.data.city}" placeholder="Enter city" class="form-control"> <input id="postcode" value="${responseAddress.data.postcode}" placeholder="Enter postcode" class="form-control mt-3 mb-3"> `; //show modal and form (async () => { const { value: formValues } = await Swal.fire({ title: 'Update Address', html:addressHTML , focusConfirm: false, confirmButtonText:"Update Address", preConfirm: () => { let error = false; if(!document.getElementById('name').value) { error = true; new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: 'Name is required', closeDelay: 2500 }); } if(!document.getElementById('address_1').value) { error = true; new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: 'Address is required', closeDelay: 2500 }); } if(!document.getElementById('country_id').value) { error = true; new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: 'Country is required', closeDelay: 2500 }); } if(!document.getElementById('city').value) { error = true; new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText: 'City is required', closeDelay: 2500 }); } if(!document.getElementById('postcode').value) { error = true; new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText:'Postcode is required', closeDelay: 2500 }); } if(error == false) { return [ document.getElementById('name').value, document.getElementById('address_1').value, document.getElementById('address_2').value, document.getElementById('country_id').value, document.getElementById('city').value, document.getElementById('postcode').value, ] } } }) if (formValues) { $.ajax({ url: updateAddressUrl, type: 'post', data:{'_token':token,'id':addressID,'name':formValues[0],'address_1':formValues[1],'address_2':formValues[2],'country_id' : formValues[3],'city':formValues[4],'postcode':formValues[5]}, dataType: 'json', success: function(response) { if (response.status == 1) { new RetroNotify({ style: 'green', animate: 'slideTopRight', contentHeader: '<i class="fa fa-check"></i> Success', contentText:response.message, closeDelay: 2500 }); $('.addressItem'+addressID).empty(); $('.addressItem'+addressID).html(`${response.address.name}, ${response.address.address_1}, ${response.address.address_2}, ${response.address.city}, ${response.address.postcode}, ${response.address.country}`) } else if(response.status == 0) { new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText:response.message, closeDelay: 2500 }); } else{ new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText:response.message, closeDelay: 2500 }); $('.discount-message').addClass('d-none') } } }); } })() } } }); } ///UPDATE ADDRESS function deleteAddress(addressID) { let url = document.getElementsByName('baseURL')[0].content; let token = document.getElementsByName('csrf-token')[0].content; url = url+'/delete-addrss'; Swal.fire({ title: 'Are you sure?', text:'Do you want to delete this address?', icon: 'warning', showCancelButton: true, confirmButtonColor: '#d33', cancelButtonColor: ' #626ABB', confirmButtonText: 'Yes, delete it!' }).then((result) => { if (result.isConfirmed) { $.ajax({ url: url, type: 'post', data:{'_token':token,'id':addressID}, dataType: 'json', success: function(response) { if (response.status == 1) { new RetroNotify({ style: 'green', animate: 'slideTopRight', contentHeader: '<i class="fa fa-check"></i> Success', contentText:response.message, closeDelay: 2500 }); $('.removeAdd'+addressID).remove(); } else{ new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText:response.message, closeDelay: 2500 }); } } }); } }); } function selectShipping(shipping) { let url = document.getElementsByName('baseURL')[0].content; let token = document.getElementsByName('csrf-token')[0].content; url = url+'/select-shipping'; $('.address-box').css({"border": "1px solid rgb(18 21 51 / 20%)"}) $.ajax({ url: url, type: 'post', data:{'_token':token,'id':shipping}, dataType: 'json', success: function(response) { if(response.status == 1) { $('.shipping-div-'+shipping).css({"border": "1px solid #F24C62"}) $('.shipping-rate').text(response.shipping.charges); $('.discount-amt').text(response.couponDiscount) $('.grand-total-price').text(response.grandTotal) } else { new RetroNotify({ style: 'white', animate: 'slideTopRight', contentHeader: '<i class="fa fa-info"></i> Failed', contentText:response.message, closeDelay: 2500 }); } } }); } //same as billing address function sameasBilling(event) { if(event.is(':checked')) { $('.deliveryAdd').addClass('d-none') } else { $('.deliveryAdd').removeClass('d-none') } } |
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0045 ]-- |