Skip to content
Snippets Groups Projects
Verified Commit 4dc0e501 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Use mutateMixin to update participations after saving in AbsenceCreationDialog

parent 192b0ffb
No related branches found
No related tags found
1 merge request!356Add dialog for creation of long-term absences
...@@ -78,6 +78,9 @@ import CreateButton from "aleksis.core/components/generic/buttons/CreateButton.v ...@@ -78,6 +78,9 @@ import CreateButton from "aleksis.core/components/generic/buttons/CreateButton.v
import CancelButton from "aleksis.core/components/generic/buttons/CancelButton.vue"; import CancelButton from "aleksis.core/components/generic/buttons/CancelButton.vue";
import SaveButton from "aleksis.core/components/generic/buttons/SaveButton.vue"; import SaveButton from "aleksis.core/components/generic/buttons/SaveButton.vue";
import loadingMixin from "aleksis.core/mixins/loadingMixin.js"; import loadingMixin from "aleksis.core/mixins/loadingMixin.js";
import permissionsMixin from "aleksis.core/mixins/permissions.js";
import mutateMixin from "aleksis.core/mixins/mutateMixin.js";
import { createAbsencesForPersons } from "./absenceCreation.graphql"; import { createAbsencesForPersons } from "./absenceCreation.graphql";
export default { export default {
...@@ -90,7 +93,7 @@ export default { ...@@ -90,7 +93,7 @@ export default {
CancelButton, CancelButton,
SaveButton, SaveButton,
}, },
mixins: [loadingMixin], mixins: [loadingMixin, mutateMixin, permissionsMixin],
data() { data() {
return { return {
popup: false, popup: false,
...@@ -117,29 +120,37 @@ export default { ...@@ -117,29 +120,37 @@ export default {
}, },
confirm() { confirm() {
this.handleLoading(true); this.handleLoading(true);
this.$apollo this.mutate(
.mutate({ createAbsencesForPersons,
mutation: createAbsencesForPersons, {
variables: { persons: this.persons.map((p) => p.id),
persons: this.persons.map((p) => p.id), start: this.startDate,
start: this.startDate, end: this.endDate,
end: this.endDate, comment: this.comment,
comment: this.comment, reason: this.absenceReason,
reason: this.absenceReason, },
}, (storedDocumentations, incomingStatuses) => {
}) const documentation = storedDocumentations.find(
.then(() => { (doc) => doc.id === this.documentation.id,
this.clearForm(); );
this.cancel();
this.$toastSuccess("alsijil.coursebook.absences.success"); incomingStatuses.forEach((newStatus) => {
}) const participationStatus = documentation.participations.find(
.catch((error) => { (part) => part.id === newStatus.id,
this.popup = false; );
this.handleError(error); participationStatus.absenceReason = newStatus.absenceReason;
}) participationStatus.isOptimistic = newStatus.isOptimistic;
.finally(() => { });
this.handleLoading(false);
}); return storedDocumentations;
},
);
this.$once("save", this.handleSave);
},
handleSave() {
this.clearForm();
this.cancel();
this.$toastSuccess("alsijil.coursebook.absences.success");
}, },
}, },
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment