1import api from '@/store/api';
2import i18n from '@/i18n';
3
4const PostCodeLogsStore = {
5  namespaced: true,
6  state: {
7    allPostCodes: [],
8  },
9  getters: {
10    allPostCodes: (state) => state.allPostCodes,
11  },
12  mutations: {
13    setAllPostCodes: (state, allPostCodes) =>
14      (state.allPostCodes = allPostCodes),
15  },
16  actions: {
17    async getPostCodesLogData({ commit }) {
18      return await api
19        .get(
20          `${await this.dispatch('global/getSystemPath')}/LogServices/PostCodes/Entries`,
21        )
22        .then(({ data: { Members = [] } = {} }) => {
23          const postCodeLogs = Members.map((log) => {
24            const { Created, MessageArgs, AdditionalDataURI } = log;
25            return {
26              date: new Date(Created),
27              bootCount: MessageArgs[0],
28              timeStampOffset: MessageArgs[1],
29              postCode: MessageArgs[2],
30              uri: AdditionalDataURI,
31            };
32          });
33          commit('setAllPostCodes', postCodeLogs);
34        })
35        .catch((error) => {
36          console.log('POST Codes Log Data:', error);
37        });
38    },
39    async deleteAllPostCodeLogs({ dispatch }, data) {
40      return await api
41        .post(
42          `${await this.dispatch('global/getSystemPath')}/LogServices/PostCodes/Actions/LogService.ClearLog`,
43        )
44        .then(() => dispatch('getPostCodesLogData'))
45        .then(() =>
46          i18n.tc('pagePostCodeLogs.toast.successDelete', data.length),
47        )
48        .catch((error) => {
49          console.log(error);
50          throw new Error(
51            i18n.tc('pagePostCodeLogs.toast.errorDelete', data.length),
52          );
53        });
54    },
55  },
56};
57
58export default PostCodeLogsStore;
59