From 81562bc08f1616a8bda2081d95cfcc6af25d21cf Mon Sep 17 00:00:00 2001
From: Michael Bauer <michael-bauer@posteo.de>
Date: Mon, 3 Jun 2024 13:26:50 +0200
Subject: [PATCH] Sketch documentations for person backend

---
 aleksis/apps/alsijil/schema/__init__.py   | 15 +++++++-
 aleksis/apps/alsijil/schema/statistics.py | 42 +++++++++++++++++++++++
 2 files changed, 56 insertions(+), 1 deletion(-)

diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py
index 986256eba..14725b342 100644
--- a/aleksis/apps/alsijil/schema/__init__.py
+++ b/aleksis/apps/alsijil/schema/__init__.py
@@ -22,7 +22,10 @@ from .absences import (
     LessonsForPersonType,
     AbsencesBatchCreateMutation,
 )
-from .statistics import StatisticsByPersonType
+from .statistics import (
+    StatisticsByPersonType,
+    DocumentationByPersonType,
+)
 
 class Query(graphene.ObjectType):
     documentations = FilterOrderList(DocumentationType)
@@ -54,6 +57,11 @@ class Query(graphene.ObjectType):
         person=graphene.ID(required=True),
         term=graphene.ID(required=False),
     )
+    documentations_by_person = graphene.List(
+        DocumentationByPersonType,
+        person=graphene.ID(required=True),
+        term=graphene.ID(required=False),
+    )
     statistics_by_group = graphene.List(
         StatisticsByPersonType,
         group=graphene.ID(required=True),
@@ -187,6 +195,11 @@ class Query(graphene.ObjectType):
         # TODO: Annotate person with necessary information for term.
         return Person.objects.get(id=person)
 
+    @staticmethod
+    def resolve_documentations_by_person(root, info, person, term=None):
+        # TODO: Annotate person with necessary information for term.
+        return Person.objects.get(id=person)
+
     @staticmethod
     def resolve_statistics_by_group(root, info, group, term=None):
         # TODO: Annotate persons with necessary information for term.
diff --git a/aleksis/apps/alsijil/schema/statistics.py b/aleksis/apps/alsijil/schema/statistics.py
index 4b030735c..070379d1b 100644
--- a/aleksis/apps/alsijil/schema/statistics.py
+++ b/aleksis/apps/alsijil/schema/statistics.py
@@ -1,4 +1,7 @@
 import graphene
+from aleksis.core.models import Person
+from aleksis.core.schema.person import PersonType
+from aleksis.apps.cursus.schema import SubjectType
 from aleksis.apps.kolego.models.absence import AbsenceReason
 from aleksis.apps.kolego.schema.absence import AbsenceReasonType
 from ..models import ExtraMark
@@ -58,3 +61,42 @@ class StatisticsByPersonType(graphene.ObjectType):
     def resolve_extra_marks(root, info):
         # TODO: Return actual ExtraMarks
         return ExtraMark.objects.all()
+
+
+class DocumentationByPersonType(graphene.ObjectType):
+    id = graphene.ID()
+    datetime_start = graphene.Date()
+    datetime_end = graphene.Date()
+    group_short_name = graphene.String()
+    teacher = graphene.Field(PersonType)
+    subject = graphene.Field(SubjectType)
+    absences = graphene.List(AbsenceReasonType)
+    extra_marks = graphene.List(ExtraMarkType)
+    personal_note = graphene.String()
+
+    def resolve_id(root, info):
+        return 1
+
+    def resolve_datetime_start(root, info):
+        return "2024-05-27T09:00:00+00:00"
+
+    def resolve_datetime_end(root, info):
+        return "2024-05-27T10:00:00+00:00"
+
+    def resolve_group_short_name(root, info):
+        return "11b"
+
+    def resolve_teacher(root, info):
+        return Person.objects.get(id=63)
+
+    def resolve_subject(root, info):
+        return Subject.objects.get(id=1)
+
+    def resolve_absences(root, info):
+        return AbsenceReason.objects.all()
+
+    def resolve_extra_marks(root, info):
+        return ExtraMark.objects.all()
+
+    def resolve_personal_note(root, info):
+        return "All is well:)"
-- 
GitLab