from rest_framework import serializers
from .models import CustomUser

class RegisterSerializer(serializers.ModelSerializer):
    referral_code_input = serializers.CharField(required=False, allow_blank=True)
    agreed_terms = serializers.BooleanField(required=True)

    class Meta:
        model = CustomUser
        fields = [
            'first_name', 'last_name', 'mobile_number', 'email', 'user_type',
            'state', 'district', 'city', 'pincode', 'referral_code_input', 'agreed_terms'
        ]

    def validate_referral_code_input(self, value):
        if value:
            try:
                return CustomUser.objects.get(referral_code=value)
            except CustomUser.DoesNotExist:
                raise serializers.ValidationError("Invalid referral code.")
        return None

    def create(self, validated_data):
        referred_by = validated_data.pop('referral_code_input', None)
        user = CustomUser(**validated_data)
        if referred_by:
            user.referred_by = referred_by
        # For now, use default PINs (you can later update)
        # user.login_pin = "0000"
        # user.transaction_pin = "0000"
        # user.set_password("123456")  # Dummy password (you can skip if using PIN login)
        user.save()
        return user


# serializers.py
from rest_framework import serializers
from .models import District

# class DistrictSerializer(serializers.ModelSerializer):
#     class Meta:
#         model = District
#         fields = ['id', 'name']

from rest_framework import serializers
from .models import State, District

class StateSerializer(serializers.ModelSerializer):
    class Meta:
        model = State
        fields = ('id', 'name', 'state_type')  # include id

class DistrictSerializer(serializers.ModelSerializer):
    # return the FK id, not a nested object (clean for dropdowns)
    # state_id = serializers.IntegerField(source='state_id', read_only=True)

    class Meta:
        model = District
        fields = ('id', 'name')


# api/serializers.py
from rest_framework import serializers
from payments.models import PaymentTransaction, RechargePaymentSummary
from recharge.models import RechargeTransaction

class PaymentTransactionSerializer(serializers.ModelSerializer):
    class Meta:
        model = PaymentTransaction
        fields = "__all__"

class RechargePaymentSummarySerializer(serializers.ModelSerializer):
    class Meta:
        model = RechargePaymentSummary
        fields = "__all__"

class RechargeTransactionSerializer(serializers.ModelSerializer):
    class Meta:
        model = RechargeTransaction
        fields = "__all__"
