from rest_framework import serializers


class OverviewStatsSerializer(serializers.Serializer):
    total_entries = serializers.IntegerField()
    completed_entries = serializers.IntegerField()
    pending_entries = serializers.IntegerField()
    total_energy_dispensed = serializers.FloatField()
    total_customers = serializers.IntegerField()
    total_revenue = serializers.FloatField()


class RevenueOverTimeSerializer(serializers.Serializer):
    date = serializers.DateField()
    total_energy = serializers.FloatField()
    total_revenue = serializers.FloatField()
    entry_count = serializers.IntegerField()


class TopCustomersSerializer(serializers.Serializer):
    customer_name = serializers.CharField()
    customer_phone = serializers.CharField()
    total_entries = serializers.IntegerField()
    total_energy = serializers.FloatField()
    total_spent = serializers.FloatField()


class CarBrandAnalyticsSerializer(serializers.Serializer):
    brand_name = serializers.CharField()
    car_count = serializers.IntegerField()
    entry_count = serializers.IntegerField()
    total_energy = serializers.FloatField()


class PeakHoursSerializer(serializers.Serializer):
    hour = serializers.IntegerField()
    entry_count = serializers.IntegerField()
    total_energy = serializers.FloatField()


class DailyTrendsSerializer(serializers.Serializer):
    date = serializers.DateField()
    total_entries = serializers.IntegerField()
    completed_entries = serializers.IntegerField()
    total_energy = serializers.FloatField()
    revenue = serializers.FloatField()


class MonthlyReportSerializer(serializers.Serializer):
    month = serializers.CharField()
    total_entries = serializers.IntegerField()
    total_energy = serializers.FloatField()
    total_revenue = serializers.FloatField()
    unique_customers = serializers.IntegerField()
    avg_energy_per_entry = serializers.FloatField()


class EnergyConsumptionSerializer(serializers.Serializer):
    avg_battery_capacity = serializers.FloatField()
    avg_initial_soc = serializers.FloatField()
    avg_final_soc = serializers.FloatField()
    avg_energy_per_session = serializers.FloatField()
    total_sessions = serializers.IntegerField()


class CompletionRateSerializer(serializers.Serializer):
    period = serializers.CharField()
    total_entries = serializers.IntegerField()
    completed = serializers.IntegerField()
    pending = serializers.IntegerField()
    completion_rate = serializers.FloatField()
