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

347 lines
9.3 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-06-04 18:56:03 +00:00
messages: [],
menu: false,
locked: 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
2020-06-04 18:56:03 +00:00
existuser.limit = users[user].limit
2020-01-14 21:01:24 +00:00
} 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,
2020-06-04 18:56:03 +00:00
loading: false,
limit: users[user].limit
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) => {
2020-06-04 18:56:03 +00:00
var message = null
if (state.messages.length > 0) {
if (state.messages[0].user.id === data.user.id && !data.error) {
message = state.messages[0]
if ((new Date() - state.messages[0].date) / 1000 < 2) {
clearTimeout(message.timeout)
message.amount = message.amount + data.amount
message.visible = true
message.date = new Date()
message.timeout = setTimeout(() => {message.visible = false}, 5000)
return
}
else {
message.visible = false
}
}
2020-02-16 19:35:13 +00:00
}
2020-06-04 18:56:03 +00:00
let message2 = {
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-06-04 18:56:03 +00:00
date: new Date(),
timeout: setTimeout(() => {message2.visible = false}, 5000)
}
state.messages.unshift(message2)
2020-02-16 19:35:13 +00:00
},
updateMessage: (state, data) => {
2020-06-04 18:56:03 +00:00
var message = state.messages.find(msg => {
2020-02-22 06:28:13 +00:00
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
},
setLocked: (satet, value) => {
state.locked = 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)
dispatch('getLifeTime', null, { root: true })
2020-01-14 21:01:24 +00:00
} catch (e) {
if (e.response)
if (e.response.status === 401) {
dispatch('getLifeTime', null, { root: true })
location.reload()
}
}
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 {
2020-03-05 20:16:47 +00:00
commit('updateUser', { username: data.username, loading: true })
} catch (e) {
2020-03-05 20:16:47 +00:00
//error
}
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
})
dispatch('getLifeTime', null, { root: true })
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('getLifeTime', null, { root: true })
location.reload()
}
2020-01-14 21:01:24 +00:00
}
try {
2020-03-05 20:16:47 +00:00
commit('updateUser', { username: data.username, loading: false })
} catch (e) {
2020-03-05 20:16:47 +00:00
//error
}
2020-01-14 21:01:24 +00:00
},
async addCreditList({ commit, rootState, dispatch }, data) {
try {
2020-03-05 20:16:47 +00:00
commit('updateUser', { username: data.username, loading: true })
} catch (e) {
2020-03-05 20:16:47 +00:00
//error
}
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 })
dispatch('getLifeTime', null, { root: true })
2020-01-14 21:01:24 +00:00
} catch (e) {
if (e.response)
if (e.response.status === 401) {
dispatch('getLifeTime', null, { root: true })
location.reload()
}
2020-01-14 21:01:24 +00:00
}
try {
2020-03-05 20:16:47 +00:00
commit('updateUser', { username: data.username, loading: false })
} catch {
// error
}
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 {
2020-03-05 20:16:47 +00:00
const response = await axios.get(url.searchUser, {
headers: { Token: rootState.login.user.accessToken }
})
2020-01-14 21:01:24 +00:00
commit('setAllUsers', response.data)
dispatch('getLifeTime', null, { root: true })
2020-01-14 21:01:24 +00:00
} catch (e) {
if (e.response)
if (e.response.data === 401) {
dispatch('getLifeTime', null, { root: true })
location.reload()
}
2020-01-14 21:01:24 +00:00
}
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 })
dispatch('getLifeTime', null, { root: true })
} catch (e) {
if (e.response)
if (e.response.status === 401) {
dispatch('getLifeTime', null, { root: true })
location.reload()
}
}
2020-02-22 07:33:21 +00:00
commit('updateMessage', { date: data.date, loading: false })
},
async getLocked({ commit, rootState, dispatch }) {
try {
const response = await axios.get(url.barU.lock, {
headers: { Token: rootState.login.user.accessToken }
})
commit('setLocked', response.data.value)
} catch (e) {
if (e.response)
if (e.response.status === 401) {
dispatch('getLifeTime', null, { root: true })
location.reload()
}
}
},
async setLocked({ commit, rootState, dispatch }) {
try {
const response = await axios.post(
url.barU.lock,
{ value: true },
{ headers: { Token: rootState.login.user.accessToken } }
)
commit('setLocked', response.data.value)
} catch (e) {
if (e.response)
if (e.response.status === 401) {
dispatch('getLifeTime', null, { root: true })
location.reload()
}
}
},
async unlock({ commit, rootState, dispatch }, password) {
try {
const valid = await axios.post(
url.user.valid,
{ password: password },
{ headers: { Token: rootState.login.user.accessToken } }
)
if (valid.data.ok === 'ok') {
const response = await axios.post(
url.barU.lock,
{ value: false },
{ headers: { Token: rootState.login.user.accessToken } }
)
commit('setLocked', response.data.value)
}
} catch (e) {
if (e.response)
if (e.response.status === 401) {
dispatch('getLifeTime', null, { root: true })
location.reload()
}
}
},
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 => {
2020-06-04 18:56:03 +00:00
return state.messages
2020-02-16 19:35:13 +00:00
},
menu: state => {
return state.menu
},
locked: state => {
return state.locked
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
}