Fix proyeccion bancas
This commit is contained in:
@@ -255,6 +255,13 @@ public class LowPriorityDataWorker : BackgroundService
|
||||
/// </summary>
|
||||
/// <param name="authToken">El token de autenticación válido para la sesión.</param>
|
||||
/// <param name="stoppingToken">El token de cancelación para detener la operación.</param>
|
||||
/// <summary>
|
||||
/// Sondea la proyección de bancas a nivel Provincial y por Sección Electoral.
|
||||
/// Esta versión guarda la CategoriaId junto con cada proyección para poder distinguir
|
||||
/// entre diferentes elecciones (ej. Senadores vs. Diputados).
|
||||
/// </summary>
|
||||
/// <param name="authToken">El token de autenticación válido para la sesión.</param>
|
||||
/// <param name="stoppingToken">El token de cancelación para detener la operación.</param>
|
||||
private async Task SondearProyeccionBancasAsync(string authToken, CancellationToken stoppingToken)
|
||||
{
|
||||
try
|
||||
@@ -305,34 +312,19 @@ public class LowPriorityDataWorker : BackgroundService
|
||||
|
||||
var repartoBancas = await _apiService.GetBancasAsync(authToken, provincia.DistritoId!, null, categoria.Id);
|
||||
|
||||
// --- Lógica de Verificación Explícita ---
|
||||
if (repartoBancas == null)
|
||||
if (repartoBancas?.RepartoBancas is { Count: > 0 } bancas)
|
||||
{
|
||||
// Esto ocurriría si GetBancasAsync devuelve null (ej. por un error 500 o un JsonException).
|
||||
_logger.LogWarning("La respuesta para bancas provinciales (cat: {catId}) fue nula o inválida.", categoria.Id);
|
||||
continue;
|
||||
}
|
||||
_logger.LogInformation("Se encontraron {count} registros de bancas a nivel provincial para la categoría {catId}.", bancas.Count, categoria.Id);
|
||||
hasReceivedAnyNewData = true;
|
||||
|
||||
if (repartoBancas.RepartoBancas == null)
|
||||
{
|
||||
// Esto es por si la API devuelve un JSON válido pero sin la propiedad "repartoBancas".
|
||||
_logger.LogWarning("La lista 'RepartoBancas' en la respuesta provincial (cat: {catId}) es nula.", categoria.Id);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (repartoBancas.RepartoBancas.Count > 0)
|
||||
{
|
||||
// ¡Éxito! Hemos encontrado datos.
|
||||
_logger.LogInformation("Se encontraron {count} registros de bancas a nivel provincial para la categoría {catId}.", repartoBancas.RepartoBancas.Count, categoria.Id);
|
||||
hasReceivedAnyNewData = true; // Activamos la bandera.
|
||||
|
||||
foreach (var banca in repartoBancas.RepartoBancas)
|
||||
foreach (var banca in bancas)
|
||||
{
|
||||
todasLasProyecciones.Add(new ProyeccionBanca
|
||||
{
|
||||
AmbitoGeograficoId = provincia.Id,
|
||||
AgrupacionPoliticaId = banca.IdAgrupacion,
|
||||
NroBancas = banca.NroBancas
|
||||
NroBancas = banca.NroBancas,
|
||||
CategoriaId = categoria.Id // <-- CORRECCIÓN: Se guarda la CategoriaId
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -347,16 +339,17 @@ public class LowPriorityDataWorker : BackgroundService
|
||||
if (stoppingToken.IsCancellationRequested) break;
|
||||
var repartoBancas = await _apiService.GetBancasAsync(authToken, seccion.DistritoId!, seccion.SeccionProvincialId!, categoria.Id);
|
||||
|
||||
if (repartoBancas?.RepartoBancas?.Count > 0)
|
||||
if (repartoBancas?.RepartoBancas is { Count: > 0 } bancas)
|
||||
{
|
||||
hasReceivedAnyNewData = true;
|
||||
foreach (var banca in repartoBancas.RepartoBancas)
|
||||
foreach (var banca in bancas)
|
||||
{
|
||||
todasLasProyecciones.Add(new ProyeccionBanca
|
||||
{
|
||||
AmbitoGeograficoId = seccion.Id,
|
||||
AgrupacionPoliticaId = banca.IdAgrupacion,
|
||||
NroBancas = banca.NroBancas
|
||||
NroBancas = banca.NroBancas,
|
||||
CategoriaId = categoria.Id // <-- CORRECCIÓN: Se guarda la CategoriaId
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -491,9 +484,4 @@ public class LowPriorityDataWorker : BackgroundService
|
||||
_logger.LogError(ex, "Ocurrió un error CRÍTICO en el sondeo de Telegramas.");
|
||||
}
|
||||
}
|
||||
|
||||
// Pega aquí los métodos:
|
||||
// - SincronizarCatalogosMaestrosAsync
|
||||
// - SondearProyeccionBancasAsync
|
||||
// - SondearNuevosTelegramasAsync (la versión con goteo lento)
|
||||
}
|
||||
Reference in New Issue
Block a user