From 2e4678c40a7c92a981bf67845a2888893ea9b758 Mon Sep 17 00:00:00 2001 From: Mateja Date: Sun, 25 Jul 2021 00:55:53 +0200 Subject: Boilerplate checkout cart. --- client/src/store/index.js | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'client/src/store') diff --git a/client/src/store/index.js b/client/src/store/index.js index d2fe9b7..2454977 100644 --- a/client/src/store/index.js +++ b/client/src/store/index.js @@ -3,16 +3,42 @@ import axios from 'axios'; export default createStore({ state: { - products: [] + products: [], + cart: [] }, getters: { getProducts(state) { return state.products; + }, + getCart(state) { + return state.cart; + }, + getCartSize(state) { + let sum = 0; + state.cart.forEach(x => sum += x.quantity); + return sum; + }, + getCartPrice(state) { + let sum = 0; + state.cart.forEach(x => sum += x.price * x.quantity); + return sum; } }, mutations: { setProducts(state, products) { state.products = products; + }, + addToCart(state, product) { + let foundProduct = state.cart.find(x => x.id == product._id); + if (foundProduct) + foundProduct.quantity++; + else + state.cart.push({ + id: product._id, + name: product.name, + price: product.price, + quantity: 1 + }); } }, actions: { -- cgit v1.2.3