Fix AsociarUsuario
This commit is contained in:
@@ -236,23 +236,20 @@ namespace Inventario.API.Controllers
|
|||||||
public async Task<IActionResult> AsociarUsuario(string hostname, [FromBody] AsociacionUsuarioDto dto)
|
public async Task<IActionResult> AsociarUsuario(string hostname, [FromBody] AsociacionUsuarioDto dto)
|
||||||
{
|
{
|
||||||
var query = @"
|
var query = @"
|
||||||
INSERT INTO dbo.usuarios_equipos (equipo_id, usuario_id, origen)
|
INSERT INTO dbo.usuarios_equipos (equipo_id, usuario_id, origen)
|
||||||
SELECT e.id, u.id, 'automatica'
|
SELECT e.id, u.id, 'automatica'
|
||||||
FROM dbo.equipos e, dbo.usuarios u
|
FROM dbo.equipos e, dbo.usuarios u
|
||||||
WHERE e.Hostname = @Hostname AND u.Username = @Username;";
|
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())
|
using (var connection = _context.CreateConnection())
|
||||||
{
|
{
|
||||||
try
|
await connection.ExecuteAsync(query, new { Hostname = hostname, dto.Username });
|
||||||
{
|
return Ok(new { success = true, message = "Asociación asegurada." });
|
||||||
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.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user