latest update 27 jul 24
This commit is contained in:
93
src/helpers/cartHelpers.js
Normal file
93
src/helpers/cartHelpers.js
Normal file
@@ -0,0 +1,93 @@
|
||||
import { getLocalStorage, updateLocalStorage } from './localStorageHelpers';
|
||||
|
||||
// Get quantity from localStorage based on cafeId and itemId
|
||||
export const getItemQtyFromCart = (cafeId, itemId) => {
|
||||
const cart = JSON.parse(getLocalStorage('cart')) || [];
|
||||
const cafeItem = cart.find(cafeItem => cafeItem.cafeId === cafeId);
|
||||
if (cafeItem) {
|
||||
const item = cafeItem.items.find(item => item.itemId === itemId);
|
||||
return item ? item.qty : 0;
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
|
||||
export const getItemsByCafeId = (cafeId) => {
|
||||
const cart = JSON.parse(getLocalStorage('cart')) || [];
|
||||
const cafeItem = cart.find(cafeItem => cafeItem.cafeId === cafeId);
|
||||
return cafeItem ? cafeItem.items : [];
|
||||
};
|
||||
|
||||
// Update quantity in localStorage for a specific cafeId and itemId
|
||||
export const updateItemQtyInCart = (cafeId, itemId, qty) => {
|
||||
let cart = JSON.parse(getLocalStorage('cart')) || [];
|
||||
const cafeIndex = cart.findIndex(cafeItem => cafeItem.cafeId === cafeId);
|
||||
|
||||
if (cafeIndex > -1) {
|
||||
const itemIndex = cart[cafeIndex].items.findIndex(item => item.itemId === itemId);
|
||||
if (itemIndex > -1) {
|
||||
if (qty > 0) {
|
||||
cart[cafeIndex].items[itemIndex].qty = qty; // Update qty if item exists
|
||||
} else {
|
||||
cart[cafeIndex].items.splice(itemIndex, 1); // Remove item if qty is 0
|
||||
}
|
||||
} else if (qty > 0) {
|
||||
cart[cafeIndex].items.push({ itemId, qty }); // Add new item
|
||||
}
|
||||
} else if (qty > 0) {
|
||||
cart.push({ cafeId, items: [{ itemId, qty }] }); // Add new cafeId and item
|
||||
}
|
||||
|
||||
updateLocalStorage('cart', JSON.stringify(cart));
|
||||
};
|
||||
|
||||
// Remove item from localStorage based on cafeId and itemId
|
||||
export const removeItemFromCart = (cafeId, itemId) => {
|
||||
let items = JSON.parse(getLocalStorage('cart')) || [];
|
||||
const cafeIndex = items.findIndex(cafeItem => cafeItem.cafeId === cafeId);
|
||||
if (cafeIndex > -1) {
|
||||
items[cafeIndex].items = items[cafeIndex].items.filter(item => item.itemId !== itemId);
|
||||
if (items[cafeIndex].items.length === 0) {
|
||||
items.splice(cafeIndex, 1); // Remove cafeId if no items left
|
||||
}
|
||||
|
||||
updateLocalStorage('cart', JSON.stringify(items));
|
||||
}
|
||||
};
|
||||
|
||||
// Function to calculate total items count for a specific cafeId from localStorage
|
||||
export const calculateTotals = (cafeId) => {
|
||||
// Get cart items from localStorage
|
||||
const cart = JSON.parse(getLocalStorage('cart')) || [];
|
||||
const cafeCart = cart.find(cafe => cafe.cafeId === cafeId);
|
||||
|
||||
if (!cafeCart) {
|
||||
return { totalCount: 0, totalPrice: 0 }; // Return 0 if no items for the specified cafeId
|
||||
}
|
||||
|
||||
const totalCount = cafeCart.items.reduce((total, item) => {
|
||||
return total + item.qty;
|
||||
}, 0);
|
||||
|
||||
// Assuming each item has a `price` property
|
||||
const totalPrice = cafeCart.items.reduce((total, item) => {
|
||||
return total + (item.qty * item.price);
|
||||
}, 0);
|
||||
|
||||
return { totalCount, totalPrice };
|
||||
};
|
||||
|
||||
// Function to calculate total price for a specific cafeId from localStorage
|
||||
export const calculateTotalPrice = (cafeId) => {
|
||||
// Get cart items from localStorage
|
||||
const cart = JSON.parse(getLocalStorage('cart')) || [];
|
||||
const cafeCart = cart.find(cafe => cafe.cafeId === cafeId);
|
||||
|
||||
const totalPrice = cafeCart.items.reduce((total, cafeItem) => {
|
||||
if (cafeItem.cafeId === cafeId) {
|
||||
return total + cafeItem.items.reduce((acc, item) => acc + (item.qty * item.price), 0);
|
||||
}
|
||||
return total;
|
||||
}, 0);
|
||||
|
||||
return totalPrice;
|
||||
};
|
||||
Reference in New Issue
Block a user