diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsDialog.vue b/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsDialog.vue index 99b7a40c6043231e861fc76fb7d0180c3d3aed61..38668b1b506e426e8467387a48a626c09e56f403 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsDialog.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsDialog.vue @@ -75,58 +75,6 @@ export default { }, }, methods: { - sendToServer(participations, field, value) { - let fieldValue; - - if (field === "absenceReason") { - fieldValue = { - absenceReason: value === "present" ? null : value, - }; - } else if (field === "tardiness") { - fieldValue = { - tardiness: value, - }; - } else { - console.error(`Wrong field '${field}' for sendToServer`); - return; - } - - this.markAsAbsentDay.showAlert = false; - this.markAsAbsentDay.participationIDs = []; - - this.mutate( - updateParticipationStatuses, - { - input: participations.map((participation) => ({ - id: participation.id, - ...fieldValue, - })), - }, - (storedDocumentations, incomingStatuses) => { - const documentation = storedDocumentations.find( - (doc) => doc.id === this.documentation.id, - ); - - incomingStatuses.forEach((newStatus) => { - const participationStatus = documentation.participations.find( - (part) => part.id === newStatus.id, - ); - participationStatus.absenceReason = newStatus.absenceReason; - participationStatus.tardiness = newStatus.tardiness; - participationStatus.isOptimistic = newStatus.isOptimistic; - }); - - this.markAsAbsentDay.reason = incomingStatuses[0].absenceReason?.name; - this.markAsAbsentDay.num = incomingStatuses.length; - - return storedDocumentations; - }, - ); - - if (field === "absenceReason" && value !== "present") { - this.$once("save", this.activateFullDayDialog); - } - }, handleMultipleAction(field, id) { this.loadSelected = true; this.sendToServer(this.selected, field, id); @@ -152,6 +100,19 @@ export default { this.markAsAbsentDay.loading = false; this.markAsAbsentDay.showAlert = true; }, + beforeSendToServer() { + this.markAsAbsentDay.showAlert = false; + this.markAsAbsentDay.participationIDs = []; + }, + duringUpdateSendToServer(_participations, _field, _value, incomingStatuses) { + this.markAsAbsentDay.reason = incomingStatuses[0].absenceReason?.name; + this.markAsAbsentDay.num = incomingStatuses.length; + }, + afterSendToServer(_participations, field, value) { + if (field === "absenceReason" && value !== "present") { + this.$once("save", this.activateFullDayDialog); + } + }, markAsAbsentDayClick() { this.markAsAbsentDay.loading = true;