from rest_framework import serializers
from .models import *
from django.db.models import *
from common.common import isValidData,validateParentId

class TodoSerializer(serializers.ModelSerializer):
    isAuthorized = serializers.SerializerMethodField()

    class Meta:
        model = Todo
        fields = [
            "id",
            "title",
            "date",
            "dateTime",
            "isDone",
            "createdDate",
            "updatedDate",
            "medicalProfileId",
            "isAuthorized",
        ]

    def get_isAuthorized(self, instance):
        if isValidData(self, instance.medicalProfileId.childId.id):
            return True

    def validate(self, data):
        errorMessage = ""
        isCheck = False
        if "medicalProfileId" in data:
            isCheck = validateParentId(
                self, data["medicalProfileId"].childId.parentId.id
            )
        else:
            errorMessage = "Parent Id does not exit"

        if isCheck == True:
            return data

        elif len(errorMessage) > 0:
            raise serializers.ValidationError({"error": [errorMessage]})


