From 15d44aaf58abf0bcb055eaca5318966858fbe5bc Mon Sep 17 00:00:00 2001 From: dmolinari Date: Wed, 8 Oct 2025 14:46:27 -0300 Subject: [PATCH] Fix AsociarUsuario --- backend/Controllers/EquiposController.cs | 25 +++++++++++------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/backend/Controllers/EquiposController.cs b/backend/Controllers/EquiposController.cs index 94a66f7..1137b94 100644 --- a/backend/Controllers/EquiposController.cs +++ b/backend/Controllers/EquiposController.cs @@ -236,23 +236,20 @@ namespace Inventario.API.Controllers public async Task AsociarUsuario(string hostname, [FromBody] AsociacionUsuarioDto dto) { var query = @" - INSERT INTO dbo.usuarios_equipos (equipo_id, usuario_id, origen) - SELECT e.id, u.id, 'automatica' - FROM dbo.equipos e, dbo.usuarios u - WHERE e.Hostname = @Hostname AND u.Username = @Username;"; + INSERT INTO dbo.usuarios_equipos (equipo_id, usuario_id, origen) + SELECT e.id, u.id, 'automatica' + FROM dbo.equipos e, dbo.usuarios u + WHERE e.Hostname = @Hostname AND u.Username = @Username + AND NOT EXISTS ( + SELECT 1 + FROM dbo.usuarios_equipos ue + WHERE ue.equipo_id = e.id AND ue.usuario_id = u.id + );"; using (var connection = _context.CreateConnection()) { - try - { - var filasAfectadas = await connection.ExecuteAsync(query, new { Hostname = hostname, dto.Username }); - if (filasAfectadas == 0) return NotFound("Equipo o usuario no encontrado."); - return Ok(new { success = true }); - } - catch (SqlException ex) when (ex.Number == 2627) // Error de clave primaria duplicada - { - return Conflict("El usuario ya está asociado a este equipo."); - } + await connection.ExecuteAsync(query, new { Hostname = hostname, dto.Username }); + return Ok(new { success = true, message = "Asociación asegurada." }); } }