From 1654dd1116d6341923510e02abedf3dd8a687679 Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Mon, 17 Oct 2022 22:52:28 +0200 Subject: admin: edit warnings --- pages/admin/reports.vue | 110 +++++++++++++++++++++++++++++++++++++++++++----- store/warnings.js | 24 +++++++++++ 2 files changed, 124 insertions(+), 10 deletions(-) diff --git a/pages/admin/reports.vue b/pages/admin/reports.vue index 65825bb..4668222 100644 --- a/pages/admin/reports.vue +++ b/pages/admin/reports.vue @@ -1,6 +1,65 @@ @@ -76,6 +136,8 @@ export default { pages: 0, notResolved: false, boxDeleteReport: 0, + boxEditWarning: 0, + form: {}, }; }, components: { @@ -83,16 +145,6 @@ export default { pagination: Pagination, "v-table": VTable, }, - methods: { - filter() { - if (this.notResolved) { - window.location.href = - "/admin/reports?page=" + this.page + "¬_resolved"; - } else { - window.location.href = "/admin/reports?page=" + this.page; - } - }, - }, async mounted() { await this.$store.dispatch("auth/findMe"); @@ -117,6 +169,44 @@ export default { } }, methods: { + openEditModal(id) { + this.$store.dispatch("warnings/findWarning", id).then((response) => { + this.boxEditWarning = id; + this.form = response.data; + }); + }, + filter() { + if (this.notResolved) { + window.location.href = + "/admin/reports?page=" + this.page + "¬_resolved"; + } else { + window.location.href = "/admin/reports?page=" + this.page; + } + }, + saveWarning() { + this.$store + .dispatch("warnings/editWarning", { ...this.form }) + .then((response) => { + if (response.status == 200) { + this.$toast.success("Report saved"); + if (this.notResolved) { + this.$store + .dispatch("warnings/filterWarnings", { page: this.page }) + .then(() => { + this.pages = Math.ceil(this.count / 20); + }); + } else { + this.$store + .dispatch("warnings/getWarnings", this.page) + .then(() => { + this.pages = Math.ceil(this.count / 20); + }); + } + } else { + this.$toast.error(response.data); + } + }); + }, openModal(id) { this.boxDeleteReport = id; }, diff --git a/store/warnings.js b/store/warnings.js index d2983bd..30336d9 100644 --- a/store/warnings.js +++ b/store/warnings.js @@ -45,6 +45,30 @@ export const actions = { commit("loadingStatus", false, { root: true }); }, + // Find a warning by its id + async findWarning({ commit, rootGetters }, id) { + commit("loadingStatus", true, { root: true }); + let res = { status: 0, data: null }; + let api = this.$config.api; + + await fetch(`${api}/v1/warnings/${id}`, { + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${rootGetters["auth/accessToken"]}`, + }, + }) + .then(async (response) => { + res.data = await response.json(); + res.status = response.status; + }) + .catch((e) => { + res.status = e.status; + }); + + commit("loadingStatus", false, { root: true }); + + return res; + }, // Filter warnings async filterWarnings({ commit, rootGetters }, payload) { commit("loadingStatus", true, { root: true }); -- cgit v1.2.3-18-g5258