From 102d869cf7368fee1a0b3b06f0594b917eb29d81 Mon Sep 17 00:00:00 2001
From: Hangzhi Yu <hangzhi@protonmail.com>
Date: Tue, 9 Aug 2022 00:35:15 +0200
Subject: [PATCH] Fix saving of excuse types and extra marks

---
 .../assets/components/coursebook/CourseBook.graphql |  4 ++++
 .../coursebook/LessonDocumentation.graphql          |  2 ++
 .../assets/components/coursebook/PersonalNotes.vue  | 13 ++++++++-----
 3 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/aleksis/apps/alsijil/assets/components/coursebook/CourseBook.graphql b/aleksis/apps/alsijil/assets/components/coursebook/CourseBook.graphql
index 78e83b800..9e9c68b02 100644
--- a/aleksis/apps/alsijil/assets/components/coursebook/CourseBook.graphql
+++ b/aleksis/apps/alsijil/assets/components/coursebook/CourseBook.graphql
@@ -1,5 +1,6 @@
 query CourseBook($lessonId: ID!) {
   excuseTypes {
+    id
     name
     shortName
   }
@@ -55,17 +56,20 @@ query CourseBook($lessonId: ID!) {
       absent
       excused
       excuseType {
+        id
         name
         shortName
       }
       remarks
       extraMarks {
+        id
         name
         shortName
       }
     }
   }
   extraMarks {
+    id
     name
     shortName
   }
diff --git a/aleksis/apps/alsijil/assets/components/coursebook/LessonDocumentation.graphql b/aleksis/apps/alsijil/assets/components/coursebook/LessonDocumentation.graphql
index ee2ec13a3..89b5f83ed 100644
--- a/aleksis/apps/alsijil/assets/components/coursebook/LessonDocumentation.graphql
+++ b/aleksis/apps/alsijil/assets/components/coursebook/LessonDocumentation.graphql
@@ -16,11 +16,13 @@ mutation UpdateOrCreateLessonDocumentation($year:Int!, $week:Int!, $lessonPeriod
         absent
         excused
         excuseType {
+          id
           name
           shortName
         }
         remarks
         extraMarks {
+          id
           name
           shortName
         }
diff --git a/aleksis/apps/alsijil/assets/components/coursebook/PersonalNotes.vue b/aleksis/apps/alsijil/assets/components/coursebook/PersonalNotes.vue
index ba1d2c3f6..b2c8da173 100644
--- a/aleksis/apps/alsijil/assets/components/coursebook/PersonalNotes.vue
+++ b/aleksis/apps/alsijil/assets/components/coursebook/PersonalNotes.vue
@@ -70,16 +70,15 @@
               v-model="editedExcuseType"
               :items="excuseTypes"
               item-text="name"
-              item-value="shortName"
+              return-object
               :disabled="editedPersonID === ID_NO_PERSON || !editedAbsent || !editedExcused"
             ></v-select>
-            <!-- FIXME: get extra mark itself as value -->
             <v-select
               label="Extra Marks"
               v-model="editedExtraMarks"
               :items="extraMarks"
               item-text="name"
-              item-value="valueOf"
+              return-object
               :disabled="editedPersonID === ID_NO_PERSON"
               multiple
               chips
@@ -180,14 +179,18 @@ export default {
                 return
             }
 
+            let editedExcuseTypeID = (this.editedExcuseType) ? this.editedExcuseType.id : null;
+            let editedExtraMarksIDs = [];
+            this.editedExtraMarks.forEach(item => {editedExtraMarksIDs.push(item.id);});
+
             // We save the user input in case of an error
             const variables = {
                 "personId": this.editedPersonID,
                 "late": this.editedTardiness,
                 "absent": this.editedAbsent,
                 "excused": this.editedExcused,
-                "excuseType": this.editedExcuseType,
-                "extraMarks": this.editedExtraMarks,
+                "excuseType": editedExcuseTypeID,
+                "extraMarks": editedExtraMarksIDs,
                 "remarks": this.editedRemarks,
                 "lessonDocumentation": this.lessonDocumentationId,
             }
-- 
GitLab