123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- import {
- SET_CART,
- PUSH_TO_CART,
- PULL_FROM_CART,
- SET_CART_TOTAL,
- SET_ITEM_TO_DISCOUNT,
- SET_ITEM_PRICE
- } from '@/constants/mutationTypes'
- import {
- ADD_TO_CART,
- DECREASE_FROM_CART,
- CHANGE_PRICE,
- APPLY_PRICE,
- REMOVE_FROM_CART,
- CHANGE_CART_TOTAL,
- RESET_CART
- } from '@/constants/actionTypes'
- const initialState = {
- cartItems: [],
- cartTotal: 0,
- itemToDiscount: null
- }
- const state = {
- cartItems: initialState.cartItems,
- cartTotal: initialState.cartTotal,
- itemToDiscount: null
- }
- const getters = {
- /**
- *
- * @param {*} state
- */
- cartItems(state) {
- return state.cartItems
- },
- /**
- *
- * @param {*} state
- */
- cartTotal(state) {
- return state.cartTotal
- },
- /**
- *
- * @param {*} state
- */
- itemToDiscount(state) {
- return state.itemToDiscount
- }
- }
- const mutations = {
- /**
- *
- * @param {*} state
- * @param {*} payload
- */
- [SET_CART] (state, payload) {
- state.cartItems = payload
- },
- /**
- *
- * @param {*} state
- * @param {*} payload
- */
- [PUSH_TO_CART] (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
- */
- [PULL_FROM_CART] (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
- */
- [SET_CART_TOTAL] (state, payload) {
- state.cartTotal = payload
- },
- /**
- *
- * @param {*} state
- * @param {*} payload
- */
- [SET_ITEM_TO_DISCOUNT] (state, payload) {
- state.itemToDiscount = payload
- },
- /**
- *
- * @param {*} state
- * @param {*} payload
- */
- [SET_ITEM_PRICE] (state, payload) {
- let foundProduct = state.cartItems.find(item => item.id === state.itemToDiscount.id)
- foundProduct.price = payload
- }
- }
- const actions = {
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- [ADD_TO_CART] ({ commit }, payload) {
- commit(PUSH_TO_CART, payload)
- },
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- [DECREASE_FROM_CART] ({ commit }, payload) {
- commit(PULL_FROM_CART, {
- item: payload,
- mode: 'partial'
- })
- },
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- [CHANGE_PRICE] ({ commit }, payload) {
- commit(SET_ITEM_TO_DISCOUNT, payload)
- },
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- [APPLY_PRICE] ({ commit }, payload) {
- if (payload) {
- commit(SET_ITEM_PRICE, payload)
- }
- commit(SET_ITEM_TO_DISCOUNT, null)
- },
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- [REMOVE_FROM_CART] ({ commit }, payload) {
- commit(PULL_FROM_CART, {
- item: payload,
- mode: 'full'
- })
- },
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- [CHANGE_CART_TOTAL] ({ commit }, payload) {
- commit(SET_CART_TOTAL, payload)
- },
- /**
- *
- * @param {*} param0
- * @param {*} payload
- */
- [RESET_CART] ({ commit }) {
- commit(SET_CART, [])
- commit(SET_CART_TOTAL, 0)
- }
- }
- export default {
- state,
- getters,
- mutations,
- actions
- }
|