fetch("SELECT id, slug FROM roles WHERE id = ?", [$roleId]); if (!$role) jsonError('Rol no encontrado', 404); $roleSlug = $role['slug']; // Si el rol es enfermero y no hay enfermera_id, buscar si tiene ya uno vinculado // (se puede crear sin vincular y vincularlo después desde la pantalla de Enfermeras) if ($id) { // ── Actualizar ────────────────────────────────────────── $existing = $db->fetch("SELECT id, username FROM admin_users WHERE id = ?", [$id]); if (!$existing) jsonError('Usuario no encontrado', 404); // Verificar duplicado de username (excluir el propio) $dup = $db->fetch("SELECT id FROM admin_users WHERE username = ? AND id != ?", [$username, $id]); if ($dup) jsonError('Ese nombre de usuario ya está en uso'); $params = [$username, $fullName, $email ?: null, $roleId, $roleSlug, $isActive, $enfermeraId, $id]; $sql = "UPDATE admin_users SET username=?, full_name=?, email=?, role_id=?, role=?, is_active=?, enfermera_id=?, updated_at=NOW() WHERE id=?"; if ($password) { if (strlen($password) < 6) jsonError('La contraseña debe tener al menos 6 caracteres'); $hash = password_hash($password, PASSWORD_BCRYPT); $sql = "UPDATE admin_users SET username=?, full_name=?, email=?, role_id=?, role=?, is_active=?, enfermera_id=?, password_hash=?, updated_at=NOW() WHERE id=?"; $params = [$username, $fullName, $email ?: null, $roleId, $roleSlug, $isActive, $enfermeraId, $hash, $id]; } $db->query($sql, $params); jsonOk(['id' => $id], 'Usuario actualizado correctamente'); } else { // ── Crear ──────────────────────────────────────────────── if (!$password) jsonError('La contraseña es obligatoria al crear un usuario'); if (strlen($password) < 6) jsonError('La contraseña debe tener al menos 6 caracteres'); $dup = $db->fetch("SELECT id FROM admin_users WHERE username = ?", [$username]); if ($dup) jsonError('Ese nombre de usuario ya está en uso'); $hash = password_hash($password, PASSWORD_BCRYPT); $db->query( "INSERT INTO admin_users (username, full_name, email, password_hash, role_id, role, is_active, enfermera_id) VALUES (?,?,?,?,?,?,?,?)", [$username, $fullName, $email ?: null, $hash, $roleId, $roleSlug, $isActive, $enfermeraId] ); $newId = $db->lastInsertId(); jsonOk(['id' => $newId], 'Usuario creado correctamente'); }