flaschengeist-frontend/src/store/modules/barUsers.js

270 lines
7.0 KiB
JavaScript
Raw Normal View History

2020-01-14 21:01:24 +00:00
import axios from 'axios'
import url from '@/plugins/routes'
const state = {
2020-01-14 21:01:24 +00:00
users: [],
allUsers: [],
2020-01-23 22:25:21 +00:00
filter: '',
usersLoading: false,
2020-02-11 19:34:05 +00:00
allUsersLoading: false,
2020-02-16 19:35:13 +00:00
message: [],
menu: false
2020-01-14 21:01:24 +00:00
}
const mutations = {
2020-01-14 21:01:24 +00:00
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
})
2020-01-14 18:57:45 +00:00
2020-01-14 21:01:24 +00:00
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,
2020-01-23 22:25:21 +00:00
type: users[user].type,
loading: false
2020-01-14 18:57:45 +00:00
})
2020-01-14 21:01:24 +00:00
}
}
mutations.sortUsers(state)
},
2020-01-23 22:25:21 +00:00
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
},
2020-01-14 21:01:24 +00:00
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
2020-01-23 22:25:21 +00:00
},
setUsersLoading: (state, value) => {
state.usersLoading = value
},
setAllUsersLoading: (state, value) => {
state.allUsersLoading = value
2020-02-16 19:35:13 +00:00
},
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,
user: data.user,
2020-02-16 19:35:13 +00:00
error: data.error,
storno: false,
2020-02-22 07:33:21 +00:00
loading: false,
2020-02-16 19:35:13 +00:00
visible: true,
amount: data.amount,
2020-02-16 19:35:13 +00:00
date: new Date()
})
console.log(state.message)
},
updateMessage: (state, data) => {
2020-02-22 06:28:13 +00:00
var message = state.message.find(msg => {
return msg.date - data.date === 0 ? true : false
})
if (message) {
2020-02-22 07:33:21 +00:00
if (data.storno !== undefined) message.storno = data.storno
if (data.loading !== undefined) message.loading = data.loading
}
},
2020-02-16 19:35:13 +00:00
setMenu: (state, value) => {
state.menu = value
2020-01-14 21:01:24 +00:00
}
}
const actions = {
2020-01-14 21:01:24 +00:00
// eslint-disable-next-line no-unused-vars
async getUsers({ commit, rootState, dispatch }) {
2020-01-23 22:25:21 +00:00
commit('setUsersLoading', true)
2020-01-14 21:01:24 +00:00
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 })
}
2020-01-23 22:25:21 +00:00
commit('setUsersLoading', false)
2020-01-14 21:01:24 +00:00
},
async addAmount({ commit, rootState, dispatch }, data) {
try {
commit('updateUser', {username: data.username, loading: true})
} catch (e) {
console.log(e)
}
2020-01-14 21:01:24 +00:00
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 })
2020-02-16 19:35:13 +00:00
commit('addMessage', {
user: data.user,
amount: data.amount,
error: false
})
2020-01-14 21:01:24 +00:00
} catch (e) {
2020-02-16 19:35:13 +00:00
commit('addMessage', {
user: data.user,
amount: data.amount,
error: true
})
2020-01-14 21:01:24 +00:00
if (e.response)
if (e.response.status === 401) dispatch('logout', null, { root: true })
}
try {
commit('updateUser', {username: data.username, loading: false})
} catch (e) {
console.log(e)
}
2020-01-14 21:01:24 +00:00
},
async addCreditList({ commit, rootState, dispatch }, data) {
try {
commit('updateUser', {username: data.username, loading: true})
} catch (e) {
console.log(e)
}
2020-01-14 21:01:24 +00:00
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 })
}
try {
commit('updateUser', {username: data.username, loading: false})
} catch (e) {
console.log(e)
}
2020-01-14 21:01:24 +00:00
},
async getAllUsers({ commit, rootState, dispatch }) {
2020-01-23 22:25:21 +00:00
commit('setAllUsersLoading', true)
2020-01-14 21:01:24 +00:00
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 })
}
2020-01-23 22:25:21 +00:00
commit('setAllUsersLoading', false)
},
async storno({ commit, rootState, dispatch }, data) {
2020-02-22 07:33:21 +00:00
commit('updateMessage', { date: data.date, loading: true })
try {
const response = await axios.post(
url.barU.storno,
{
userId: data.username,
amount: data.amount
},
{ headers: { Token: rootState.login.user.accessToken } }
)
commit('setUsers', { [response.data.username]: response.data })
2020-02-22 07:33:21 +00:00
commit('updateMessage', { date: data.date, storno: true })
} catch (e) {
if (e.response)
if (e.response.status === 401) dispatch('logout', null, { root: true })
}
2020-02-22 07:33:21 +00:00
commit('updateMessage', { date: data.date, loading: false })
},
setFilter({ commit }, data) {
commit('setFilter', data)
2020-02-16 19:35:13 +00:00
},
activateMenu({ commit }) {
commit('setMenu', true)
},
deactivateMenu({ commit }) {
commit('setMenu', false)
2020-01-14 21:01:24 +00:00
}
}
const getters = {
2020-01-14 21:01:24 +00:00
users: state => {
return state.users
},
allUsers: state => {
return state.allUsers
},
filter: state => {
return state.filter
2020-01-23 22:25:21 +00:00
},
usersLoading: state => {
return state.usersLoading
},
allUsersLoading: state => {
return state.allUsersLoading
2020-02-16 19:35:13 +00:00
},
messages: state => {
return state.message
},
menu: state => {
return state.menu
2020-01-26 11:55:39 +00:00
}
2020-01-14 21:01:24 +00:00
}
export default {
2020-01-14 21:01:24 +00:00
namespaced: true,
state,
mutations,
actions,
getters
}