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