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
58        .patch(uri, updatedIdentifyLedValue)
59        .then(() => {
60          if (led.identifyLed) {
61            return i18n.t('pageInventory.toast.successEnableIdentifyLed');
62          } else {
63            return i18n.t('pageInventory.toast.successDisableIdentifyLed');
64          }
65        })
66        .catch((error) => {
67          dispatch('getAssemblyInfo');
68          console.log('error', error);
69          if (led.identifyLed) {
70            throw new Error(
71              i18n.t('pageInventory.toast.errorEnableIdentifyLed'),
72            );
73          } else {
74            throw new Error(
75              i18n.t('pageInventory.toast.errorDisableIdentifyLed'),
76            );
77          }
78        });
79    },
80  },
81};
82
83export default AssemblyStore;
84