import axios from 'axios' import url from '@/plugins/routes' const state = { transactJobs: [], transactJobsLoading: false, requestJobs: [], requestJobsLoading: false } const mutations = { setTransactJobs: (state, data) => { var list = [] for (var i in data) { list.push({ date: new Date( data[i].date.year, data[i].date.month - 1, data[i].date.day ), from_user: data[i].from_user, to_user: data[i].to_user, accepted: data[i].accepted, answerd: data[i].answerd }) } state.transactJobs = list }, setRequestJobs: (state, data) => { var list = [] for (var i in data) { list.push({ date: new Date( data[i].date.year, data[i].date.month - 1, data[i].date.day ), from_user: data[i].from_user, to_user: data[i].to_user, accepted: data[i].accepted, answerd: data[i].answerd }) } state.requestJobs = list }, setTransactJobsLoading: (state, value) => { state.transactJobsLoading = value }, setRequestJobsLoading: (state, value) => { state.requestJobsLoading = value }, updateRequestJob: (state, data) => { const date = new Date(data.date.year, data.date.month - 1, data.date.day) for (var i in state.requestJobs) { if ( state.requestJobs[i].date - date === 0 && state.requestJobs[i].from_user.username === data.from_user.username ) { state.requestJobs[i].accepted = data.accepted state.requestJobs[i].answerd = data.answerd break } } }, deleteTransactJobactJob: (state, data) => { const date = new Date(data.year, data.month - 1, data.day) var job = state.transactJobs.find(a => { console.log(a) console.log(a.date, date) return a.date - date === 0 && a.to_user.username === data.username }) console.log(job) var index = state.transactJobs.indexOf(job) if (job) state.transactJobs.splice(index, 1) } } const actions = { async getTransactJobs({ commit, rootState, dispatch }, data) { commit('setTransactJobsLoading', true) try { const response = await axios.post( url.user.getTransactJobs, { ...data }, { headers: { Token: rootState.login.user.accessToken } } ) commit('setTransactJobs', response.data) } catch (e) { if (e.response) if (e.response.data === 401) dispatch('logout', null, { root: true }) commit('setTransactJobsLoading', false) } commit('setTransactJobsLoading', false) }, async getRequestJobs({ commit, rootState, dispatch }, data) { commit('setRequestJobsLoading', true) try { const response = await axios.post( url.user.jobRequests, { ...data }, { headers: { Token: rootState.login.user.accessToken } } ) commit('setRequestJobs', response.data) } catch (e) { if (e.response) if (e.response.data === 401) dispatch('logout', null, { root: true }) commit('setRequestJobsLoading', false) } commit('setRequestJobsLoading', false) }, async answerTransactJob({ commit, rootState, dispatch }, data) { try { const response = await axios.post( url.user.answerTransactJob, { ...data }, { headers: { Token: rootState.login.user.accessToken } } ) commit('updateRequestJob', response.data) } catch (e) { if (e.response) if (e.response.data === 401) dispatch('logout', null, { root: true }) } }, async deleteTransactJob({ commit, rootState, dispatch }, data) { try { await axios.post( url.user.deleteTransactJobs, { ...data }, { headers: { Token: rootState.login.user.accessToken } } ) commit('deleteTransactJobactJob', data) } catch (e) { if (e.response) if (e.response.data === 401) dispatch('logout', null, { root: true }) } } } const getters = { transactJobs: state => { return state.transactJobs }, transactJobsLoading: state => { return state.transactJobsLoading }, requestJobs: state => { return state.requestJobs }, requestJobsLoading: state => { return state.requestJobsLoading } } export default { namespaced: true, state, mutations, actions, getters }