diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsDialog.vue b/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsDialog.vue index 798acb62384affe21627c39a23a14501181a7913..aa3bdb39179afb4a43e2f3df99fdc70330932b41 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsDialog.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/absences/ManageStudentsDialog.vue @@ -44,29 +44,29 @@ export default { }, }, methods: { - sendToServer(participation, field, value) { + sendToServer(participations, field, value) { if (field !== "absenceReason") return; this.mutate( updateParticipationStatuses, { - input: [ - { - id: participation.id, - absenceReason: value === "present" ? null : value, - }, - ], + input: participations.map((participation) => ({ + id: participation.id, + absenceReason: value === "present" ? null : value, + })), }, (storedDocumentations, incomingStatuses) => { - const newStatus = incomingStatuses[0]; const documentation = storedDocumentations.find( - (doc) => doc.id === newStatus.relatedDocumentation.id, + (doc) => doc.id === this.documentation.id, ); - const participationStatus = documentation.participations.find( - (part) => part.id === newStatus.id, - ); - participationStatus.absenceReason = newStatus.absenceReason; - participationStatus.isOptimistic = newStatus.isOptimistic; + + incomingStatuses.forEach((newStatus) => { + const participationStatus = documentation.participations.find( + (part) => part.id === newStatus.id, + ); + participationStatus.absenceReason = newStatus.absenceReason; + participationStatus.isOptimistic = newStatus.isOptimistic; + }); return storedDocumentations; }, @@ -177,7 +177,7 @@ export default { empty-value="present" :loadSelectedChip="loading" :value="item.absenceReason?.id || 'present'" - @input="sendToServer(item, 'absenceReason', $event)" + @input="sendToServer([item], 'absenceReason', $event)" /> </v-card-text> </template>