Feat Widgets 1930

This commit is contained in:
2025-09-02 19:38:04 -03:00
parent 9393d2bc05
commit 6732a0e826
15 changed files with 230 additions and 146 deletions

View File

@@ -17,20 +17,39 @@ public class CatalogosController : ControllerBase
}
[HttpGet("municipios")]
public async Task<IActionResult> GetMunicipios()
public async Task<IActionResult> GetMunicipios([FromQuery] int? categoriaId)
{
var municipios = await _dbContext.AmbitosGeograficos
var municipiosQuery = _dbContext.AmbitosGeograficos
.AsNoTracking()
.Where(a => a.NivelId == 30 && a.SeccionId != null)
.Select(a => new MunicipioSimpleDto
{
Id = a.SeccionId!,
Nombre = a.Nombre
})
.OrderBy(m => m.Nombre)
.Where(a => a.NivelId == 30);
// 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
.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
.AsNoTracking()
.Where(p => p.CategoriaId == categoriaId)
.Select(p => p.AmbitoGeografico.SeccionProvincialId)
.Distinct()
.ToListAsync();
return Ok(municipios);
// 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 })
.ToListAsync();
return Ok(municipiosFiltrados);
}
[HttpGet("agrupaciones")]