<%
' Initialize error handling
Call InitializeErrorHandling("saveprinter.asp")
' Get and validate all inputs
Dim modelid, serialnumber, ipaddress, fqdn, printercsfname, printerwindowsname, machineid
modelid = Trim(Request.Form("modelid"))
serialnumber = Trim(Request.Form("serialnumber"))
ipaddress = Trim(Request.Form("ipaddress"))
fqdn = Trim(Request.Form("fqdn"))
printercsfname = Trim(Request.Form("printercsfname"))
printerwindowsname = Trim(Request.Form("printerwindowsname"))
machineid = Trim(Request.Form("machineid"))
' Validate required fields
If Not ValidateID(modelid) Then
Call HandleValidationError("addprinter.asp", "INVALID_ID")
End If
If Not ValidateID(machineid) Then
Call HandleValidationError("addprinter.asp", "INVALID_ID")
End If
If serialnumber = "" Then
Call HandleValidationError("addprinter.asp", "INVALID_INPUT")
End If
If ipaddress = "" Then
Call HandleValidationError("addprinter.asp", "INVALID_INPUT")
End If
If printerwindowsname = "" Then
Call HandleValidationError("addprinter.asp", "INVALID_INPUT")
End If
' Validate IP address format
If Not ValidateIPAddress(ipaddress) Then
Call HandleValidationError("addprinter.asp", "INVALID_IP")
End If
' Validate serial number format
If Not ValidateSerialNumber(serialnumber) Then
Call HandleValidationError("addprinter.asp", "INVALID_SERIAL")
End If
' Validate field lengths
If Len(serialnumber) > 100 Then
Call HandleValidationError("addprinter.asp", "INVALID_INPUT")
End If
If Len(fqdn) > 255 Then
Call HandleValidationError("addprinter.asp", "INVALID_INPUT")
End If
If Len(printercsfname) > 50 Then
Call HandleValidationError("addprinter.asp", "INVALID_INPUT")
End If
If Len(printerwindowsname) > 255 Then
Call HandleValidationError("addprinter.asp", "INVALID_INPUT")
End If
' Check if printer with same IP already exists
Dim checkSQL, rsCheck
checkSQL = "SELECT COUNT(*) as cnt FROM printers WHERE ipaddress = ? AND isactive = 1"
Set rsCheck = ExecuteParameterizedQuery(objConn, checkSQL, Array(ipaddress))
If Not rsCheck.EOF Then
If Not IsNull(rsCheck("cnt")) Then
If CLng(rsCheck("cnt")) > 0 Then
rsCheck.Close
Set rsCheck = Nothing
Response.Write("
Error: A printer with IP address '" & Server.HTMLEncode(ipaddress) & "' already exists.
")
Response.Write("
Go back")
Call CleanupResources()
Response.End
End If
End If
End If
rsCheck.Close
Set rsCheck = Nothing
' Execute parameterized INSERT query
strSQL = "INSERT INTO printers (modelid, serialnumber, ipaddress, fqdn, printercsfname, printerwindowsname, machineid, isactive) " &_
"VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
Dim recordsAffected
recordsAffected = ExecuteParameterizedInsert(objConn, strSQL, Array(modelid, serialnumber, ipaddress, fqdn, printercsfname, printerwindowsname, machineid, 1))
' Get the new printer ID
Dim newPrinterId
Set rsCheck = objConn.Execute("SELECT LAST_INSERT_ID() as newid")
newPrinterId = 0
If Not rsCheck.EOF Then
If Not IsNull(rsCheck("newid")) Then
newPrinterId = CLng(rsCheck("newid"))
End If
End If
rsCheck.Close
Set rsCheck = Nothing
' Cleanup resources
Call CleanupResources()
' Redirect to display page
If recordsAffected > 0 And newPrinterId > 0 Then
%>
<%
Else
Response.Write("Error: Printer was not added successfully.")
End If
%>