Files
crater/resources/assets/js/store/modules/expense/actions.js
Mohit Panjwani 89ee58590c build version 400
2020-12-02 17:54:08 +05:30

136 lines
3.6 KiB
JavaScript

import * as types from './mutation-types'
export const fetchExpenses = ({ commit, dispatch, state }, params) => {
return new Promise((resolve, reject) => {
window.axios
.get(`/api/v1/expenses`, { params })
.then((response) => {
commit(types.SET_EXPENSES, response.data.expenses.data)
commit(types.SET_TOTAL_EXPENSES, response.data.expenseTotalCount)
resolve(response)
})
.catch((err) => {
reject(err)
})
})
}
export const fetchExpense = ({ commit, dispatch, state }, id) => {
return new Promise((resolve, reject) => {
window.axios
.get(`/api/v1/expenses/${id}`)
.then((response) => {
resolve(response)
})
.catch((err) => {
reject(err)
})
})
}
export const getExpenseReceipt = ({ commit, dispatch, state }, id) => {
return new Promise((resolve, reject) => {
window.axios
.get(`/api/v1/expenses/${id}/show/receipt`)
.then((response) => {
resolve(response)
})
.catch((err) => {
reject(err)
})
})
}
export const uploadExpenseReceipt = ({ commit, dispatch, state }, data) => {
return new Promise((resolve, reject) => {
window.axios
.post(`/api/v1/expenses/${data.id}/upload/receipts`, data)
.then((response) => {
resolve(response)
})
.catch((err) => {
reject(err)
})
})
}
export const addExpense = ({ commit, dispatch, state }, data) => {
return new Promise((resolve, reject) => {
window.axios
.post('/api/v1/expenses', data)
.then((response) => {
commit(types.ADD_EXPENSE, response.data)
resolve(response)
})
.catch((err) => {
reject(err)
})
})
}
export const updateExpense = ({ commit, dispatch, state }, data) => {
return new Promise((resolve, reject) => {
window.axios
.post(`/api/v1/expenses/${data.id}`, data.editData)
.then((response) => {
commit(types.UPDATE_EXPENSE, response.data)
resolve(response)
})
.catch((err) => {
reject(err)
})
})
}
export const deleteExpense = ({ commit, dispatch, state }, id) => {
return new Promise((resolve, reject) => {
window.axios
.post(`/api/v1/expenses/delete`, id)
.then((response) => {
commit(types.DELETE_EXPENSE, id)
resolve(response)
})
.catch((err) => {
reject(err)
})
})
}
export const deleteMultipleExpenses = ({ commit, dispatch, state }, id) => {
return new Promise((resolve, reject) => {
window.axios
.post(`/api/v1/expenses/delete`, { ids: state.selectedExpenses })
.then((response) => {
commit(types.DELETE_MULTIPLE_EXPENSES, state.selectedExpenses)
resolve(response)
})
.catch((err) => {
reject(err)
})
})
}
export const setSelectAllState = ({ commit, dispatch, state }, data) => {
commit(types.SET_SELECT_ALL_STATE, data)
}
export const selectAllExpenses = ({ commit, dispatch, state }) => {
if (state.selectedExpenses.length === state.expenses.length) {
commit(types.SET_SELECTED_EXPENSES, [])
commit(types.SET_SELECT_ALL_STATE, false)
} else {
let allExpenseIds = state.expenses.map((cust) => cust.id)
commit(types.SET_SELECTED_EXPENSES, allExpenseIds)
commit(types.SET_SELECT_ALL_STATE, true)
}
}
export const selectExpense = ({ commit, dispatch, state }, data) => {
commit(types.SET_SELECTED_EXPENSES, data)
if (state.selectedExpenses.length === state.expenses.length) {
commit(types.SET_SELECT_ALL_STATE, true)
} else {
commit(types.SET_SELECT_ALL_STATE, false)
}
}