"""Serializers for referral commission APIs."""

from __future__ import annotations

from rest_framework import serializers

from .models import Commission


class CommissionSerializer(serializers.ModelSerializer):
    """Read-only serializer for commissions earned by an upline user."""

    class Meta:
        model = Commission
        fields = [
            "id",
            "upline_user",
            "downline_user",
            "reward",
            "level",
            "commission_rate",
            "amount",
            "status",
            "created_at",
            "distributed_at",
        ]
        read_only_fields = fields


class ReferralNetworkSerializer(serializers.ModelSerializer):
    """Serializer for users who were referred by the current user."""
    
    active_investment_total = serializers.DecimalField(
        max_digits=20,
        decimal_places=8,
        read_only=True,
        help_text="Sum of investment amounts with status pending or active"
    )
    total_investment = serializers.DecimalField(
        max_digits=20,
        decimal_places=8,
        read_only=True,
        help_text="Sum of all investment amounts (pending, active, completed)"
    )

    class Meta:
        from apps.users.models import User

        model = User
        fields = [
            "id",
            "first_name",
            "username",
            "created_at",
            "is_active",
            "active_investment_total",
            "total_investment",
        ]
        read_only_fields = fields
