From fa65930a625db04d7be91ac99a9e2d7ca7bd80a7 Mon Sep 17 00:00:00 2001
From: magicfelix <felix@felix-zauberer.de>
Date: Mon, 1 Aug 2022 11:55:36 +0200
Subject: [PATCH] Implement creation of LessonDocumentations in Coursebook

---
 .../assets/components/alsijil/CourseBook.vue  | 20 +-------
 .../alsijil/LessonDocumentations.vue          | 47 +++++++++++++++++--
 2 files changed, 44 insertions(+), 23 deletions(-)

diff --git a/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.vue b/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.vue
index e0bd7ab5b..425e21c63 100644
--- a/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.vue
+++ b/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.vue
@@ -11,29 +11,17 @@
         <div v-else-if="data" class="result apollo">
           <update-indicator @manual-update="updateManually()" ref="indicator" :status="status"></update-indicator>
           <v-subheader>{{ data.lesson.subject.name }}</v-subheader>
-          <v-col
-            class="d-flex"
-            cols="12"
-            sm="6"
-          >
-            <v-select
-              :items="data.lesson.plannedLessonperiodsDatetimes"
-              label="Choose Lesson date"
-              :item-text="getLessonText"
-              item-value="datetimeStart"
-            ></v-select>
-          </v-col>
-          <v-row v-if="data.lessonDocumentations.length > 0">
+          <v-row>
             <v-col cols="12">
               <lesson-documentations
                 :lessonDocumentations="data.lessonDocumentations"
+                :plannedLessonperiodsDatetimes="data.lesson.plannedLessonperiodsDatetimes"
                 :groups="data.lesson.groups"
                 :excuseTypes="data.excuseTypes"
                 :extraMarks="data.extraMarks"
               />
             </v-col>
           </v-row>
-          <message-box v-else type="info">No coursebook for you :(</message-box>
         </div>
         <!-- No result or Loading -->
         <div v-else>
@@ -58,10 +46,6 @@ export default {
         LessonDocumentations
     },
     methods: {
-        getLessonText(item) {
-            let date_obj = new Date(item.datetimeStart)
-            return date_obj.toLocaleDateString(this.$root.languageCode) + ", Period " + item.lessonPeriod.period.period
-        },
         processDataChange(event) {
             this.status = CHANGES;
             // alert("Probably save the data");
diff --git a/aleksis/apps/alsijil/assets/components/alsijil/LessonDocumentations.vue b/aleksis/apps/alsijil/assets/components/alsijil/LessonDocumentations.vue
index 8fa6dfbbb..7127093b3 100644
--- a/aleksis/apps/alsijil/assets/components/alsijil/LessonDocumentations.vue
+++ b/aleksis/apps/alsijil/assets/components/alsijil/LessonDocumentations.vue
@@ -3,6 +3,30 @@
     v-model="dialog"
     max-width="800"
   >
+    <template v-slot:activator="{ on, attrs }">
+      <v-row>
+        <v-col cols="6">
+          <v-select
+            :items="plannedLessonperiodsDatetimes"
+            label="Choose Lesson date"
+            :item-text="getLessonText"
+            v-model="selectedLessonperiodDatetime"
+            return-object
+          ></v-select>
+        </v-col>
+        <v-col>
+          <v-btn
+            color="primary"
+            dark
+            v-bind="attrs"
+            v-on="on"
+            @click="createLessonDocumentation()"
+          >
+            Create Lesson Documentation
+          </v-btn>
+        </v-col>
+      </v-row>
+    </template>
     <ApolloMutation
       :mutation="require('./LessonDocumentation.graphql')"
       :variables=lessonDocumentationEdit
@@ -129,7 +153,7 @@
   import PersonalNotes from "./PersonalNotes.vue";
   export default {
     components: { PersonalNotes },
-    props: [ "lessonDocumentations", "groups", "excuseTypes", "extraMarks" ],
+    props: [ "lessonDocumentations","plannedLessonperiodsDatetimes",  "groups", "excuseTypes", "extraMarks" ],
     name: "lesson-documentations",
     data () {
       return {
@@ -141,7 +165,8 @@
           { text: "Homework", value: "homework" },
           { text: "Group note", value: "groupNote" }
         ],
-        lessonDocumentationEdit: {}
+        lessonDocumentationEdit: {},
+        selectedLessonperiodDatetime: {}
       }
     },
     methods: {
@@ -170,14 +195,26 @@
           groupNote: lessonDocumentation.groupNote,
           personalNotes: lessonDocumentation.personalNotes,
         }
-        console.log(result)
-        console.log(this.lessonDocumentationEdit)
       },
 
       editLessonDocumentation(item) {
         this.loadLessonDocumentation(item)
         this.dialog = true
-      }
+      },
+
+      createLessonDocumentation() { // FIXME: Update cache to show newly created LessonDocumentation in table
+        let lessonDocumentation = this.selectedLessonperiodDatetime
+        lessonDocumentation["event"] = null
+        lessonDocumentation["extraLesson"] = null
+        this.loadLessonDocumentation(lessonDocumentation)
+        this.dialog = true
+      },
+
+      getLessonText(item) {
+          let date_obj = new Date(item.datetimeStart)
+          let period = item.lessonPeriod ? ", Period " + item.lessonPeriod.period.period : "" // FIXME: Cases without lessonPeriod
+          return date_obj.toLocaleDateString(this.$root.languageCode) + period
+      },
     }
   }
 </script>
-- 
GitLab