diff --git a/frontend/src/apis/communityAPI.js b/frontend/src/apis/communityAPI.js index 2dab2dc8b..e0c298842 100644 --- a/frontend/src/apis/communityAPI.js +++ b/frontend/src/apis/communityAPI.js @@ -1,11 +1,69 @@ import axios from 'axios'; // TODO move this -const COMMUNITY_API_URL = '' +const COMMUNITY_API_STATE_BALANCE_URL = 'http://localhost/state-balances/' +const COMMUNITY_API_TRANSACTION_CREATION_URL = 'http://localhost/transaction-creations/' const communityAPI = { - call: async (param1, param2) => { + balance: async (session_id) => { + try { + const result = await axios.get(COMMUNITY_API_STATE_BALANCE_URL + 'ajaxGetBalance/' + session_id); + if(result.status !== 200){ + throw new Error('HTTP Status Error '+result.status) + } + if(result.data.state === 'error'){ + throw new Error(result.data.msg) + } + if(result.data.state !== 'success'){ + throw new Error(result.data) + } + return { success: true, result } + } catch(error){ + return { success: false, result: error} + } }, + transactions: async (session_id) => { + try { + const result = await axios.get(COMMUNITY_API_STATE_BALANCE_URL + 'ajaxListTransactions/' + session_id); + if(result.status !== 200){ + throw new Error('HTTP Status Error '+result.status) + } + if(result.data.state === 'error'){ + throw new Error(result.data.msg) + } + if(result.data.state !== 'success'){ + throw new Error(result.data) + } + return { success: true, result } + } catch(error){ + return { success: false, result: error} + } + }, + create: async (session_id, email, amount, memo, target_date = new Date() ) => { + const payload = { + session_id, + email, + amount, + target_date, + memo, + auto_sign: true + } + try { + const result = await axios.post(COMMUNITY_API_TRANSACTION_CREATION_URL + 'ajaxCreate/', payload); + if(result.status !== 200){ + throw new Error('HTTP Status Error '+result.status) + } + if(result.data.state === 'error'){ + throw new Error(result.data.msg) + } + if(result.data.state !== 'success'){ + throw new Error(result.data) + } + return { success: true, result } + } catch(error){ + return { success: false, result: error} + } + } } export default communityAPI \ No newline at end of file diff --git a/frontend/src/store/store.js b/frontend/src/store/store.js index 7a96e232e..08b293a7d 100644 --- a/frontend/src/store/store.js +++ b/frontend/src/store/store.js @@ -3,7 +3,7 @@ import Vuex from 'vuex' Vue.use(Vuex) import router from '../routes/router.js' import loginAPI from '../apis/loginAPI' -import axios from 'axios' +import communityAPI from '../apis/communityAPI' export const store = new Vuex.Store({ state: { @@ -21,6 +21,7 @@ export const store = new Vuex.Store({ memo:"AGE", auto_sign: true }, + transactions: [], modals: false }, // Retrieve a state variable @@ -39,6 +40,14 @@ export const store = new Vuex.Store({ console.log('mutation: session_id') state.session_id = session_id }, + user_balance: (state,balance) => { + console.log('mutation: user_balance') + state.user.balance = balance + }, + transactions: (state,transactions) => { + console.log('mutation: transactions') + state.transactions = transactions + } }, // Asyncronous actions - used for api calls actions: { @@ -84,33 +93,41 @@ export const store = new Vuex.Store({ $cookies.remove('gdd_u'); router.push('/Login') }, - ajaxCreate: async (state) => { - state.ajaxCreateData.session_id = state.session_id - console.log(" state.ajaxCreateData => ", state.ajaxCreateData) - axios.post(" http://localhost/transaction-creations/ajaxCreate/", state.ajaxCreateData).then((req) => { - console.log("ajaxCreate => ", req) - }, (error) => { - console.log(error); - }); + ajaxCreate: async ({ dispatch, state }) => { + console.log('action: ajaxCreate') + console.log(state) + const result = await communityAPI.create( + state.session_id, + state.ajaxCreateData.email, + state.ajaxCreateData.amount, + state.ajaxCreateData.memo, + state.ajaxCreateData.target_date, + ) + if( result.success ){ + // TODO + } else { + dispatch('logout') + } }, - ajaxListTransactions: async (state) => { - // console.log("ajaxListTransactions => START") - axios.get("http://localhost/state-balances/ajaxListTransactions/" + state.session_id).then((req) => { - console.log("ajaxListTransactions => ", req) - }, (error) => { - console.log(error); - }); + ajaxListTransactions: async ({commit, dispatch, state}) => { + console.log('action: ajaxListTransactions') + const result = await communityAPI.transactions(state.session_id) + console.log(result) + if(result.success) { + commit('transactions', result.result.data.transactions) + } else { + dispatch('logout') + } }, - accountBalance: async ({ state }) => { - //console.log(" => START") - state.url = "http://localhost/state-balances/ajaxGetBalance/" + state.session_id - //console.log(state.url) - axios.get(state.url).then((req) => { - console.log("accountBalance => ", req.data.balance) - state.user.balance = req.data.balance - }, (error) => { - console.log(error); - }); + accountBalance: async ({ commit, dispatch, state }) => { + console.log('action: accountBalance') + const result = await communityAPI.balance(state.session_id) + console.log(result) + if(result.success) { + commit('user_balance', result.result.data.balance) + } else { + dispatch('logout') + } } } }) \ No newline at end of file diff --git a/frontend/src/views/KontoOverview.vue b/frontend/src/views/KontoOverview.vue index 4fbcc5e37..4cfcddfe7 100644 --- a/frontend/src/views/KontoOverview.vue +++ b/frontend/src/views/KontoOverview.vue @@ -48,9 +48,9 @@
- {{usertransactions}} + {{this.$store.state.transactions}}
@@ -103,7 +103,7 @@ console.log(error); }); }, - UserTransactions() { + /*UserTransactions() { axios.get("/json-example/usertransactions.json").then((transactions) => { console.log(transactions); this.usertransactions = transactions.data; @@ -111,7 +111,7 @@ }, (error) => { console.log(error); }); - }, + },*/ UserParticitions() { axios.get("/json-example/userparticipation.json").then((participation) => { console.log(participation); @@ -135,7 +135,7 @@ }, mounted() { this.UserData(); - this.UserTransactions(); + //this.UserTransactions(); this.UserParticitions(); }, };