from drf_writable_nested import WritableNestedModelSerializer, UniqueFieldsMixin, NestedCreateMixin, NestedUpdateMixin
from .models import *
from rest_framework import serializers


class SubscriptionHistorySerializer(WritableNestedModelSerializer):
    subscription_id = serializers.PrimaryKeyRelatedField(read_only=True)

    class Meta:
        model = SubscriptionHistory
        fields = ("pk", 'dateReceived', 'data', 'subscription_id')


class SubscriptionSerializer(WritableNestedModelSerializer):
    sub_history = SubscriptionHistorySerializer(required=False, many=True)
    paystack_plan = serializers.PrimaryKeyRelatedField(read_only=True)

    class Meta:
        model = Subscription
        fields = ("pk", 'email', 'reference', "plan_code", "email_token",
                  'paystack_plan', "subscription_code", 'sub_history')


class PaystackPlanSerializer(WritableNestedModelSerializer):
    fundSource_id = serializers.PrimaryKeyRelatedField(read_only=True)
    subscription = SubscriptionSerializer(required=False)
    savings_plan_id = serializers.CharField(max_length=100)

    class Meta:
        model = PaystackPlan
        fields = ("pk", 'currency', 'name', 'interval', "amount", "code",
                  "invoice_limit", 'receivedData', 'savings_plan_id',
                  'fundSource_id', 'subscription')


class TestimonialSerializer(WritableNestedModelSerializer):
    # subscription_id = serializers.PrimaryKeyRelatedField(read_only=True)

    class Meta:
        model = Testimonial
        fields = ("pk", 'email', 'photoUrl', 'content')


class FAQSerializer(WritableNestedModelSerializer):
    # subscription_id = serializers.PrimaryKeyRelatedField(read_only=True)

    class Meta:
        model = FAQ
        fields = ("pk", 'question', 'answer')