from rest_framework import serializers
from .models import Member
from departments.models import Department


class MemberSerializer(serializers.ModelSerializer):
    department_name = serializers.CharField(
        source='department.name', read_only=True
    )
    created_by_name = serializers.CharField(
        source='created_by.get_full_name', read_only=True
    )

    class Meta:
        model = Member
        fields = [
            'id', 'member_id', 'full_name', 'phone', 'email',
            'gender', 'date_of_birth', 'address', 'department',
            'department_name', 'membership_status', 'date_joined',
            'created_by', 'created_by_name', 'created_at',
        ]
        read_only_fields = ['id', 'created_at', 'created_by']

    def create(self, validated_data):
        request = self.context.get('request')
        if request and request.user:
            validated_data['created_by'] = request.user
        return super().create(validated_data)


class MemberListSerializer(serializers.ModelSerializer):
    """Lightweight serializer for lists"""
    department_name = serializers.CharField(
        source='department.name', read_only=True
    )

    class Meta:
        model = Member
        fields = [
            'id', 'member_id', 'full_name', 'phone',
            'gender', 'department_name', 'membership_status', 'date_joined',
        ]