blob: 0871c8d855b0ce010f5233e36299d6008ea98e2c [file] [log] [blame]
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;