UNPKG

@modyo/cli

Version:

Modyo Command Line Interface

169 lines (164 loc) 5.19 kB
/* eslint no-param-reassign: ["error", {"ignorePropertyModificationsFor": ["state"] }] */ import Vuex from 'vuex'; import axios from 'axios'; export default new Vuex.Store({ state: { banks: [], contacts: [], editingContact: {}, editingContactMode: false, fromDate: dateFns.subDays(new Date(), 30), isLoadingContacts: false, isLoadingTransactions: false, movementsActiveTab: 'last', paramClientId: 1, selectedContact: null, selectedTransaction: null, showContactPanel: false, showDatePicker: false, showSearch: false, toDate: new Date(), transactions: [], }, mutations: { SET_IS_LOADING_CONTACTS(state, data) { state.isLoadingContacts = data; }, SET_CONTACTS(state, data) { state.contacts = data; }, SET_SELECTED_CONTACT(state, data) { state.selectedContact = data; }, SET_FROM_DATE(state, data) { state.fromDate = data; }, SET_MOVEMENTS_ACTIVE_TAB(state, data) { state.movementsActiveTab = data; }, SET_SHOW_SEARCH(state, data) { state.showSearch = data; }, SET_SHOW_DATE_PICKER(state, data) { state.showDatePicker = data; }, SET_IS_LOADING_TRANSACTIONS(state, data) { state.isLoadingTransactions = data; }, SET_TRANSACTIONS(state, data) { state.transactions = data; }, SET_TO_DATE(state, data) { state.toDate = data; }, SET_SELECTED_TRANSACTION(state, data) { state.selectedTransaction = data; }, SET_EDITING_CONTACT(state, data) { state.editingContact = data; }, SET_EDITING_CONTACT_MODE(state, data) { state.editingContactMode = data; }, SET_SHOW_CONTACT_PANEL(state, data) { state.showContactPanel = data; }, SET_BANKS(state, data) { state.banks = data; }, REMOVE_CONTACT(state, contact) { state.contacts.splice(state.contacts.indexOf(contact), 1); }, }, actions: { DO_DATA_INITIALIZATION(context) { return new Promise(((resolve, reject) => { context.dispatch('GET_CONTACTS') .then(() => { context.dispatch('GET_TRANSACIONS') .then((transactions) => { resolve(transactions); }) .catch((err) => { reject(err); }); }) .catch((err) => { reject(err); }); })); }, GET_CONTACTS(context) { context.commit('SET_IS_LOADING_CONTACTS', true); context.commit('SET_CONTACTS', []); return axios.get(`https://api-bank.herokuapp.com/api/v1/clients/${context.state.paramClientId}/payees`, { params: { 'filter[include]': 'bank', 'filter[order]': 'fullname', }, }) .then((contacts) => { context.commit('SET_CONTACTS', contacts.data); context.commit('SET_IS_LOADING_CONTACTS', false); return contacts.data; }) .catch(err => err); }, GET_TRANSACIONS(context) { context.commit('SET_IS_LOADING_TRANSACTIONS', true); context.commit('SET_TRANSACTIONS', []); return axios.get(`https://api-bank.herokuapp.com/api/v1/clients/${context.state.paramClientId}/transfers/`, { params: { from: context.state.fromDate, to: context.state.toDate, }, }) .then((transactions) => { context.commit('SET_TRANSACTIONS', transactions.data); context.commit('SET_IS_LOADING_TRANSACTIONS', false); return transactions; }, err => err); }, GET_SCHEDULED_TRANSFERS(context) { context.commit('SET_IS_LOADING_TRANSACTIONS', true); context.commit('SET_TRANSACTIONS', []); return axios .get(`https://api-bank.herokuapp.com/api/v1/clients/${context.state.paramClientId}/scheduledTransactions/`) .then((transactions) => { context.commit('SET_TRANSACTIONS', transactions.data); context.commit('SET_IS_LOADING_TRANSACTIONS', false); return transactions; }, err => err); }, GET_BANKS(context) { return axios.get('https://api-bank.herokuapp.com/api/v1/banks', { params: { 'filter[order]': 'name ASC', }, }) .then((banks) => { context.state.banks = banks.data; return banks; }, err => err); }, ADD_CONTACT(context, contact) { return axios.post(`https://api-bank.herokuapp.com/api/v1/clients/${context.state.paramClientId}/payees`, contact) .then(() => contact) .catch(error => error); }, EDIT_CONTACT(context, contact) { return axios.patch(`https://api-bank.herokuapp.com/api/v1/payees/${contact.id}`, contact) .then(() => contact) .catch(error => error); }, REMOVE_CONTACT(context, contact) { return axios .delete(`https://api-bank.herokuapp.com/api/v1/clients/${context.state.paramClientId}/payees/${contact.id}`) .then(() => { context.commit('REMOVE_CONTACT', contact); return context.state.contacts; }) .catch(error => error); }, }, });