Test Public Side
This commit is contained in:
		| @@ -531,8 +531,8 @@ public class ResultadosController : ControllerBase | ||||
|         return Ok(configuracionPublica); | ||||
|     } | ||||
|  | ||||
|     [HttpGet("concejales/{seccionId}")] | ||||
|     public async Task<IActionResult> GetResultadosConcejalesPorSeccion(string seccionId) | ||||
|     [HttpGet("seccion-resultados/{seccionId}")] | ||||
|     public async Task<IActionResult> GetResultadosAgregadosPorSeccion(string seccionId, [FromQuery] int categoriaId) | ||||
|     { | ||||
|         var municipiosDeLaSeccion = await _dbContext.AmbitosGeograficos | ||||
|             .AsNoTracking() | ||||
| @@ -548,40 +548,51 @@ public class ResultadosController : ControllerBase | ||||
|         var resultadosMunicipales = await _dbContext.ResultadosVotos | ||||
|             .AsNoTracking() | ||||
|             .Include(r => r.AgrupacionPolitica) | ||||
|             .Where(r => r.CategoriaId == 7 && municipiosDeLaSeccion.Contains(r.AmbitoGeograficoId)) | ||||
|             // Usamos la categoriaId del parámetro | ||||
|             .Where(r => r.CategoriaId == categoriaId && municipiosDeLaSeccion.Contains(r.AmbitoGeograficoId)) | ||||
|             .ToListAsync(); | ||||
|  | ||||
|         var logosConcejales = await _dbContext.LogosAgrupacionesCategorias | ||||
|         var logos = await _dbContext.LogosAgrupacionesCategorias | ||||
|             .AsNoTracking() | ||||
|             .Where(l => l.CategoriaId == 7) | ||||
|             // Usamos la categoriaId del parámetro | ||||
|             .Where(l => l.CategoriaId == categoriaId) | ||||
|             .ToDictionaryAsync(l => l.AgrupacionPoliticaId); | ||||
|  | ||||
|         var totalVotosSeccion = (decimal)resultadosMunicipales.Sum(r => r.CantidadVotos); | ||||
|  | ||||
|         var resultadosFinales = resultadosMunicipales | ||||
|             // 1. Agrupamos por el ID del partido para evitar duplicados. | ||||
|             .GroupBy(r => r.AgrupacionPoliticaId) | ||||
|             .Select(g => new | ||||
|             { | ||||
|                 // 2. Obtenemos la entidad completa del primer elemento del grupo. | ||||
|                 Agrupacion = g.First().AgrupacionPolitica, | ||||
|                 Votos = g.Sum(r => r.CantidadVotos) | ||||
|             }) | ||||
|             .OrderByDescending(r => r.Votos) | ||||
|             .Select(r => new | ||||
|             { | ||||
|                 Id = r.Agrupacion.Id, // Aseguramos que el Id esté en el objeto final | ||||
|                 Id = r.Agrupacion.Id, | ||||
|                 r.Agrupacion.Nombre, | ||||
|                 r.Agrupacion.NombreCorto, | ||||
|                 r.Agrupacion.Color, | ||||
|                 LogoUrl = logosConcejales.GetValueOrDefault(r.Agrupacion.Id)?.LogoUrl, | ||||
|                 LogoUrl = logos.GetValueOrDefault(r.Agrupacion.Id)?.LogoUrl, | ||||
|                 Votos = r.Votos, | ||||
|                 // 3. Usamos el nombre de propiedad correcto que el frontend espera: 'votosPorcentaje' | ||||
|                 VotosPorcentaje = totalVotosSeccion > 0 ? ((decimal)r.Votos * 100 / totalVotosSeccion) : 0 | ||||
|                 Porcentaje = totalVotosSeccion > 0 ? ((decimal)r.Votos * 100 / totalVotosSeccion) : 0 | ||||
|             }) | ||||
|             .ToList(); | ||||
|  | ||||
|         return Ok(resultadosFinales); | ||||
|         // Devolvemos un objeto para poder añadir la fecha de actualización | ||||
|         var seccionAmbito = await _dbContext.AmbitosGeograficos.AsNoTracking() | ||||
|             .FirstOrDefaultAsync(a => a.SeccionProvincialId == seccionId && a.NivelId == 20); | ||||
|         var estadoRecuento = seccionAmbito != null | ||||
|             ? await _dbContext.EstadosRecuentos.AsNoTracking() | ||||
|                 .FirstOrDefaultAsync(e => e.AmbitoGeograficoId == seccionAmbito.Id && e.CategoriaId == categoriaId) | ||||
|             : null; | ||||
|  | ||||
|         return Ok(new | ||||
|         { | ||||
|             UltimaActualizacion = estadoRecuento?.FechaTotalizacion ?? DateTime.UtcNow, | ||||
|             Resultados = resultadosFinales | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     [HttpGet("mapa-por-seccion")] | ||||
|   | ||||
		Reference in New Issue
	
	Block a user