From 527839dd6deeb2314e8edc9f7f83edc264a0ea61 Mon Sep 17 00:00:00 2001 From: dmolinari Date: Sat, 16 Aug 2025 11:02:23 -0300 Subject: [PATCH] Fix Worker - Categorias --- Elecciones-Web/src/Elecciones.Worker/Worker.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Elecciones-Web/src/Elecciones.Worker/Worker.cs b/Elecciones-Web/src/Elecciones.Worker/Worker.cs index 874e94d..9bd5bf1 100644 --- a/Elecciones-Web/src/Elecciones.Worker/Worker.cs +++ b/Elecciones-Web/src/Elecciones.Worker/Worker.cs @@ -174,16 +174,27 @@ public class Worker : BackgroundService var categoriasApi = await _apiService.GetCategoriasAsync(_authToken); if (categoriasApi is { Count: > 0 }) { + // Primero, nos aseguramos de procesar solo IDs de categoría únicos desde la API + // para evitar conflictos de seguimiento en Entity Framework. + var distinctCategoriasApi = categoriasApi + .GroupBy(c => c.CategoriaId) + .Select(g => g.First()) // Tomamos la primera aparición de cada ID único + .ToList(); + var categoriasEnDb = await dbContext.CategoriasElectorales.ToDictionaryAsync(c => c.Id, c => c, stoppingToken); - foreach (var categoriaDto in categoriasApi) + + // Ahora iteramos sobre la lista depurada + foreach (var categoriaDto in distinctCategoriasApi) { if (categoriasEnDb.TryGetValue(categoriaDto.CategoriaId, out var categoriaExistente)) { + // La categoría ya existe, actualizamos sus datos categoriaExistente.Nombre = categoriaDto.Nombre; categoriaExistente.Orden = categoriaDto.Orden; } else { + // La categoría es nueva, la añadimos await dbContext.CategoriasElectorales.AddAsync(new CategoriaElectoral { Id = categoriaDto.CategoriaId,