From 1176f678d379d5ac46e25e3d7502f76f34005e83 Mon Sep 17 00:00:00 2001
From: Julian Leucker <leuckerj@gmail.com>
Date: Wed, 20 Jul 2022 09:59:50 +0200
Subject: [PATCH] Create schema to create personal notes

---
 aleksis/apps/alsijil/schema.py | 54 ++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/aleksis/apps/alsijil/schema.py b/aleksis/apps/alsijil/schema.py
index 1333d147f..c1048dbc4 100644
--- a/aleksis/apps/alsijil/schema.py
+++ b/aleksis/apps/alsijil/schema.py
@@ -65,8 +65,62 @@ class PersonalNoteMutation(DjangoModelFormMutation):
         form_class = PersonalNoteForm
 
 
+class CreatePersonalNoteMutation(graphene.Mutation):
+    class Arguments:
+        person_id = graphene.ID(required=True)
+        lesson_period_id = graphene.ID(required=True)
+        week = graphene.Int(required=True)
+        year = graphene.Int(required=True)
+
+        late = graphene.Int(required=False)
+        absent = graphene.Boolean(required=False)
+        excused = graphene.Boolean(required=False)
+        excuse_type = graphene.ID(required=False)
+        remarks = graphene.String(required=False)
+        extra_marks = graphene.List(graphene.ID, required=False)
+
+    personal_note = graphene.Field(PersonalNoteType)
+
+    @classmethod
+    def mutate(
+            cls,
+            root,
+            info,
+            person_id,
+            lesson_period_id,
+            week,
+            year,
+            late=0,
+            absent=False,
+            excused=False,
+            excuse_type=None,
+            remarks="",
+            extra_marks=None
+    ):
+        if extra_marks is None:
+            extra_marks = []
+        person = Person.objects.get(pk=person_id)
+        lesson_period = LessonPeriod.objects.get(pk=lesson_period_id)
+        extra_marks = ExtraMark.objects.filter(pk__in=extra_marks)
+        personal_note = PersonalNote.objects.create(
+            person=person,
+            lesson_period=lesson_period,
+            late=late,
+            absent=absent,
+            excused=excused,
+            excuse_type=excuse_type,
+            remarks=remarks,
+            week=week,
+            year=year,
+        )
+        personal_note.extra_marks.set(extra_marks)
+        personal_note.save()
+        return CreatePersonalNoteMutation(personal_note=personal_note)
+
+
 class Mutation(graphene.ObjectType):
     update_lesson_documentation = LessonDocumentationMutation.Field()
+    create_personal_note = CreatePersonalNoteMutation.Field()
     update_personal_note = PersonalNoteMutation.Field()
 
 
-- 
GitLab