%
' displaypcs.asp - PC List Page (Phase 2 Schema) - Last Updated: 20251110-1440
theme = Request.Cookies("theme")
IF theme = "" THEN
theme="bg-theme1"
END IF
%>
<%
Dim currentPCStatus, recentFilter, deviceTypeFilter, sel
currentPCStatus = Request.QueryString("pcstatus")
recentFilter = Request.QueryString("recent")
deviceTypeFilter = Request.QueryString("devicetype")
' Check for specialized PCs (CMM, Wax Trace, Measuring Tool) without equipment relationships
Dim rsUnlinked, unlinkedCount
unlinkedCount = 0
Set rsUnlinked = objConn.Execute("SELECT COUNT(*) as cnt FROM machines m " & _
"WHERE m.machinetypeid IN (41, 42, 43) AND m.isactive = 1 " & _
"AND NOT EXISTS (SELECT 1 FROM machinerelationships mr WHERE (mr.machineid = m.machineid OR mr.related_machineid = m.machineid) AND mr.relationshiptypeid = 3 AND mr.isactive = 1)")
If Not rsUnlinked.EOF Then
unlinkedCount = CLng(rsUnlinked("cnt") & "")
End If
rsUnlinked.Close
Set rsUnlinked = Nothing
If unlinkedCount > 0 Then
%>
<%=unlinkedCount%> specialized PC(s) (CMM, Wax Trace, or Measuring Tool) need equipment relationships.
View them
<%
End If
%>
<% If currentPCStatus <> "" Or recentFilter <> "" Or deviceTypeFilter <> "" Or Request.QueryString("needsrelationship") <> "" Then %>
Clear
<% End If %>
Hostname
Serial
Model
OS
Equipment
VNC
WinRM
<%
' Build query based on filters
Dim pcStatusFilter, recentDaysFilter, deviceTypeFilterSQL, needsRelationshipFilter, whereClause
Dim displayName, hasVnc, vncHost, hasWinrm
pcStatusFilter = Request.QueryString("pcstatus")
recentDaysFilter = Request.QueryString("recent")
deviceTypeFilterSQL = Request.QueryString("devicetype")
needsRelationshipFilter = Request.QueryString("needsrelationship")
' Base query with LEFT JOINs to show all PCs
strSQL = "SELECT m.machineid, m.hostname, m.serialnumber, m.machinenumber, m.machinestatusid, " & _
"m.modelnumberid, m.osid, m.loggedinuser, m.lastupdated, m.isvnc, m.iswinrm, " & _
"vendors.vendor, models.modelnumber, operatingsystems.operatingsystem, " & _
"c.address AS ipaddress, c.macaddress, " & _
"machinestatus.machinestatus, " & _
"eq.machineid AS equipment_id, eq.machinenumber AS equipment_number " & _
"FROM machines m " & _
"LEFT JOIN models ON m.modelnumberid = models.modelnumberid " & _
"LEFT JOIN vendors ON models.vendorid = vendors.vendorid " & _
"LEFT JOIN operatingsystems ON m.osid = operatingsystems.osid " & _
"LEFT JOIN communications c ON c.machineid = m.machineid AND c.isprimary = 1 " & _
"LEFT JOIN machinestatus ON m.machinestatusid = machinestatus.machinestatusid " & _
"LEFT JOIN machinerelationships mr ON (mr.machineid = m.machineid OR mr.related_machineid = m.machineid) AND mr.isactive = 1 AND mr.relationshiptypeid = 3 " & _
"LEFT JOIN machines eq ON (eq.machineid = mr.related_machineid OR eq.machineid = mr.machineid) AND eq.machineid <> m.machineid AND eq.machinetypeid < 33 " & _
"WHERE m.isactive = 1 AND m.machinetypeid IN (33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43)"
' Apply filters
whereClause = ""
If pcStatusFilter <> "" Then
whereClause = whereClause & "AND m.machinestatusid = " & pcStatusFilter & " "
End If
If recentDaysFilter <> "" And IsNumeric(recentDaysFilter) Then
whereClause = whereClause & "AND m.lastupdated >= DATE_SUB(NOW(), INTERVAL " & recentDaysFilter & " DAY) "
End If
' Filter by device type (laptop vs desktop) based on model name patterns
If deviceTypeFilterSQL = "laptop" Then
whereClause = whereClause & "AND (models.modelnumber LIKE '%Latitude%' OR models.modelnumber LIKE '%Precision%' AND (models.modelnumber NOT LIKE '%Tower%')) "
ElseIf deviceTypeFilterSQL = "desktop" Then
whereClause = whereClause & "AND (models.modelnumber LIKE '%OptiPlex%' OR models.modelnumber LIKE '%Tower%' OR models.modelnumber LIKE '%Micro%') "
End If
' Filter for specialized PCs needing equipment relationships
If needsRelationshipFilter = "1" Then
whereClause = whereClause & "AND m.machinetypeid IN (41, 42, 43) " & _
"AND NOT EXISTS (SELECT 1 FROM machinerelationships mr WHERE (mr.machineid = m.machineid OR mr.related_machineid = m.machineid) AND mr.relationshiptypeid = 3 AND mr.isactive = 1) "
End If
strSQL = strSQL & whereClause & "GROUP BY m.machineid ORDER BY m.machinenumber ASC, m.hostname ASC"
set rs = objconn.Execute(strSQL)
while not rs.eof
%>
<%
' VNC column with link
hasVnc = False
If Not IsNull(rs("isvnc")) Then
If rs("isvnc") = True Or rs("isvnc") = 1 Or rs("isvnc") = -1 Then
hasVnc = True
End If
End If
If hasVnc And Not IsNull(rs("hostname")) And rs("hostname") <> "" Then
vncHost = rs("hostname") & ".logon.ds.ge.com"
Response.Write("VNC")
ElseIf hasVnc Then
Response.Write("VNC")
Else
Response.Write("-")
End If
%>
<%
' WinRM column
hasWinrm = False
If Not IsNull(rs("iswinrm")) Then
If rs("iswinrm") = True Or rs("iswinrm") = 1 Or rs("iswinrm") = -1 Then
hasWinrm = True
End If
End If
If hasWinrm Then
Response.Write("WinRM")
Else
Response.Write("-")
End If
%>