UNPKG

@modyo/cli

Version:

Modyo Command Line Interface

157 lines (142 loc) 5.06 kB
/* eslint no-param-reassign: ["error", {"ignorePropertyModificationsFor": ["state"] }] */ import Vuex from 'vuex'; import axios from 'axios'; export default new Vuex.Store({ state: { amount: 0, clientId: 1, currency: '', exchangeRate: 1, fromAccount: {}, isContact: false, isInternational: false, subject: '', toAccount: {}, toCard: {}, toOthers: false, transactionCode: '123123', }, mutations: { SET_AMOUNT(state, data) { state.amount = data; }, SET_CLIENT_ID(state, data) { state.clientId = data; }, SET_CURRENCY(state, data) { state.currency = data; }, SET_EXCHANGE_RATE(state, data) { state.exchangeRate = data; }, SET_FROM_ACCOUNT(state, data) { state.fromAccount = data; }, SET_IS_CONTACT(state, data) { state.isContact = data; }, SET_IS_INTERNATIONAL(state, data) { state.isInternational = data; }, SET_SUBJECT(state, data) { state.subject = data; }, SET_TO_ACCOUNT(state, data) { state.toAccount = data; }, SET_TO_CARD(state, data) { state.toCard = data; }, SET_TO_OTHERS(state, data) { state.toOthers = data; }, SET_TRANSACTION_CODE(state, data) { state.transactionCode = data; }, }, actions: { DO_DATA_INITIALIZATION(context) { return new Promise(((resolve, reject) => { if (!JSON.parse(localStorage.getItem('clientId'))) { const err = new Error('PARAM CLIENT NOT PROVIDED IN Localstorage'); reject(err); context.commit('SET_CLIENT_ID', 1); } else { context.commit('SET_CLIENT_ID', JSON.parse(localStorage.getItem('clientId'))); } context.dispatch('GET_SUBJECT') .then(() => { context.commit('SET_FROM_ACCOUNT', JSON.parse(localStorage.getItem('fromAccount'))); context.commit('SET_AMOUNT', JSON.parse(localStorage.getItem('amount'))); context.commit('SET_TRANSACTION_CODE', JSON.parse(localStorage.getItem('code'))); if (context.state.subject === 'transfer') { context.commit('SET_TO_ACCOUNT', JSON.parse(localStorage.getItem('toAccount'))); context.commit('SET_TO_OTHERS', JSON.parse(localStorage.getItem('toOthers'))); context.commit('SET_IS_CONTACT', JSON.parse(localStorage.getItem('isContact'))); } else if (context.state.subject === 'creditCardPayment') { context.commit('SET_TO_CARD', JSON.parse(localStorage.getItem('toCard'))); context.commit('SET_CURRENCY', JSON.parse(localStorage.getItem('currency'))); context.commit('SET_EXCHANGE_RATE', JSON.parse(localStorage.getItem('exchangeRate'))); context.commit('SET_IS_INTERNATIONAL', JSON.parse(localStorage.getItem('isInternational'))); } resolve(context.state); }) .catch((error) => { // TODO: Remove test data context.commit( 'SET_FROM_ACCOUNT', { accountType: 'Cuenta Vista', accountNumber: '123123123', availableBalance: 1000000, }, ); context.commit('SET_AMOUNT', 5000); context.commit('SET_TRANSACTION_CODE', '123123'); if (context.state.subject === 'transfer') { context.commit( 'SET_TO_ACCOUNT', { fullname: 'Test Name', payeeId: '123123123', accountNumber: '321321321', accountType: 'Cuenta Vista', availableBalance: 2000000, bank: { name: 'Dynamic Bank', }, }, ); context.commit('SET_TO_OTHERS', false); context.commit('SET_IS_CONTACT', false); } else if (context.state.subject === 'creditCardPayment') { context.commit('SET_TO_CARD', { cardType: 'Visa', cardNumber: '5105105105105100' }); context.commit('SET_CURRENCY', 'usd'); context.commit('SET_EXCHANGE_RATE', 600); context.commit('SET_IS_INTERNATIONAL', false); } return reject(error); }); })); }, GET_CLIENT(context) { return axios.get(`https://api-bank.herokuapp.com/api/v1/clients/${context.state.clientId}`) .then((client) => { context.commit('SET_CLIENT', client.data); return client; }) .catch(err => err); }, GET_SUBJECT(context) { return new Promise(((resolve, reject) => { if (localStorage.getItem('subject')) { context.commit('SET_SUBJECT', localStorage.getItem('subject')); resolve(context.state.subject); } else { const error = new Error('SUBJECT NOT LOCATED IN localStorage'); reject(error); } })); }, }, });