from rest_framework import serializers
from customers.models import Customer
from mmbanking.models import MobileBankingSubscription

class MobileLoginSerializer(serializers.Serializer):
    identifier = serializers.CharField(
        max_length=50,
        help_text="Member number or mobile number"
    )
    pin = serializers.CharField(
        max_length=10,
        help_text="Mobile banking PIN"
    )

class MobileRegisterSerializer(serializers.Serializer):
    name = serializers.CharField(max_length=255)
    telephone = serializers.CharField(max_length=55)
    gender = serializers.ChoiceField(
        choices=[('M', 'Male'), ('F', 'Female'), ('O', 'Other')],
        default='O'
    )
    branch_id = serializers.IntegerField()
    customer_type_id = serializers.IntegerField()

class MobileResetPinSerializer(serializers.Serializer):
    identifier = serializers.CharField(
        max_length=50,
        help_text="Member number or mobile number"
    )

class MobileAuthResponseSerializer(serializers.Serializer):
    status = serializers.BooleanField()
    message = serializers.CharField()
    data = serializers.DictField(required=False)

class CustomerMobileSerializer(serializers.ModelSerializer):
    """Simplified customer serializer for mobile app"""
    branch_name = serializers.CharField(source='customer_branch.name', read_only=True)
    organisation_name = serializers.CharField(source='customer_branch.branch_organisation.name', read_only=True)
    customer_type_name = serializers.CharField(source='branch_customer_type.customer_type', read_only=True)
    
    class Meta:
        model = Customer
        fields = [
            'id', 'name', 'member_number', 'old_member_number', 
            'telephone', 'gender', 'nationality', 'date_added',
            'branch_name', 'organisation_name', 'customer_type_name'
        ]