@modyo/cli
Version:
Modyo Command Line Interface
169 lines (164 loc) • 5.19 kB
JavaScript
/* 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);
},
},
});