Skip to content
Snippets Groups Projects
Commit ec09021a authored by Julian's avatar Julian
Browse files

Migrate markAsAbsentDay logic to sendToServer hooks

parent 96bfd503
No related branches found
Tags v0.2.7
1 merge request!373Resolve "Suggest creating Kolego absence for the rest of the day when entering absences"
Pipeline #192398 failed
......@@ -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;
......
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