123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- const state = {
- cartItems: [],
- cartTotal: 0,
- itemToDiscount: null
- }
- const getters = {
- /**
- *
- * @param {*} state
- */
- cartItems (state) {
- return state.cartItems
- },
- /**
- *
- * @param {*} state
- */
- cartTotal (state, getters) {
- return state.cartTotal
- },
- /**
- *
- * @param {*} state
- */
- itemToDiscount (state) {
- return state.itemToDiscount
- }
- }
- const mutations = {
- /**
- *
- * @param {*} state
- * @param {*} payload
- */
- setCart (state, payload) {
- state.cartItems = payload
- },
- /**
- *
- * @param {*} state
- * @param {*} payload
- */
- pushToCart (state, payload) {
- let productFound = state.cartItems.find(item => item.id === payload.id)
- if (productFound) {
- if (payload.quantity > 1) {
- if (productFound.quantity === payload.quantity) {
- productFound.quantity = productFound.quantity + 1
- } else {
- productFound.quantity = payload.quantity
- }
- } else {
- productFound.quantity = productFound.quantity + payload.quantity
- }
- return
- }
- state.cartItems = [payload, ...state.cartItems]
- },
- /**
- *
- * @param {*} state
- * @param {*} payload
- */
- pullFromCart (state, payload) {
- let productFoundIndex = state.cartItems.findIndex(item => item.id === payload.item.id)
- if (state.cartItems[productFoundIndex].quantity === 1) {
- payload.mode = 'full'
- }
- if (payload.mode === 'partial') {
- if (payload.item.quantity !== -1) {
- state.cartItems[productFoundIndex].quantity = payload.item.quantity
- } else {
- state.cartItems[productFoundIndex].quantity = state.cartItems[productFoundIndex].quantity - 1
- }
- } else {
- state.cartItems.splice(productFoundIndex, 1)
- }
- },
- /**
- *
- * @param {*} state
- * @param {*} payload
- */
- setCartTotal (state, payload) {
- state.cartTotal = payload
- },
- /**
- *
- * @param {*} state
- * @param {*} payload
- */
- setItemToDiscount (state, payload) {
- state.itemToDiscount = payload
- },
- /**
- *
- * @param {*} state
- * @param {*} payload
- */
- setItemPrice (state, payload) {
- let foundProduct = state.cartItems.find(item => item.id === state.itemToDiscount.id)
- foundProduct.price = payload
- },
- /**
- *
- * @param {*} state
- * @param {*} payload
- */
- resetPrice (state, payload) {
- let foundProduct = state.cartItems.find(item => item.id === payload.id)
- foundProduct.price = foundProduct.listPrice
- }
- }
- const actions = {
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- addToCart ({ commit }, payload) {
- commit('pushToCart', payload)
- },
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- decreaseFromCart ({ commit }, payload) {
- commit('pullFromCart', {
- item: payload,
- mode: 'partial'
- })
- },
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- undoPrice ({ commit }, payload) {
- commit('resetPrice', payload)
- },
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- changePrice ({ commit }, payload) {
- commit('setItemToDiscount', payload)
- },
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- applyPrice ({ commit }, payload) {
- if (payload) {
- commit('setItemPrice', payload)
- }
- commit('setItemToDiscount', null)
- },
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- removeFromCart ({ commit }, payload) {
- commit('pullFromCart', {
- item: payload,
- mode: 'full'
- })
- },
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- changeCartTotal ({ commit, dispatch }, payload) {
- commit('setCartTotal', payload)
- dispatch('changeAmountToPay', payload)
- },
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- resetCart ({ commit }) {
- commit('setCart', [])
- commit('setCartTotal', 0)
- }
- }
- export default {
- state,
- getters,
- mutations,
- actions
- }
|