import { ADD_CUSTOMER, SET_CUSTOMERS, SET_LOADING_CUSTOMERS, SET_SELECTED_CUSTOMER, SET_SHOW_CUSTOMER_FORM } from '@/constants/mutationTypes' import { INIT_CUSTOMERS, SHOW_CUSTOMER_FORM, HIDE_CUSTOMER_FORM, SUBMIT_CUSTOMER, CREATE_CUSTOMER, RECEIVE_CUSTOMER, SELECT_CUSTOMER, RESET_CUSTOMER } from '@/constants/actionTypes' const initialState = { customers: [], loadingCustomers: false, showingCustomerForm: false, selectedCustomer: null } const state = { customers: initialState.customers, loadingCustomers: !initialState.loadingCustomers, showingCustomerForm: initialState.showingCustomerForm, selectedCustomer: initialState.selectedCustomer } const getters = { /** * * @param {*} state */ customers(state) { return state.customers }, /** * * @param {*} state */ loadingCustomers(state) { return state.loadingCustomers }, /** * * @param {*} state */ showingCustomerForm(state) { return state.showingCustomerForm }, /** * * @param {*} state */ selectedCustomer(state) { return state.selectedCustomer }, /** * * @param {*} state */ customerCredit(state) { return state.selectedCustomer && state.selectedCustomer.creditLimit >= state.selectedCustomer.credit ? state.selectedCustomer.creditLimit - state.credit : 0 } } const mutations = { /** * * @param {*} state * @param {*} payload */ [SET_CUSTOMERS] (state, payload) { state.customers = payload }, /** * * @param {*} state * @param {*} payload */ [SET_LOADING_CUSTOMERS] (state, payload) { state.loadingCustomers = !!payload }, /** * * @param {*} state * @param {*} payload */ [SET_SHOW_CUSTOMER_FORM] (state, payload) { state.showingCustomerForm = !!payload }, /** * * @param {*} state * @param {*} payload */ [ADD_CUSTOMER] (state, payload) { state.customers = [payload, ...state.customers] }, /** * * @param {*} state * @param {*} payload */ [SET_SELECTED_CUSTOMER] (state, payload) { state.selectedCustomer = payload } } const actions = { /** * * @param {*} param0 * @param {*} payload */ [INIT_CUSTOMERS] ({ commit }, payload) { commit(SET_CUSTOMERS, payload) commit(SET_LOADING_CUSTOMERS) }, /** * * @param {*} param0 * @param {*} payload */ [SHOW_CUSTOMER_FORM] ({ commit }) { commit(SET_SHOW_CUSTOMER_FORM, true) }, /** * * @param {*} param0 */ [HIDE_CUSTOMER_FORM] ({ commit }) { commit(SET_SHOW_CUSTOMER_FORM, false) }, /** * * @param {*} param0 */ [SUBMIT_CUSTOMER] ({ commit, dispatch }, payload) { commit(SET_LOADING_CUSTOMERS, true) dispatch(CREATE_CUSTOMER, payload) dispatch(HIDE_CUSTOMER_FORM) }, /** * * @param {*} param0 * @param {*} payload */ [RECEIVE_CUSTOMER] ({ commit }, payload) { commit(ADD_CUSTOMER, payload) commit(SET_LOADING_CUSTOMERS, false) }, /** * * @param {*} param0 */ [SELECT_CUSTOMER] ({ commit }, payload) { commit(SET_SELECTED_CUSTOMER, payload) }, /** * * @param {*} param0 */ [RESET_CUSTOMER] ({ commit }) { commit(SET_LOADING_CUSTOMERS, true) commit(SET_CUSTOMERS, []) commit(SET_SELECTED_CUSTOMER, null) } } export default { state, getters, mutations, actions }