# payments/api_serializers.py
from rest_framework import serializers
from payments.models import RechargePaymentSummary

class VerifyTxnPinSerializer(serializers.Serializer):
    transaction_pin = serializers.RegexField(regex=r"^\d{4}$", max_length=4, min_length=4)


class RechargePaymentSummarySerializer(serializers.ModelSerializer):
    class Meta:
        model = RechargePaymentSummary
        fields = [
            'id',
            # include fields you have on the model; adjust as needed:
            'user',
            'number',            # if present
            'operator',          # if present (could be FK or char)
            'amount',
            'ext_wallet_used',   # if present
            'vp_wallet_used',    # if present
            'razorpay_used',     # if present
            'recharge_status',
            'created_at',
            'updated_at',
        ]
        read_only_fields = fields


class WalletTopupRequestSerializer(serializers.Serializer):
    mobile = serializers.CharField(max_length=20)
    amount = serializers.DecimalField(max_digits=10, decimal_places=2)
    purpose_code = serializers.ChoiceField(choices=[
        ("manual_test", "Manual Top-Up (Testing)"),
        ("manual_admin", "Manual Top-Up (Admin)"),
        ("oneapp_withdrawal", "Credit from 1App Withdrawal"),
        ("other", "Other"),
    ], default="manual_admin")
    purpose_note = serializers.CharField(max_length=200, allow_blank=True, required=False)

class WalletTopupResponseSerializer(serializers.Serializer):
    success = serializers.BooleanField()
    order_id = serializers.CharField()
    mobile = serializers.CharField()
    amount = serializers.DecimalField(max_digits=10, decimal_places=2)
    balance = serializers.DecimalField(max_digits=12, decimal_places=2)
    purpose_code = serializers.CharField()
    purpose = serializers.CharField()
    reference_user = serializers.CharField()
