from rest_framework import serializers
from .models import *
from common.common import validateParentId

class UserDeviceSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserDevice
        fields = [
            "id",
            "token",
            "createdDate",
            "updatedDate",
            "deviceOSTypeId",
            "parentId",
        ]

class NotificationSerializer(serializers.ModelSerializer):
    isAuthorized = serializers.SerializerMethodField()
    class Meta:
        model = Notification
        fields = [
            "id",
            "title",
            "body",
            "createdDate",
            "updatedDate",
            "userDeviceId",
            "isAuthorized",
        ]

    def get_isAuthorized(self,instance):
        return validateParentId(self,instance.userDeviceId.parentId.id)

    def validate(self, data):
        errorMessage = ""
        isCheck = False
        if "userDeviceId" in data:
            isCheck = validateParentId(self,data["userDeviceId"].parentId.id)
        else:
            errorMessage = "Parent Id does not exit"
        
        if isCheck == True:
            return data
        
        elif len(errorMessage) > 0:
            raise serializers.ValidationError({"error":[errorMessage]})

