using System;
using System.Collections.Generic;
using System.Linq;

namespace GestionIntegral.Api.Dtos.Reportes.ViewModels
{
    public class ListadoDistribucionDistribuidoresViewModel
    {
        public IEnumerable<ListadoDistribucionDistSimpleDto> DetalleDiario { get; set; } = new List<ListadoDistribucionDistSimpleDto>();
        public IEnumerable<ListadoDistribucionDistPromedioDiaDto> PromediosPorDia { get; set; } = new List<ListadoDistribucionDistPromedioDiaDto>();

        public string NombrePublicacion { get; set; } = string.Empty;
        public string NombreDistribuidor { get; set; } = string.Empty;
        public string FechaDesde { get; set; } = string.Empty;
        public string FechaHasta { get; set; } = string.Empty;
        public string FechaReporte { get; set; } = DateTime.Now.ToString("dd/MM/yyyy");

        // --- PROPIEDAD CALCULADA PARA LA FILA "GENERAL" ---
        public ListadoDistribucionDistPromedioDiaDto? PromedioGeneral
        {
            get
            {
                if (DetalleDiario == null || !DetalleDiario.Any())
                {
                    return null;
                }

                var diasConDatos = DetalleDiario.Count(d => (d.Llevados ?? 0) > 0);
                if (diasConDatos == 0) return null;

                var totalLlevados = DetalleDiario.Sum(d => d.Llevados ?? 0);
                var totalDevueltos = DetalleDiario.Sum(d => d.Devueltos ?? 0);

                return new ListadoDistribucionDistPromedioDiaDto
                {
                    Dia = "General",
                    Cant = diasConDatos,
                    Promedio_Llevados = totalLlevados / diasConDatos,
                    Promedio_Devueltos = totalDevueltos / diasConDatos,
                    Promedio_Ventas = (totalLlevados - totalDevueltos) / diasConDatos,
                    Llevados = totalLlevados, // Guardamos el total para el cálculo del %
                    Devueltos = totalDevueltos // Guardamos el total para el cálculo del %
                };
            }
        }
    }
}