from rest_framework import serializers
from .models import UserNotificationPreference

class UserNotificationPreferenceSerializer(serializers.ModelSerializer):
    notification_type = serializers.CharField(source='notification_type.name', read_only=True)

    class Meta:
        model = UserNotificationPreference
        fields = ['id', 'notification_type', 'inapp', 'email', 'sms', 'whatsapp']

class UserNotificationPreferenceUpdateSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserNotificationPreference
        fields = ['id', 'inapp', 'email', 'sms', 'whatsapp']

from rest_framework import serializers
from .models import Notification

class NotificationSerializer(serializers.ModelSerializer):
    # Format like "14 Aug 2025, 02:07 PM"
    created_at = serializers.DateTimeField(format="%d %b %Y, %I:%M %p", read_only=True)
    type = serializers.SerializerMethodField()

    class Meta:
        model = Notification
        fields = ["id", "message", "is_read", "created_at", "type"]

    def get_type(self, obj):
        # If you have a FK with .key, use that; otherwise fallback safely
        try:
            return obj.type.key
        except Exception:
            # if 'type' is a CharField or choices, this returns the raw value
            return getattr(obj, "type", None)
