import url from '@/plugins/routes' import axios from 'axios' const timeout = 20000 const state = { workgroupsLoading: false, workgroups: [] } const mutations = { setWorkgroups: (state, workgroups) => { state.workgroups = workgroups }, updateWorkgroup: (state, workgroup) => { console.log('workgroup is', workgroup) let exists = state.workgroups.find(a => { return a.id === workgroup.id }) console.log('exists is', exists) if (exists) { exists.name = workgroup.name exists.boss = workgroup.boss } else { state.workgroups.push(workgroup) } }, deleteWorkgroup: (state, workergroup) => { let index = state.workgroups.indexOf( state.workgroups.find(a => { return a.id === workergroup.id }) ) state.workgroups.splice(index, 1) }, setWorkgroupLoading: (state, value) => { state.workgroupsLoading = value } } const actions = { async getAllWorkgroups({ commit, rootState, dispatch }) { try { commit('setWorkgroupLoading', true) const response = await axios.get(url.vorstand.wm.getAllWorkgroups, { headers: { Token: rootState.login.user.accessToken }, timeout }) commit('setWorkgroups', response.data) commit('setWorkgroupLoading', false) dispatch('getLifeTime', null, { root: true }) } catch (e) { if (e.message == 'Network Error') { dispatch('connectionError/addError', null, { root: true }) } commit('setWorkgroupLoading', false) if (e.response) if (e.response.status === 401) dispatch('logout', null, { root: true }) } }, async setWorkgroup({ commit, rootState, dispatch }, data) { try { commit('setWorkgroupLoading', true) const response = await axios.put( url.vorstand.wm.workgroup, { ...data }, { headers: { Token: rootState.login.user.accessToken }, timeout } ) commit('updateWorkgroup', response.data) commit('setWorkgroupLoading', false) dispatch('getLifeTime', null, { root: true }) } catch (e) { if (e.message == 'Network Error') { dispatch('connectionError/addError', null, { root: true }) } if (e.response) if (e.response.status === 401) dispatch('logout', null, { root: true }) } }, async updateWorkgroup({ commit, rootState, dispatch }, data) { try { commit('setWorkgroupLoading', true) const repsonse = await axios.post( url.vorstand.wm.workgroup, { ...data }, { headers: { Token: rootState.login.user.accessToken }, timeout } ) commit('updateWorkgroup', repsonse.data) commit('setWorkgroupLoading', false) dispatch('getLifeTime', null, { root: true }) } catch (e) { if (e.message == 'Network Error') { dispatch('connectionError/addError', null, { root: true }) } if (e.response) if (e.response.status === 401) dispatch('logout', null, { root: true }) } }, async deleteWorkgroup({ commit, rootState, dispatch }, data) { try { commit('setWorkgroupLoading', true) await axios.post( url.vorstand.wm.deleteWorkgroup, { ...data }, { headers: { Token: rootState.login.user.accessToken }, timeout } ) commit('deleteWorkgroup', data) commit('setWorkgroupLoading', false) dispatch('getLifeTime', null, { root: true }) } catch (e) { if (e.message == 'Network Error') { dispatch('connectionError/addError', null, { root: true }) } if (e.response) if (e.response.status === 401) dispatch('logout', null, { root: true }) } } } const getters = { workgroups: state => { return state.workgroups }, workgroupLoading: state => { return state.workgroupsLoading } } export default { namespaced: true, state, mutations, actions, getters }