namespace GestionIntegral.Api.Dtos.Reportes.ViewModels { // Clases internas para la agrupación public class GrupoPublicacion { public string NombrePublicacion { get; set; } = string.Empty; public IEnumerable Suscripciones { get; set; } = Enumerable.Empty(); } public class GrupoEmpresa { public string NombreEmpresa { get; set; } = string.Empty; public IEnumerable Publicaciones { get; set; } = Enumerable.Empty(); } public class DistribucionSuscripcionesViewModel { public IEnumerable DatosAgrupados { get; } public string FechaDesde { get; set; } = string.Empty; public string FechaHasta { get; set; } = string.Empty; public string FechaGeneracion { get; set; } = string.Empty; public DistribucionSuscripcionesViewModel(IEnumerable suscripciones) { DatosAgrupados = suscripciones .GroupBy(s => s.NombreEmpresa) .Select(gEmpresa => new GrupoEmpresa { NombreEmpresa = gEmpresa.Key, Publicaciones = gEmpresa .GroupBy(s => s.NombrePublicacion) .Select(gPub => new GrupoPublicacion { NombrePublicacion = gPub.Key, Suscripciones = gPub.OrderBy(s => s.NombreSuscriptor).ToList() }) .OrderBy(p => p.NombrePublicacion) }) .OrderBy(e => e.NombreEmpresa); } } }