Fix Worker 1447

This commit is contained in:
2025-08-18 14:47:05 -03:00
parent 46f6eeae91
commit 0360f0619e

View File

@@ -225,14 +225,18 @@ public class Worker : BackgroundService
using var scope = _serviceProvider.CreateScope(); using var scope = _serviceProvider.CreateScope();
var dbContext = scope.ServiceProvider.GetRequiredService<EleccionesDbContext>(); var dbContext = scope.ServiceProvider.GetRequiredService<EleccionesDbContext>();
// Buscamos los ámbitos de nivel Municipio/Partido
var municipiosASondear = await dbContext.AmbitosGeograficos var municipiosASondear = await dbContext.AmbitosGeograficos
.AsNoTracking() .AsNoTracking()
.Where(a => a.NivelId == 5 && a.MunicipioId != null && a.DistritoId != null && a.SeccionId != null) .Where(a => a.NivelId == 5 && a.MunicipioId != null && a.DistritoId != null && a.SeccionId != null)
.Select(a => new { a.Id, a.MunicipioId, a.SeccionId, a.DistritoId }) // Añadimos a.Nombre aquí para que esté disponible en el bucle
.Select(a => new { a.Id, a.Nombre, a.MunicipioId, a.SeccionId, a.DistritoId })
.ToListAsync(stoppingToken); .ToListAsync(stoppingToken);
if (!municipiosASondear.Any()) return; if (!municipiosASondear.Any())
{
_logger.LogWarning("No se encontraron Partidos (NivelId 5) en la BD para sondear resultados.");
return;
}
_logger.LogInformation("Iniciando sondeo de resultados para {count} municipios (Partidos)...", municipiosASondear.Count); _logger.LogInformation("Iniciando sondeo de resultados para {count} municipios (Partidos)...", municipiosASondear.Count);
@@ -246,19 +250,27 @@ public class Worker : BackgroundService
if (categoriaConcejales != null) if (categoriaConcejales != null)
{ {
// Para obtener resultados del PARTIDO completo, pasamos 'municipioId' como null.
// Usamos el 'seccionId' del registro, que según la aclaración, es el ID del Partido.
var resultados = await _apiService.GetResultadosAsync( var resultados = await _apiService.GetResultadosAsync(
authToken, authToken,
municipio.DistritoId!, municipio.DistritoId!,
municipio.SeccionId!, municipio.SeccionId!,
null, // <- AHORA ES NULL null,
categoriaConcejales.Id categoriaConcejales.Id
); );
if (resultados != null) if (resultados != null)
{ {
await GuardarResultadosDeAmbitoAsync(dbContext, municipio.Id, resultados, stoppingToken); try
{
await GuardarResultadosDeAmbitoAsync(dbContext, municipio.Id, resultados, stoppingToken);
// Ahora 'municipio.Nombre' existe y el log funcionará
_logger.LogInformation("Resultados para el municipio '{nombre}' (ID: {id}) guardados/actualizados.", municipio.Nombre, municipio.MunicipioId);
}
catch (Exception ex)
{
// Y aquí también funcionará, dándonos un error mucho más útil
_logger.LogError(ex, "FALLO CRÍTICO al guardar resultados para el municipio '{nombre}' (ID: {id}).", municipio.Nombre, municipio.MunicipioId);
}
} }
} }
} }