| import api, { getResponseCount } from '@/store/api'; |
| import i18n from '@/i18n'; |
| |
| const SnmpAlertsStore = { |
| namespaced: true, |
| state: { |
| allSnmpDetails: [], |
| }, |
| getters: { |
| allSnmpDetails(state) { |
| return state.allSnmpDetails; |
| }, |
| }, |
| mutations: { |
| setSnmpDetails(state, allSnmpDetails) { |
| state.allSnmpDetails = allSnmpDetails; |
| }, |
| }, |
| actions: { |
| async getSnmpAlertUrl() { |
| return await api |
| .get('/redfish/v1/') |
| .then((response) => api.get(response.data.EventService['@odata.id'])) |
| .then((response) => api.get(response.data.Subscriptions['@odata.id'])) |
| .then((response) => response.data['@odata.id']) |
| .catch((error) => console.log('Error', error)); |
| }, |
| async getSnmpDetails({ commit, dispatch }) { |
| const snmpAlertUrl = await dispatch('getSnmpAlertUrl'); |
| return await api |
| .get(snmpAlertUrl) |
| .then((response) => |
| response.data.Members.map((user) => user['@odata.id']), |
| ) |
| .then((userIds) => api.all(userIds.map((user) => api.get(user)))) |
| .then((users) => { |
| const snmpDetailsData = users.map((user) => user.data); |
| commit('setSnmpDetails', snmpDetailsData); |
| }) |
| .catch((error) => { |
| console.log(error); |
| const message = i18n.t('pageSnmpAlerts.toast.errorLoadSnmpDetails'); |
| throw new Error(message); |
| }); |
| }, |
| async deleteDestination({ dispatch }, id) { |
| const snmpAlertUrl = await dispatch('getSnmpAlertUrl'); |
| return await api |
| .delete(`${snmpAlertUrl}/${id}`) |
| .then(() => dispatch('getSnmpDetails')) |
| .then(() => |
| i18n.t('pageSnmpAlerts.toast.successDeleteDestination', { |
| id, |
| }), |
| ) |
| .catch((error) => { |
| console.log(error); |
| const message = i18n.t( |
| 'pageSnmpAlerts.toast.errorDeleteDestination', |
| { |
| id, |
| }, |
| ); |
| throw new Error(message); |
| }); |
| }, |
| async deleteMultipleDestinations({ dispatch }, destination) { |
| const snmpAlertUrl = await dispatch('getSnmpAlertUrl'); |
| const promises = destination.map(({ id }) => { |
| return api.delete(`${snmpAlertUrl}/${id}`).catch((error) => { |
| console.log(error); |
| return error; |
| }); |
| }); |
| return await api |
| .all(promises) |
| .then((response) => { |
| dispatch('getSnmpDetails'); |
| return response; |
| }) |
| .then( |
| api.spread((...responses) => { |
| const { successCount, errorCount } = getResponseCount(responses); |
| let toastMessages = []; |
| |
| if (successCount) { |
| const message = i18n.tc( |
| 'pageSnmpAlerts.toast.successBatchDelete', |
| successCount, |
| ); |
| toastMessages.push({ type: 'success', message }); |
| } |
| |
| if (errorCount) { |
| const message = i18n.tc( |
| 'pageSnmpAlerts.toast.errorBatchDelete', |
| errorCount, |
| ); |
| toastMessages.push({ type: 'error', message }); |
| } |
| |
| return toastMessages; |
| }), |
| ); |
| }, |
| async addDestination({ dispatch }, { data }) { |
| const snmpAlertUrl = await dispatch('getSnmpAlertUrl'); |
| return await api |
| .post(snmpAlertUrl, data) |
| .then(() => dispatch('getSnmpDetails')) |
| .then(() => i18n.t('pageSnmpAlerts.toast.successAddDestination')) |
| .catch((error) => { |
| console.log(error); |
| const message = i18n.t('pageSnmpAlerts.toast.errorAddDestination'); |
| throw new Error(message); |
| }); |
| }, |
| }, |
| }; |
| |
| export default SnmpAlertsStore; |