Files
shopdb/apiemployeesearch.asp
cproudlock 6d1cbc01c6 Add employee search autocomplete and photo display for Recognition
- Add apiemployeesearch.asp for searching employees by name with Team info
- Update addnotification.asp with autocomplete dropdown showing photo, name, team, SSO
- Support custom names for non-system employees using NAME: prefix in employeesso field
- Add theme-aware CSS for selected employee chips (light/dark themes)
- Update apishopfloor.asp to detect NAME: prefix and extract custom names
- Update shopfloor-dashboard to display employee photos (140px) with GE logo fallback

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 14:18:13 -05:00

128 lines
4.1 KiB
Plaintext

<%@ Language=VBScript %>
<%
'=============================================================================
' FILE: apiemployeesearch.asp
' PURPOSE: Search employees by name for recognition autocomplete
' RETURNS: JSON array of matching employees with SSO, name, and picture
' USAGE: apiemployeesearch.asp?q=john&limit=10
'=============================================================================
Response.ContentType = "application/json"
Response.Charset = "UTF-8"
Response.AddHeader "Access-Control-Allow-Origin", "*"
Response.AddHeader "Cache-Control", "no-cache, no-store, must-revalidate"
%>
<!--#include file="./includes/sql.asp"-->
<%
On Error Resume Next
Dim searchTerm, maxResults
searchTerm = Trim(Request.QueryString("q"))
maxResults = Request.QueryString("limit")
If maxResults = "" Or Not IsNumeric(maxResults) Then
maxResults = 10
Else
maxResults = CLng(maxResults)
If maxResults > 50 Then maxResults = 50
If maxResults < 1 Then maxResults = 10
End If
' Validate search term
If Len(searchTerm) < 2 Then
Response.Write "{""success"":false,""error"":""Search term must be at least 2 characters"",""results"":[]}"
Response.End
End If
' Connect to employee database
Dim empConn, empCmd, empRs
Set empConn = Server.CreateObject("ADODB.Connection")
empConn.ConnectionString = GetEmployeeConnectionString()
empConn.Open
If Err.Number <> 0 Then
Response.Write "{""success"":false,""error"":""" & JSEscape(Err.Description) & """,""results"":[]}"
Response.End
End If
' Search by first name, last name, or full name
' Using parameterized query with LIKE
Set empCmd = Server.CreateObject("ADODB.Command")
empCmd.ActiveConnection = empConn
empCmd.CommandText = "SELECT SSO, First_Name, Last_Name, Team, Picture FROM employees " & _
"WHERE First_Name LIKE ? OR Last_Name LIKE ? " & _
"OR CONCAT(First_Name, ' ', Last_Name) LIKE ? " & _
"ORDER BY Last_Name, First_Name LIMIT ?"
empCmd.CommandType = 1
Dim searchPattern
searchPattern = "%" & searchTerm & "%"
empCmd.Parameters.Append empCmd.CreateParameter("@first", 200, 1, 100, searchPattern)
empCmd.Parameters.Append empCmd.CreateParameter("@last", 200, 1, 100, searchPattern)
empCmd.Parameters.Append empCmd.CreateParameter("@full", 200, 1, 100, searchPattern)
empCmd.Parameters.Append empCmd.CreateParameter("@limit", 3, 1, , maxResults)
Set empRs = empCmd.Execute()
If Err.Number <> 0 Then
Response.Write "{""success"":false,""error"":""" & JSEscape(Err.Description) & """,""results"":[]}"
empConn.Close
Response.End
End If
' Build JSON response
Dim jsonOutput, isFirst
jsonOutput = "{""success"":true,""results"":["
isFirst = True
Do While Not empRs.EOF
If Not isFirst Then jsonOutput = jsonOutput & ","
isFirst = False
Dim sso, firstName, lastName, team, picture, fullName
sso = empRs("SSO") & ""
firstName = empRs("First_Name") & ""
lastName = empRs("Last_Name") & ""
team = empRs("Team") & ""
picture = empRs("Picture") & ""
fullName = firstName & " " & lastName
jsonOutput = jsonOutput & "{"
jsonOutput = jsonOutput & """sso"":""" & JSEscape(sso) & ""","
jsonOutput = jsonOutput & """firstName"":""" & JSEscape(firstName) & ""","
jsonOutput = jsonOutput & """lastName"":""" & JSEscape(lastName) & ""","
jsonOutput = jsonOutput & """team"":""" & JSEscape(team) & ""","
jsonOutput = jsonOutput & """fullName"":""" & JSEscape(fullName) & ""","
jsonOutput = jsonOutput & """picture"":""" & JSEscape(picture) & """"
jsonOutput = jsonOutput & "}"
empRs.MoveNext
Loop
jsonOutput = jsonOutput & "]}"
empRs.Close
empConn.Close
Set empRs = Nothing
Set empCmd = Nothing
Set empConn = Nothing
Response.Write jsonOutput
Function JSEscape(s)
If IsNull(s) Then
JSEscape = ""
Exit Function
End If
Dim r
r = s & ""
r = Replace(r, "\", "\\")
r = Replace(r, """", "\""")
r = Replace(r, Chr(13), "")
r = Replace(r, Chr(10), "\n")
r = Replace(r, Chr(9), "\t")
JSEscape = r
End Function
%>