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