Feat Widgets 1930
This commit is contained in:
		| @@ -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")] | ||||
|   | ||||
		Reference in New Issue
	
	Block a user