Current File : /home/masbinta/public_html/assets/front/js/product.js
$(function ($) {
    ("use strict");

    // message show sweet alert
    const Toast2 = Swal.mixin({
        toast: true,
        position: 'top-end',
        showConfirmButton: false,
        timer: 3000,
        timerProgressBar: true,
        didOpen: (toast) => {
            toast.addEventListener('mouseenter', Swal.stopTimer)
            toast.addEventListener('mouseleave', Swal.resumeTimer)
        }
    });
    function success(message) {
            Toast2.fire({
                icon: 'success',
                title: message
            })
    };
    function error(message) {
            Toast2.fire({
                icon: 'error',
                title: message
            })
    };

    // message show sweet alert end


// product quintity select js

$(document).on('click','.subclick',function(){
    let current_qty = parseInt($('.cart-amount').val());
    if(current_qty>1){
        $('.cart-amount').val(current_qty-1);
    }else{
        error('Minumum Quantity Must Be 1');
    }
    
})


$(document).on('click','.addclick',function(){
    let current_stock = parseInt($('#current_stock').val());
    let current_qty = parseInt($('.cart-amount').val());
    if(current_qty < current_stock){
        $('.cart-amount').val(current_qty+1);
    }else{
        error('Product Quantity Maximum ' + current_stock);
    }
})

$(document).on('keyup','.cart-amount',function(){
    let current_stock = parseInt($('#current_stock').val());
    let key_val = parseInt($(this).val());

    if(key_val > current_stock){
        error('Product Maximum Quantity '+current_stock);
        $('.cart-amount').val(current_stock);
    }
    if(key_val <= 0){
        $('.cart-amount').val(1);
        error('Product Minimum Quantity'+1);
    }
    if(key_val > 0 && key_val < current_stock ){
        $('.cart-amount').val(key_val);
    }

})

// product quintity select js



// ============== add to cart js start =======================//

$(document).on('click','.cart-link',function() {
    let cartUrl = $(this).attr('data-href');
    let cartItemCount = $('.cart-amount').val();
    if(typeof cartItemCount === 'undefined'){
        cartItemCount = 1;
    }
    console.log(cartItemCount);
    $.get(cartUrl+',,,'+cartItemCount,function(res){
        if(res.message){
            getCartQty();
            success(res.message);
            $('.cart-amount').val(1);
        }else{
            error(res.error)
            $('.cart-amount').val(1);
        }  
    })
});

// ============== add to cart js end =======================//

// =============== header cart view js =======================//

$(document).on('mouseover','#view_cart_ajax',function(){
    loadCart();
})
$(document).on('mouseover','#cart-count',function(){
    loadCart();
})


// load header cart 
function loadCart(){
    let mainurl = $('#main_url').val();
     let getUrl = $('#view_cart_ajax').attr('data-target');
    $.get(getUrl,function(res){
        $('#cart-items').html('');
        $('#cart-items').html(res);
    });
}

// show cart quintity 

function getCartQty(){
    let get_qty_url = $('#cart-count').attr('data-target');
    $.get(get_qty_url,function(qty){
        $('.cart-count').html(qty);
    }); 
}


// =========== Cart Qty Update ============ //


$(".cart_qty_update").bind('keyup mouseup', function () {
    let stock = parseInt($(this).attr('aria-details'));
    let qty = parseInt($(this).val());
    if(0 >= qty ){
        error('Product Minimum Quantity '+1);
        $(this).val(1);
    }
    if(stock < qty){
        error('Product Maximum Quantity '+stock);
        $(this).val(stock); 
    }
});



// ================ cart item remove js start =======================//

$(document).on('click','.item-remove',function(){
   
    let removeItem = $(this).attr('rel');
    let removeItemUrl = $(this).attr('data-href');
    $.get(removeItemUrl,function(res){
        if(res.message){
            success(res.message);
            getCartQty();
            if(res.count == 0){
                $(".total-item-info").remove();
                $(".cart-table").remove();
                $(".cart-middle").remove();
                $('.remove_before').html( `
                    <div class="bg-light py-5 text-center">
                        <h3 class="text-uppercase">Cart is empty!</h3>
                    </div>`
                );
            }
            $('.cart-item-view').text(res.count);
            $('.cart-total-view').text(res.total);
            $('.remove'+removeItem).remove(); 
        }else{
            error(res.error);
        }
      
    });
  
});


// ================ cart item remove js start =======================//


//=============== cart update js start ==========================//

$(document).on('click','#cart_update',function(){
    $(this).text($(this).attr('rel'));
    $(this).prop('disabled',true);
    let cartqty = [];
    let cartprice = [];
    let cartproduct = [];
    let cartUpdateUrl = $(this).attr('data-href');
    
    $(".quantity").each(function() {
        cartqty.push($(this).val());
    })
    
    $("span.cart_price").each(function() {
        cartprice.push(parseFloat($(this).text()));
    });
    
    $(".product_id").each(function() {
        cartproduct.push($(this).val());
    });
    
    let formData = new FormData();
    let x = 0;
    for(x=0; x<cartqty.length; x++) {
        formData.append('qty[]', cartqty[x]);
        formData.append('cartprice[]', cartprice[x]);
        formData.append('product_id[]', cartproduct[x]);
    }
    
    $.ajaxSetup({
       headers: {
           'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
       }
    });
    
    $.ajax({
               type: "POST",
               url: cartUpdateUrl,
               data: formData,
               processData: false,
               contentType:false,
               success: function(data)
               {
                if(data.message){
                    let cartPriceUpdate = [];
                    $(".cart_price").each(function() {
                        cartPriceUpdate.push(parseFloat($(this).text()));
                    });
                    $('.cart-total-view').text(data.total);
                    $('#cart_update').text($('#cart_update').attr('rel2'));
                    $('#cart_update').prop('disabled',false);
                    success(data.message);
                    if(data.count){
                        $('.cart-item-view').text(data.count);
                        $('.cart-total-view').text(data.total);
                    }
                }else{
                    error(data.error);
                }
                    
            }
        });
    })
    
    
//================= cart update js end ==========================//

//================= Header cart item remove ======================//
// ================ cart item remove js start =======================//

$(document).on('click','.header_item_remove',function(){
   
    let removeItem = $(this).attr('rel');
    let removeItemUrl = $(this).attr('data-href');
    $.get(removeItemUrl,function(res){
        if(res.message){
            $('.product_remove'+removeItem).remove(); 
            loadCart();
            getCartQty();
            success(res.message);
        }else{
            error(res.error);
        }
      
    });
  
});


// ================ cart item remove js start =======================//
//================= Header cart item remove ======================//

//================== shipping charge js =========================//
 
$(document).on('click','.shipping-charge',function(){
    let cost = parseFloat($(this).attr('data'));
    let grand_total = parseFloat($('.grand_total').attr('data'));
    let new_total = grand_total + cost;
    $('.grand_total').html(parseFloat(new_total).toFixed(2));
    $('.shipping_cost').html(cost);
    
});

$(document).on('change','#change_address',function(){
    if($(this).is(':checked')){
        $('#shipping-area').removeClass('d-none');
    }else{
        $('#shipping-area').addClass('d-none');
    }
})
//================== shipping charge js =========================//


});