UNPKG

@modyo/cli

Version:

Modyo Command Line Interface

175 lines (152 loc) 4.89 kB
/* eslint no-param-reassign: ["error", {"ignorePropertyModificationsFor": ["state"] }] */ import Vuex from 'vuex'; import axios from 'axios'; export default new Vuex.Store({ state: { accounts: [], activeAccount: null, activeTab: 'cc', filterBy: 'all', fromDate: dateFns.subDays(new Date(), 30), isLoadingAccounts: true, isLoadingTransactions: true, movementsActiveTab: 'last', paramAccountId: 1, paramClientId: 1, showDatePicker: false, showFilters: false, showMovements: false, showSearch: false, toDate: new Date(), transactions: [], }, mutations: { SET_ACCOUNTS(state, data) { state.accounts = data; }, SET_ACTIVE_ACCOUNT(state, data) { state.activeAccount = data; }, SET_ACTIVE_TAB(state, data) { state.activeTab = data; }, SET_FROM_DATE(state, data) { state.fromDate = data; }, SET_FILTER_BY(state, data) { state.filterBy = data; }, SET_IS_LOADING_ACCOUNTS(state, data) { state.isLoadingAccounts = data; }, SET_IS_LOADING_TRANSACTIONS(state, data) { state.isLoadingTransactions = data; }, SET_MOVEMENTS_ACTIVE_TAB(state, data) { state.movementsActiveTab = data; }, SET_PARAM_CLIENT_ID(state, data) { state.paramClientId = data; }, SET_PARAM_ACCOUNT_ID(state, data) { state.paramAccountId = data; }, SET_SHOW_MOVEMENTS(state, data) { state.showMovements = data; }, SET_SHOW_DATEPICKER(state, data) { state.showDatePicker = data; }, SET_SHOW_FILTERS(state, data) { state.showFilters = data; }, SET_SHOW_SEARCH(state, data) { state.showSearch = data; }, SET_TO_DATE(state, data) { state.toDate = data; }, SET_TRANSACTIONS(state, data) { state.transactions = data; }, }, actions: { DO_DATA_INITIALIZATION(context) { return new Promise(((resolve, reject) => { context.dispatch('GET_ACCOUNTS') .then(() => { context.commit( 'SET_ACTIVE_ACCOUNT', context.state.accounts.find(account => account.id === context.state.paramAccountId).id, ); context.dispatch('GET_MOVEMENTS'); resolve(); }) .catch(() => reject()); })); }, GET_ACCOUNTS(context) { context.commit('SET_MOVEMENTS_ACTIVE_TAB', 'last'); context.commit('SET_ACCOUNTS', []); return axios.get(`https://api-bank.herokuapp.com/api/v1/clients/${context.state.paramClientId}/accounts`, { params: { 'filter[order]': 'accountType', }, }) .then((response) => { context.commit('SET_ACCOUNTS', response.data); context.commit('SET_IS_LOADING_ACCOUNTS', false); }) .catch(err => err); }, GET_RELATED_ACCOUNTS(context) { context.commit('SET_FILTER_BY', 'all'); context.commit('SET_MOVEMENTS_ACTIVE_TAB', 'last'); context.commit('SET_ACCOUNTS', []); return axios.get(`https://api-bank.herokuapp.com/api/v1/clients/${context.state.paramClientId}/accounts`, { params: { 'filter[include]': 'relatedAccount', }, }) .then((response) => { const accounts = response.data.filter(account => account.relatedAccount); context.commit('SET_ACCOUNTS', accounts); context.commit('SET_ACTIVE_ACCOUNT', accounts[0].id); context.commit('SET_IS_LOADING_ACCOUNTS', false); context.dispatch('GET_MOVEMENTS') .then(movements => movements) .catch(err => err); }) .catch(err => err); }, GET_MOVEMENTS(context) { context.commit('SET_FILTER_BY', 'all'); context.commit('SET_TRANSACTIONS', []); context.commit('SET_IS_LOADING_TRANSACTIONS', true); return axios.get(`https://api-bank.herokuapp.com/api/v1/accounts/${context.state.activeAccount}/movements/`, { params: { from: context.state.fromDate, to: context.state.toDate, }, }) .then((response) => { context.commit('SET_TRANSACTIONS', response.data); context.commit('SET_IS_LOADING_TRANSACTIONS', false); return response; }) .catch(err => err); }, GET_STATEMENTS(context) { context.commit('SET_FILTER_BY', 'all'); context.commit('SET_TRANSACTIONS', []); context.commit('SET_IS_LOADING_TRANSACTIONS', true); return axios.get(`https://api-bank.herokuapp.com/api/v1/accounts/${context.state.activeAccount}/statements/`) .then((response) => { context.commit('SET_TRANSACTIONS', response.data); context.commit('SET_IS_LOADING_TRANSACTIONS', false); return response; }) .catch(err => err); }, }, });