PHP Classes

File: public/js/cart.js

Recommend this page to a friend!
  Classes of Maniruzzaman Akash   Laravel Stripe Checkout   public/js/cart.js   Download  
File: public/js/cart.js
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Laravel Stripe Checkout
E-commerce checkout that uses Stripe to pay orders
Author: By
Last change:
Date: 1 year ago
Size: 5,642 bytes
 

Contents

Class file image Download
const cartAddKey = 'cartProducts'; initCarts(); function initCarts() { setCartCount(); setCartItems(); setCartSummary(); } function findCartByProductId(cartProductId) { return getCartItems().find(cartItem => { return cartItem.id == cartProductId; }); } function addToCart(product) { product.quantity = 1; let cartProducts = localStorage.getItem(cartAddKey); if (typeof cartProducts === 'undefined' || cartProducts === null || cartProducts === '') { setCartInLocalStorage([product]); return; } if (typeof cartProducts.length !== 'number') { return; } cartProducts = JSON.parse(cartProducts); const cartMatchProducts = cartProducts.filter(prod => { return prod.id == product.id }); if (cartMatchProducts.length > 0) { const items = cartProducts.map(prod => { if (prod.id == product.id) { return { ...prod, quantity: prod.quantity + 1, } } return prod; }) setCartInLocalStorage(items); } else { setCartInLocalStorage([ ...cartProducts, product ]); } initCarts(); } function clearCartItems() { localStorage.removeItem(cartAddKey); } function setCartInLocalStorage(products) { localStorage.setItem(cartAddKey, JSON.stringify(products)); initCarts(); } function getCartItems() { let cartProducts = localStorage.getItem(cartAddKey); if (typeof cartProducts === 'undefined' || cartProducts === null || cartProducts === '') { return []; } return JSON.parse(cartProducts); } function deleteSingleProductFromCart(productId) { const cartsAfterDeleted = getCartItems().filter(cartItem => { return cartItem.id != productId; }); setCartInLocalStorage(cartsAfterDeleted); } function setCartCount() { let cartProducts = getCartItems(); const cartCount = document.getElementById("cart-count"); if (cartProducts.length === 0) { cartCount.innerHTML = "0"; return; } let total = 0; cartProducts.map(cart => { total += cart.quantity; return cart; }); cartCount.innerHTML = "" + total; } function setCartItems() { const cartItems = document.getElementById("cart-items"); if (cartItems === null) { return; } const cartProducts = getCartItems(); if (cartProducts.length === 0) { cartItems.innerHTML = ` <div> <h3>No cart item found</h3> <p class="mt-4"><a class="bg-slate-500 p-2 rounded text-white" href="/">Continue shopping</a></p> </div> `; return; } let html = ''; cartProducts.forEach(cartProduct => { html += buildCartItem(cartProduct); }); cartItems.innerHTML = html; } function deleteCart(cartProductId) { deleteSingleProductFromCart(cartProductId); } function decCart(cartProductId) { let cartProducts = getCartItems().map(cartProduct => { if (cartProductId == cartProduct.id && cartProduct.quantity > 1) { cartProduct.quantity = cartProduct.quantity - 1; } return cartProduct; }); setCartInLocalStorage(cartProducts); } function incCart(cartProductId) { let cartProducts = getCartItems().map(cartProduct => { if (cartProductId == cartProduct.id) { cartProduct.quantity = cartProduct.quantity + 1; } return cartProduct; }); setCartInLocalStorage(cartProducts); } function buildCartItem(cartProduct) { return ` <div class="bg-white text-left shadow-md p-5 mb-4"> <div class="flex justify-between"> <div class="flex"> <div> <img src="${cartProduct.image_url}" class="w-10 mr-4" /> </div> <div> <h2 class="text-lg font-bold">${cartProduct.name}</h2> <h2 class="text-red-500"> ${cartProduct.quantity} X ${cartProduct.price}$ = ${(cartProduct.quantity * cartProduct.price).toFixed(2)}$ </h2> </div> </div> <div class="place-end"> <button class="text-red-500" onClick="deleteCart(${cartProduct.id})">Delete</button> </div> </div> <div class="mt-4"> <button class="bg-slate-400 w-8 h-8 text-black rounded-0" onClick="decCart(${cartProduct.id})">-</button> <input class="w-20 text-center" value="${cartProduct.quantity}" disabled /> <button class="bg-slate-400 w-8 h-8 text-black rounded-0" onClick="incCart(${cartProduct.id})">+</button> </div> </div> `; } function setCartSummary() { const cartProducts = getCartItems(); if (cartProducts.length === 0) { return; } const cartSummary = document.getElementById("cart-summary"); if (cartSummary === null) { return; } let totalItems = 0; let totalAmount = 0; cartProducts.forEach(cartProduct => { totalItems += parseInt(cartProduct.quantity); totalAmount += parseInt(cartProduct.quantity) * parseFloat(cartProduct.price); }); const html = ` <h3 class="text-lg font-bold mb-5">Total Items: ${totalItems}</h3> <h3 class="text-lg font-bold">Subtotal: ${totalAmount.toFixed(2)}$</h3> `; cartSummary.innerHTML = html; }