from django.apps import apps

import graphene

from aleksis.core.schema.base import DjangoFilterMixin, FilterOrderList

from .absence import (
    AbsenceType,
    AbsenceCreateMutation,
    AbsenceBatchCreateMutation,
    AbsenceDeleteMutation,
    AbsenceBatchPatchMutation,
    AbsenceReasonType,
    AbsenceReasonCreateMutation,
    AbsenceReasonBatchCreateMutation,
    AbsenceReasonDeleteMutation,
    AbsenceReasonBatchPatchMutation
)


class Query(graphene.ObjectType):
    app_name = graphene.String()
    absences = FilterOrderList(AbsenceType)
    absence_reasons = FilterOrderList(AbsenceReasonType)

    def resolve_app_name(root, info, **kwargs) -> str:
        return apps.get_app_config("kolego").verbose_name

class Mutation(graphene.ObjectType):
    create_absence = AbsenceCreateMutation.Field()
    create_absences = AbsenceBatchCreateMutation.Field()
    delete_absence = AbsenceDeleteMutation.Field()
    update_absences = AbsenceBatchPatchMutation.Field()

    create_absence_reason = AbsenceReasonCreateMutation.Field()
    create_absence_reasons = AbsenceReasonBatchCreateMutation.Field()
    delete_absence_reason = AbsenceReasonDeleteMutation.Field()
    update_absence_reasons = AbsenceReasonBatchPatchMutation.Field()