from rest_framework import serializers

from .models import Notification


class NotificationSerializer(serializers.ModelSerializer):
    type = serializers.CharField(source="notification_type", read_only=True)
    unread = serializers.SerializerMethodField()
    project_name = serializers.CharField(source="project.name", read_only=True)

    class Meta:
        model = Notification
        fields = [
            "id",
            "type",
            "notification_type",
            "priority",
            "title",
            "brief",
            "body",
            "source",
            "project",
            "project_name",
            "stage",
            "owner_label",
            "cost_label",
            "related_url",
            "is_read",
            "unread",
            "read_at",
            "archived_at",
            "metadata",
            "created_at",
            "updated_at",
        ]
        read_only_fields = [
            "id",
            "type",
            "project_name",
            "read_at",
            "archived_at",
            "created_at",
            "updated_at",
        ]

    def get_unread(self, obj):
        return not obj.is_read
