communityAPI, balance, create, transactions, some hooks to the frontend

This commit is contained in:
Ulf Gebhardt 2021-02-26 21:14:49 +01:00
parent 448c274557
commit a717edb4b0
No known key found for this signature in database
GPG Key ID: 81308EFE29ABFEBD
3 changed files with 108 additions and 33 deletions

View File

@ -1,11 +1,69 @@
import axios from 'axios'; import axios from 'axios';
// TODO move this // 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 = { 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 export default communityAPI

View File

@ -3,7 +3,7 @@ import Vuex from 'vuex'
Vue.use(Vuex) Vue.use(Vuex)
import router from '../routes/router.js' import router from '../routes/router.js'
import loginAPI from '../apis/loginAPI' import loginAPI from '../apis/loginAPI'
import axios from 'axios' import communityAPI from '../apis/communityAPI'
export const store = new Vuex.Store({ export const store = new Vuex.Store({
state: { state: {
@ -21,6 +21,7 @@ export const store = new Vuex.Store({
memo:"AGE", memo:"AGE",
auto_sign: true auto_sign: true
}, },
transactions: [],
modals: false modals: false
}, },
// Retrieve a state variable // Retrieve a state variable
@ -39,6 +40,14 @@ export const store = new Vuex.Store({
console.log('mutation: session_id') console.log('mutation: session_id')
state.session_id = 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 // Asyncronous actions - used for api calls
actions: { actions: {
@ -84,33 +93,41 @@ export const store = new Vuex.Store({
$cookies.remove('gdd_u'); $cookies.remove('gdd_u');
router.push('/Login') router.push('/Login')
}, },
ajaxCreate: async (state) => { ajaxCreate: async ({ dispatch, state }) => {
state.ajaxCreateData.session_id = state.session_id console.log('action: ajaxCreate')
console.log(" state.ajaxCreateData => ", state.ajaxCreateData) console.log(state)
axios.post(" http://localhost/transaction-creations/ajaxCreate/", state.ajaxCreateData).then((req) => { const result = await communityAPI.create(
console.log("ajaxCreate => ", req) state.session_id,
}, (error) => { state.ajaxCreateData.email,
console.log(error); state.ajaxCreateData.amount,
}); state.ajaxCreateData.memo,
state.ajaxCreateData.target_date,
)
if( result.success ){
// TODO
} else {
dispatch('logout')
}
}, },
ajaxListTransactions: async (state) => { ajaxListTransactions: async ({commit, dispatch, state}) => {
// console.log("ajaxListTransactions => START") console.log('action: ajaxListTransactions')
axios.get("http://localhost/state-balances/ajaxListTransactions/" + state.session_id).then((req) => { const result = await communityAPI.transactions(state.session_id)
console.log("ajaxListTransactions => ", req) console.log(result)
}, (error) => { if(result.success) {
console.log(error); commit('transactions', result.result.data.transactions)
}); } else {
dispatch('logout')
}
}, },
accountBalance: async ({ state }) => { accountBalance: async ({ commit, dispatch, state }) => {
//console.log(" => START") console.log('action: accountBalance')
state.url = "http://localhost/state-balances/ajaxGetBalance/" + state.session_id const result = await communityAPI.balance(state.session_id)
//console.log(state.url) console.log(result)
axios.get(state.url).then((req) => { if(result.success) {
console.log("accountBalance => ", req.data.balance) commit('user_balance', result.result.data.balance)
state.user.balance = req.data.balance } else {
}, (error) => { dispatch('logout')
console.log(error); }
});
} }
} }
}) })

View File

@ -48,9 +48,9 @@
<hr> <hr>
<h3>User Transactions List</h3> <h3>User Transactions List</h3>
<small>/public/json-example/usertransactions.json</small> <small>this.$store.state.transactions</small>
<p> <p>
{{usertransactions}} {{this.$store.state.transactions}}
</p> </p>
@ -103,7 +103,7 @@
console.log(error); console.log(error);
}); });
}, },
UserTransactions() { /*UserTransactions() {
axios.get("/json-example/usertransactions.json").then((transactions) => { axios.get("/json-example/usertransactions.json").then((transactions) => {
console.log(transactions); console.log(transactions);
this.usertransactions = transactions.data; this.usertransactions = transactions.data;
@ -111,7 +111,7 @@
}, (error) => { }, (error) => {
console.log(error); console.log(error);
}); });
}, },*/
UserParticitions() { UserParticitions() {
axios.get("/json-example/userparticipation.json").then((participation) => { axios.get("/json-example/userparticipation.json").then((participation) => {
console.log(participation); console.log(participation);
@ -135,7 +135,7 @@
}, },
mounted() { mounted() {
this.UserData(); this.UserData();
this.UserTransactions(); //this.UserTransactions();
this.UserParticitions(); this.UserParticitions();
}, },
}; };