Fix Controller

This commit is contained in:
2025-09-02 15:43:27 -03:00
parent f961f9d8e7
commit 6ac6034255
7 changed files with 33 additions and 30 deletions

View File

@@ -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();