from rest_framework import serializers

from apps.engagement.models import Coupon, Favorite, Notification, RecentlyViewed
from apps.stores.serializers import StoreListSerializer


class FavoriteSerializer(serializers.ModelSerializer):
    store = StoreListSerializer(read_only=True)

    class Meta:
        model = Favorite
        fields = ["id", "store", "created_at"]


class FavoriteCreateSerializer(serializers.Serializer):
    store_id = serializers.IntegerField()


class RecentlyViewedSerializer(serializers.ModelSerializer):
    store = StoreListSerializer(read_only=True)

    class Meta:
        model = RecentlyViewed
        fields = ["id", "store", "viewed_at"]


class RecentlyViewedCreateSerializer(serializers.Serializer):
    store_id = serializers.IntegerField()


class CouponSerializer(serializers.ModelSerializer):
    class Meta:
        model = Coupon
        fields = [
            "id", "code", "discount_percent", "discount_amount",
            "valid_from", "valid_until", "store", "is_active",
        ]


class NotificationSerializer(serializers.ModelSerializer):
    class Meta:
        model = Notification
        fields = ["id", "title", "body", "type", "is_read", "created_at"]


class NotificationSettingsSerializer(serializers.Serializer):
    notifications_enabled = serializers.BooleanField(required=True)
