from rest_framework import serializers
from .models import Department


class DepartmentSerializer(serializers.ModelSerializer):
    leader_name = serializers.SerializerMethodField()
    member_count = serializers.SerializerMethodField()

    class Meta:
        model = Department
        fields = [
            'id', 'name', 'description', 'leader',
            'leader_name', 'member_count', 'date_created',
        ]
        read_only_fields = ['id', 'date_created']

    def get_leader_name(self, obj):
        if obj.leader:
            return f"{obj.leader.first_name} {obj.leader.last_name}".strip() or obj.leader.username
        return None

    def get_member_count(self, obj):
        return obj.member_count()