from rest_framework import serializers
from .models import SchoolRole, SchoolPermission, UserSchoolRole


class SchoolPermissionSerializer(serializers.ModelSerializer):
    content_type = serializers.SerializerMethodField()

    class Meta:
        model = SchoolPermission
        fields = ['id', 'codename', 'name', 'category', 'description', 'content_type']

    def get_content_type(self, obj):
        return obj.category


class SchoolRoleSerializer(serializers.ModelSerializer):
    users_count = serializers.SerializerMethodField()
    permissions_count = serializers.SerializerMethodField()

    class Meta:
        model = SchoolRole
        fields = [
            'id', 'name', 'description', 'is_active',
            'users_count', 'permissions_count', 'created_at', 'updated_at',
        ]

    def get_users_count(self, obj):
        return obj.user_assignments.count()

    def get_permissions_count(self, obj):
        return obj.role_permissions.count()


class UserSchoolRoleSerializer(serializers.ModelSerializer):
    role_name = serializers.CharField(source='role.name', read_only=True)

    class Meta:
        model = UserSchoolRole
        fields = ['id', 'user_id', 'role', 'role_name', 'assigned_at', 'assigned_by_id']
