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';
// 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

View File

@ -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')
}
}
}
})

View File

@ -48,9 +48,9 @@
<hr>
<h3>User Transactions List</h3>
<small>/public/json-example/usertransactions.json</small>
<small>this.$store.state.transactions</small>
<p>
{{usertransactions}}
{{this.$store.state.transactions}}
</p>
@ -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();
},
};