Fix Overrides Candidatos
This commit is contained in:
		| @@ -252,11 +252,10 @@ public class AdminController : ControllerBase | ||||
|   /// Guarda (actualiza o crea) una lista de overrides de candidatos. | ||||
|   /// </summary> | ||||
|   [HttpPut("candidatos")] | ||||
|   public async Task<IActionResult> UpdateCandidatos([FromBody] List<CandidatoOverride> candidatos) | ||||
|   public async Task<IActionResult> UpdateCandidatos([FromBody] List<UpdateCandidatoDto> candidatos) | ||||
|   { | ||||
|     foreach (var candidatoDto in candidatos) | ||||
|     { | ||||
|       // Buscamos un override existente basado en la combinación única | ||||
|       var candidatoExistente = await _dbContext.CandidatosOverrides | ||||
|           .FirstOrDefaultAsync(c => | ||||
|               c.AgrupacionPoliticaId == candidatoDto.AgrupacionPoliticaId && | ||||
| @@ -265,18 +264,24 @@ public class AdminController : ControllerBase | ||||
|  | ||||
|       if (candidatoExistente != null) | ||||
|       { | ||||
|         // Si existe y el nombre es diferente, lo actualizamos. | ||||
|         if (candidatoExistente.NombreCandidato != candidatoDto.NombreCandidato) | ||||
|         // El registro ya existe | ||||
|         if (string.IsNullOrWhiteSpace(candidatoDto.NombreCandidato)) | ||||
|         { | ||||
|           // El usuario envió un nombre vacío -> Eliminar el registro | ||||
|           _dbContext.CandidatosOverrides.Remove(candidatoExistente); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|           // El usuario envió un nombre válido -> Actualizar | ||||
|           candidatoExistente.NombreCandidato = candidatoDto.NombreCandidato; | ||||
|         } | ||||
|       } | ||||
|       else | ||||
|       { | ||||
|         // Si no se encontró un registro exacto, lo añadimos a la base de datos, | ||||
|         // pero solo si el nombre del candidato no está vacío. | ||||
|         // El registro no existe | ||||
|         if (!string.IsNullOrWhiteSpace(candidatoDto.NombreCandidato)) | ||||
|         { | ||||
|           // El usuario envió un nombre válido -> Crear nuevo registro | ||||
|           _dbContext.CandidatosOverrides.Add(new CandidatoOverride | ||||
|           { | ||||
|             AgrupacionPoliticaId = candidatoDto.AgrupacionPoliticaId, | ||||
| @@ -285,27 +290,11 @@ public class AdminController : ControllerBase | ||||
|             NombreCandidato = candidatoDto.NombreCandidato | ||||
|           }); | ||||
|         } | ||||
|         // Si no existe y el nombre está vacío, no hacemos nada. | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     // También necesitamos manejar los casos donde se borra un nombre (se envía un string vacío) | ||||
|     var overridesAEliminar = await _dbContext.CandidatosOverrides | ||||
|         .Where(c => candidatos.Any(dto => | ||||
|             dto.AgrupacionPoliticaId == c.AgrupacionPoliticaId && | ||||
|             dto.CategoriaId == c.CategoriaId && | ||||
|             dto.AmbitoGeograficoId == c.AmbitoGeograficoId && | ||||
|             string.IsNullOrWhiteSpace(dto.NombreCandidato) | ||||
|         )) | ||||
|         .ToListAsync(); | ||||
|  | ||||
|     if (overridesAEliminar.Any()) | ||||
|     { | ||||
|       _dbContext.CandidatosOverrides.RemoveRange(overridesAEliminar); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     await _dbContext.SaveChangesAsync(); | ||||
|     _logger.LogInformation("Se procesaron {Count} overrides de candidatos.", candidatos.Count); | ||||
|     return NoContent(); // Respuesta estándar para un PUT exitoso | ||||
|     return NoContent(); | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user