1import api from '@/store/api';
2import i18n from '@/i18n';
3
4const AssemblyStore = {
5  namespaced: true,
6  state: {
7    assemblies: null,
8  },
9  getters: {
10    assemblies: (state) => state.assemblies,
11  },
12  mutations: {
13    setAssemblyInfo: (state, data) => {
14      state.assemblies = data.map((assembly) => {
15        const {
16          MemberId,
17          PartNumber,
18          SerialNumber,
19          SparePartNumber,
20          Model,
21          Name,
22          Location,
23          LocationIndicatorActive,
24        } = assembly;
25        return {
26          id: MemberId,
27          partNumber: PartNumber,
28          serialNumber: SerialNumber,
29          sparePartNumber: SparePartNumber,
30          model: Model,
31          name: Name,
32          locationNumber: Location?.PartLocation?.ServiceLabel,
33          identifyLed: LocationIndicatorActive,
34          uri: assembly['@odata.id'],
35        };
36      });
37    },
38  },
39  actions: {
40    async getAssemblyInfo({ commit }) {
41      return await api
42        .get('/redfish/v1/Chassis/chassis/Assembly')
43        .then(({ data }) => commit('setAssemblyInfo', data?.Assemblies))
44        .catch((error) => console.log(error));
45    },
46    async updateIdentifyLedValue({ dispatch }, led) {
47      const uri = led.uri;
48      const updatedIdentifyLedValue = {
49        Assemblies: [
50          {
51            MemberId: led.memberId,
52            LocationIndicatorActive: led.identifyLed,
53          },
54        ],
55      };
56
57      return await api.patch(uri, updatedIdentifyLedValue).catch((error) => {
58        dispatch('getAssemblyInfo');
59        console.log('error', error);
60        if (led.identifyLed) {
61          throw new Error(i18n.t('pageInventory.toast.errorEnableIdentifyLed'));
62        } else {
63          throw new Error(
64            i18n.t('pageInventory.toast.errorDisableIdentifyLed'),
65          );
66        }
67      });
68    },
69  },
70};
71
72export default AssemblyStore;
73