from rest_framework import serializers class InstitutionsAnalyticsSerializer(serializers.Serializer): total_institutions = serializers.IntegerField() verified_institutions = serializers.IntegerField() countries_count = serializers.IntegerField() by_type = serializers.DictField(child=serializers.IntegerField()) top_countries = serializers.ListField(child=serializers.DictField()) class ProjectsAnalyticsSerializer(serializers.Serializer): total_projects = serializers.IntegerField() active_projects = serializers.IntegerField() completed_projects = serializers.IntegerField() class LMSAnalyticsSerializer(serializers.Serializer): total_courses = serializers.IntegerField() total_enrollments = serializers.IntegerField() total_certificates_issued = serializers.IntegerField() class TicketingAnalyticsSerializer(serializers.Serializer): total_tickets = serializers.IntegerField() open_tickets = serializers.IntegerField() answered_or_closed = serializers.IntegerField() average_satisfaction_rating = serializers.FloatField(allow_null=True) class DonationsAnalyticsSerializer(serializers.Serializer): active_campaigns_count = serializers.IntegerField() total_funds_raised_usd = serializers.FloatField() class DiplomacyAnalyticsSerializer(serializers.Serializer): total_reports_submitted = serializers.IntegerField() approved_reports_count = serializers.IntegerField() total_centers_visited = serializers.IntegerField() class ExecutiveDashboardSerializer(serializers.Serializer): institutions = InstitutionsAnalyticsSerializer() projects = ProjectsAnalyticsSerializer() lms = LMSAnalyticsSerializer() ticketing = TicketingAnalyticsSerializer() donations = DonationsAnalyticsSerializer() diplomacy = DiplomacyAnalyticsSerializer()