Sin filtro de Municipios Válidos SenadoresWidget DiputadosWidget

This commit is contained in:
2025-09-07 19:53:59 -03:00
parent a49fc80fd9
commit ad30d4263d
11 changed files with 36 additions and 36 deletions

View File

@@ -21,32 +21,32 @@ public class CatalogosController : ControllerBase
{
var municipiosQuery = _dbContext.AmbitosGeograficos
.AsNoTracking()
.Where(a => a.NivelId == 30);
.Where(a => a.NivelId == 30 && !string.IsNullOrEmpty(a.SeccionId));
// Si NO se proporciona una categoriaId, devolvemos todos (para Concejales).
if (categoriaId == null)
{
var todosLosMunicipios = await municipiosQuery
.OrderBy(a => a.Nombre)
.Select(a => new { a.SeccionId, a.Nombre }) // Usamos SeccionId como el ID electoral
.Select(a => new { id = a.SeccionId, a.Nombre })
.ToListAsync();
return Ok(todosLosMunicipios);
}
// --- LÓGICA DE FILTRADO PARA DIPUTADOS Y SENADORES ---
// 1. Encontrar las Secciones Electorales que SÍ tienen resultados para la categoría.
var seccionesActivasIds = await _dbContext.ProyeccionesBancas
// --- LÓGICA DE FILTRADO CORREGIDA Y SIMPLIFICADA ---
// Un municipio vota para una categoría legislativa si su sección electoral
// tiene proyecciones de bancas para esa categoría.
var seccionesConProyeccion = await _dbContext.ProyeccionesBancas
.AsNoTracking()
.Where(p => p.CategoriaId == categoriaId)
.Select(p => p.AmbitoGeografico.SeccionProvincialId)
.Distinct()
.ToListAsync();
// 2. Filtramos la lista de municipios.
var municipiosFiltrados = await municipiosQuery
.Where(m => seccionesActivasIds.Contains(m.SeccionProvincialId))
.OrderBy(a => a.Nombre)
.Select(a => new { a.SeccionId, a.Nombre })
.Where(m => m.SeccionProvincialId != null && seccionesConProyeccion.Contains(m.SeccionProvincialId))
.OrderBy(m => m.Nombre)
.Select(m => new { id = m.SeccionId, m.Nombre })
.ToListAsync();
return Ok(municipiosFiltrados);