import { ActionTree, MutationTree, GetterTree } from "vuex"; import { RootState } from "../../MCA-AYIM/store/index"; import { MCAInfo } from "../../Interfaces/mca"; import { StaffGuestRequest } from "../../Interfaces/guestRequests"; import { CategoryInfo } from "../../Interfaces/category"; export interface UpdateRequestData { id: number; status: number; } export interface StaffState { mca: MCAInfo | null; categories: CategoryInfo[]; requests: StaffGuestRequest[]; } export const state = (): StaffState => ({ mca: null, categories: [], requests: [], }); export const mutations: MutationTree<StaffState> = { setMca (state, mca) { state.mca = mca; }, setCategories (state, categories) { state.categories = categories || []; }, setRequests (state, requests) { state.requests = requests || []; }, updateRequest (state, payload: UpdateRequestData) { const i = state.requests.findIndex(r => r.ID === payload.id); if (i !== -1) state.requests[i].status = payload.status; }, }; export const getters: GetterTree<StaffState, RootState> = { }; export const actions: ActionTree<StaffState, RootState> = { async setMca ({ commit }, year: number) { const { data } = await this.$axios.get(`/api/staff/${year}`); if (!data.error) { commit("setMca", data); } }, async setCategories ({ commit }, year: number) { const { data } = await this.$axios.get(`/api/staff/categories/${year}`); if (!data.error) { commit("setCategories", data); } }, async setRequests ({ commit }, year: number) { const { data } = await this.$axios.get(`/api/staff/requests/${year}`); if (!data.error) { commit("setRequests", data); } }, async setInitialData ({ dispatch }, year: number) { await Promise.all([ dispatch("setMca", year), dispatch("setCategories", year), dispatch("setRequests", year), ]); }, async updateRequest ({ commit }, payload: UpdateRequestData) { const { data } = await this.$axios.post(`/api/staff/requests/${payload.id}/update`, { status: payload.status, }); if (!data.error) { commit("updateRequest", payload); } }, };