Fix Controller
This commit is contained in:
		| @@ -138,6 +138,7 @@ public class ResultadosController : ControllerBase | ||||
|  | ||||
|         var logos = await _dbContext.LogosAgrupacionesCategorias.AsNoTracking().ToListAsync(); | ||||
|  | ||||
|         // --- LÓGICA DE AGRUPACIÓN Y CÁLCULO CORREGIDA --- | ||||
|         var resultadosAgrupados = resultadosPorMunicipio | ||||
|             .GroupBy(r => r.CategoriaId) | ||||
|             .Select(g => new | ||||
| @@ -146,37 +147,39 @@ public class ResultadosController : ControllerBase | ||||
|                 CategoriaNombre = estadosPorCategoria.ContainsKey(g.Key) ? estadosPorCategoria[g.Key].CategoriaElectoral.Nombre : "Desconocido", | ||||
|                 EstadoRecuento = estadosPorCategoria.GetValueOrDefault(g.Key), | ||||
|                 TotalVotosCategoria = g.Sum(r => r.CantidadVotos), | ||||
|                 Resultados = g | ||||
|                     .GroupBy(r => r.AgrupacionPolitica) | ||||
|                     .Select(partidoGroup => new | ||||
|                     { | ||||
|                         Agrupacion = partidoGroup.Key, | ||||
|                         Votos = partidoGroup.Sum(r => r.CantidadVotos) | ||||
|                     }) | ||||
|                     .OrderByDescending(r => r.Votos) | ||||
|                     .ToList() | ||||
|                 // Agrupamos por el ID de la agrupación, no por el objeto, para evitar duplicados | ||||
|                 ResultadosAgrupados = g.GroupBy(r => r.AgrupacionPoliticaId) | ||||
|                                        .Select(partidoGroup => new | ||||
|                                        { | ||||
|                                            Agrupacion = partidoGroup.First().AgrupacionPolitica, | ||||
|                                            Votos = partidoGroup.Sum(r => r.CantidadVotos) | ||||
|                                        }) | ||||
|                                        .ToList() | ||||
|             }) | ||||
|             .Select(g => new | ||||
|             { | ||||
|                 g.CategoriaId, | ||||
|                 g.CategoriaNombre, | ||||
|                 g.EstadoRecuento, | ||||
|                 Resultados = g.Resultados.Select(r => | ||||
|                 { | ||||
|                     var logoUrl = logos.FirstOrDefault(l => l.AgrupacionPoliticaId == r.Agrupacion.Id && l.CategoriaId == g.CategoriaId && l.AmbitoGeograficoId != null)?.LogoUrl | ||||
|                                ?? logos.FirstOrDefault(l => l.AgrupacionPoliticaId == r.Agrupacion.Id && l.CategoriaId == g.CategoriaId && l.AmbitoGeograficoId == null)?.LogoUrl; | ||||
|                 Resultados = g.ResultadosAgrupados | ||||
|                               .Select(r => | ||||
|                               { | ||||
|                                   var logoUrl = logos.FirstOrDefault(l => l.AgrupacionPoliticaId == r.Agrupacion.Id && l.CategoriaId == g.CategoriaId && l.AmbitoGeograficoId != null)?.LogoUrl | ||||
|                                              ?? logos.FirstOrDefault(l => l.AgrupacionPoliticaId == r.Agrupacion.Id && l.CategoriaId == g.CategoriaId && l.AmbitoGeograficoId == null)?.LogoUrl; | ||||
|  | ||||
|                     return new | ||||
|                     { | ||||
|                         Id = r.Agrupacion.Id, | ||||
|                         r.Agrupacion.Nombre, | ||||
|                         r.Agrupacion.NombreCorto, | ||||
|                         r.Agrupacion.Color, | ||||
|                         LogoUrl = logoUrl, | ||||
|                         r.Votos, | ||||
|                         Porcentaje = g.TotalVotosCategoria > 0 ? ((decimal)r.Votos * 100 / g.TotalVotosCategoria) : 0 | ||||
|                     }; | ||||
|                 }).ToList() | ||||
|                                   return new | ||||
|                                   { | ||||
|                                       Id = r.Agrupacion.Id, | ||||
|                                       r.Agrupacion.Nombre, | ||||
|                                       r.Agrupacion.NombreCorto, | ||||
|                                       r.Agrupacion.Color, | ||||
|                                       LogoUrl = logoUrl, | ||||
|                                       r.Votos, | ||||
|                                       Porcentaje = g.TotalVotosCategoria > 0 ? ((decimal)r.Votos * 100 / g.TotalVotosCategoria) : 0 | ||||
|                                   }; | ||||
|                               }) | ||||
|                               .OrderByDescending(r => r.Votos) | ||||
|                               .ToList() | ||||
|             }) | ||||
|             .OrderBy(c => c.CategoriaId) | ||||
|             .ToList(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user