from rest_framework import serializers
from ..models import ShareType, ShareSubscription, SharePayment

class ShareTypeSerializer(serializers.ModelSerializer):
    class Meta:
        model = ShareType
        fields = ['id', 'name', 'nominal_value', 'created_at', 'updated_at']
        read_only_fields = ['id', 'created_at', 'updated_at']

class ShareSubscriptionSerializer(serializers.ModelSerializer):
    member_email = serializers.ReadOnlyField(source='member.user.email')
    share_type_name = serializers.ReadOnlyField(source='share_type.name')

    class Meta:
        model = ShareSubscription
        fields = [
            'id', 'member', 'member_email', 'share_type', 'share_type_name',
            'subscribed_quantity', 'subscription_date', 'paid_quantity', 'is_fully_paid',
            'created_at', 'updated_at'
        ]
        read_only_fields = [
            'id', 'member_email', 'share_type_name', 'subscription_date',
            'paid_quantity', 'is_fully_paid', 'created_at', 'updated_at'
        ]

class SharePaymentSerializer(serializers.ModelSerializer):
    subscription_id = serializers.ReadOnlyField(source='subscription.id')
    amount_paid = serializers.ReadOnlyField(source='financial_transaction.amount')

    class Meta:
        model = SharePayment
        fields = [
            'id', 'subscription', 'subscription_id', 'paid_quantity',
            'payment_date', 'financial_transaction', 'amount_paid',
            'created_at', 'updated_at'
        ]
        read_only_fields = [
            'id', 'subscription_id', 'payment_date', 'amount_paid',
            'created_at', 'updated_at'
        ]
