import api from '@/store/api'; import i18n from '@/i18n'; const AssemblyStore = { namespaced: true, state: { assemblies: null, }, getters: { assemblies: (state) => state.assemblies, }, mutations: { setAssemblyInfo: (state, data) => { state.assemblies = data.map((assembly) => { const { MemberId, PartNumber, SerialNumber, SparePartNumber, Model, Name, Location, LocationIndicatorActive, } = assembly; return { id: MemberId, partNumber: PartNumber, serialNumber: SerialNumber, sparePartNumber: SparePartNumber, model: Model, name: Name, locationNumber: Location?.PartLocation?.ServiceLabel, identifyLed: LocationIndicatorActive, uri: assembly['@odata.id'], }; }); }, }, actions: { async getAssemblyInfo({ commit }) { return await api .get('/redfish/v1/Chassis/chassis/Assembly') .then(({ data }) => commit('setAssemblyInfo', data?.Assemblies)) .catch((error) => console.log(error)); }, async updateIdentifyLedValue({ dispatch }, led) { const uri = led.uri; const updatedIdentifyLedValue = { Assemblies: [ { MemberId: led.memberId, LocationIndicatorActive: led.identifyLed, }, ], }; return await api .patch(uri, updatedIdentifyLedValue) .then(() => { if (led.identifyLed) { return i18n.global.t( 'pageInventory.toast.successEnableIdentifyLed', ); } else { return i18n.global.t( 'pageInventory.toast.successDisableIdentifyLed', ); } }) .catch((error) => { dispatch('getAssemblyInfo'); console.log('error', error); if (led.identifyLed) { throw new Error( i18n.global.t('pageInventory.toast.errorEnableIdentifyLed'), ); } else { throw new Error( i18n.global.t('pageInventory.toast.errorDisableIdentifyLed'), ); } }); }, }, }; export default AssemblyStore;