import axios from 'axios' import url from '@/plugins/routes' const state = { users: [], allUsers: [], filter: '', usersLoading: false, allUsersLoading: false, message: [], menu: false } const mutations = { setAllUsers: (state, users) => { state.allUsers = [] state.allUsers = users for (let i = 0; i < state.allUsers.length; i++) { state.allUsers[i].fullName = state.allUsers[i].firstname + ' ' + state.allUsers[i].lastname } }, setUsers: (state, users) => { for (let user in users) { let existuser = state.users.find(a => { return user === a.username }) if (existuser) { existuser.sername = users[user].username existuser.firstname = users[user].firstname existuser.lastname = users[user].lastname existuser.locked = users[user].locked existuser.amount = users[user].amount existuser.type = users[user].type } else { state.users.push({ username: users[user].username, firstname: users[user].firstname, lastname: users[user].lastname, locked: users[user].locked, amount: users[user].amount, type: users[user].type, loading: false }) } } mutations.sortUsers(state) }, updateUser: (state, data) => { let index = state.users.indexOf( state.users.find(a => { return a.username === data.username }) ) if (data.loading !== undefined) state.users[index].loading = data.loading }, sortUsers: state => { state.users = state.users.sort((a, b) => { if (a.lastname > b.lastname) return 1 if (a.lastname < b.lastname) return -1 if (a.firstname > b.firstname) return 1 if (a.firstname < b.firstname) return -1 return 0 }) }, setFilter: (state, filter) => { state.filter = filter }, setUsersLoading: (state, value) => { state.usersLoading = value }, setAllUsersLoading: (state, value) => { state.allUsersLoading = value }, addMessage: (state, data) => { var message = '' if (data.error) { message = 'Konnte ' + (data.amount / 100).toFixed(2) + '€ zu ' + data.user.firstname + ' ' + data.user.lastname + ' hinzufügen.' } else { message = '' + (data.amount / 100).toFixed(2) + '€ wurde zu ' + data.user.firstname + ' ' + data.user.lastname + ' hinzugefügt.' } state.message.unshift({ message: message, error: data.error, storno: false, visible: true, amount: data.amount, date: new Date() }) console.log(state.message) }, setMenu: (state, value) => { state.menu = value } } const actions = { // eslint-disable-next-line no-unused-vars async getUsers({ commit, rootState, dispatch }) { commit('setUsersLoading', true) try { const response = await axios.get(url.bar, { headers: { Token: rootState.login.user.accessToken } }) commit('setUsers', response.data) } catch (e) { if (e.response) if (e.response.status === 401) dispatch('logout', null, { root: true }) } commit('setUsersLoading', false) }, async addAmount({ commit, rootState, dispatch }, data) { commit('updateUser', { username: data.username, loading: true }) try { const response = await axios.post( url.barAddAmount, { userId: data.username, amount: data.amount }, { headers: { Token: rootState.login.user.accessToken } } ) commit('setUsers', { [response.data.username]: response.data }) commit('addMessage', { user: data.user, amount: data.amount, error: false }) } catch (e) { commit('addMessage', { user: data.user, amount: data.amount, error: true }) if (e.response) if (e.response.status === 401) dispatch('logout', null, { root: true }) } commit('updateUser', { username: data.username, loading: false }) }, async addCreditList({ commit, rootState, dispatch }, data) { commit('updateUser', { username: data.username, loading: true }) try { const response = await axios.post( url.barGetUser, { userId: data.username }, { headers: { Token: rootState.login.user.accessToken } } ) commit('setUsers', { [response.data.username]: response.data }) } catch (e) { if (e.response) if (e.response.status === 401) dispatch('logout', null, { root: true }) } commit('updateUser', { username: data.username, loading: false }) }, async getAllUsers({ commit, rootState, dispatch }) { commit('setAllUsersLoading', true) try { const response = await axios.post( url.searchUser, { searchString: '' }, { headers: { Token: rootState.login.user.accessToken } } ) commit('setAllUsers', response.data) } catch (e) { if (e.response) if (e.response.data === 401) dispatch('logout', null, { root: true }) } commit('setAllUsersLoading', false) }, setFilter({ commit }, data) { commit('setFilter', data) }, activateMenu({ commit }) { commit('setMenu', true) }, deactivateMenu({ commit }) { commit('setMenu', false) } } const getters = { users: state => { return state.users }, allUsers: state => { return state.allUsers }, filter: state => { return state.filter }, usersLoading: state => { return state.usersLoading }, allUsersLoading: state => { return state.allUsersLoading }, messages: state => { return state.message }, menu: state => { return state.menu } } export default { namespaced: true, state, mutations, actions, getters }