using System.Collections.Generic;

namespace SIGCM.Domain.Models;

public class AdvancedAnalyticsDto
{
    // Resumen Comparativo
    public decimal TotalRevenue { get; set; }
    public decimal PreviousPeriodRevenue { get; set; }
    public double RevenueGrowth { get; set; }

    public int TotalAds { get; set; }
    public int PreviousPeriodAds { get; set; }
    public double AdsGrowth { get; set; }

    // Distribución de Pagos
    public List<PaymentMethodStat> PaymentsDistribution { get; set; } = new();

    // Rendimiento por Categoría
    public List<CategoryPerformanceStat> CategoryPerformance { get; set; } = new();

    // Análisis Horario (Peak Hours)
    public List<HourlyStat> HourlyActivity { get; set; } = new();

    // Tendencia de Recaudación (Día a Día)
    public List<DailyRevenue> DailyTrends { get; set; } = new();

    public SourceMixDto SourceMix { get; set; } = new();
}

public class SourceMixDto
{
    public int MostradorCount { get; set; }
    public int WebCount { get; set; }
    public double MostradorPercent { get; set; }
    public double WebPercent { get; set; }
}

public class PaymentMethodStat
{
    public string Method { get; set; } = "";
    public decimal Total { get; set; }
    public int Count { get; set; }
}

public class CategoryPerformanceStat
{
    public string CategoryName { get; set; } = "";
    public decimal Revenue { get; set; }
    public int AdsCount { get; set; }
    public double Share { get; set; }
}

public class HourlyStat
{
    public int Hour { get; set; }
    public int Count { get; set; }
}
