<% ' Get and validate all inputs Dim modelid, serialnumber, ipaddress, fqdn, printercsfname, printerwindowsname, machineid, maptop, mapleft 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")) maptop = Trim(Request.Form("maptop")) mapleft = Trim(Request.Form("mapleft")) ' Get form inputs for new model Dim newmodelnumber, newvendorid, newmodelnotes, newmodeldocpath newmodelnumber = Trim(Request.Form("newmodelnumber")) newvendorid = Trim(Request.Form("newvendorid")) newmodelnotes = Trim(Request.Form("newmodelnotes")) newmodeldocpath = Trim(Request.Form("newmodeldocpath")) ' Get form inputs for new vendor Dim newvendorname newvendorname = Trim(Request.Form("newvendorname")) ' Validate required fields If modelid = "" Then Response.Write("
Error: Model is required.
") Response.Write("Go back") objConn.Close Response.End End If If modelid <> "new" And Not IsNumeric(modelid) Then Response.Write("
Error: Invalid model ID.
") Response.Write("Go back") objConn.Close Response.End End If If Not IsNumeric(machineid) Then Response.Write("
Error: Invalid machine ID.
") Response.Write("Go back") objConn.Close Response.End End If If serialnumber = "" Or ipaddress = "" Or printerwindowsname = "" Then Response.Write("
Error: Required fields missing.
") Response.Write("Go back") objConn.Close Response.End End If ' Validate field lengths If Len(serialnumber) > 100 Or Len(fqdn) > 255 Or Len(printercsfname) > 50 Or Len(printerwindowsname) > 255 Then Response.Write("
Error: Field length exceeded.
") Response.Write("Go back") objConn.Close Response.End End If ' Check if printer with same IP already exists Dim checkSQL, rsCheck checkSQL = "SELECT COUNT(*) as cnt FROM printers WHERE ipaddress = '" & Replace(ipaddress, "'", "''") & "' AND isactive = 1" Set rsCheck = objConn.Execute(checkSQL) If Not rsCheck.EOF 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") objConn.Close Response.End End If End If rsCheck.Close Set rsCheck = Nothing ' Handle new model creation If modelid = "new" Then If Len(newmodelnumber) = 0 Then Response.Write("
New model number is required
") Response.Write("Go back") objConn.Close Response.End End If If Len(newvendorid) = 0 Then Response.Write("
Vendor is required for new model
") Response.Write("Go back") objConn.Close Response.End End If If Len(newmodelnumber) > 255 Or Len(newmodelnotes) > 255 Or Len(newmodeldocpath) > 255 Then Response.Write("
Model field length exceeded
") Response.Write("Go back") objConn.Close Response.End End If ' Handle new vendor creation (nested) If newvendorid = "new" Then If Len(newvendorname) = 0 Then Response.Write("
New vendor name is required
") Response.Write("Go back") objConn.Close Response.End End If If Len(newvendorname) > 50 Then Response.Write("
Vendor name too long
") Response.Write("Go back") objConn.Close Response.End End If ' Escape single quotes Dim escapedVendorName escapedVendorName = Replace(newvendorname, "'", "''") ' Insert new vendor (with isprinter=1) Dim sqlNewVendor sqlNewVendor = "INSERT INTO vendors (vendor, isactive, isprinter, ispc, ismachine) " & _ "VALUES ('" & escapedVendorName & "', 1, 1, 0, 0)" On Error Resume Next objConn.Execute sqlNewVendor If Err.Number <> 0 Then Response.Write("
Error creating new vendor: " & Err.Description & "
") Response.Write("Go back") objConn.Close Response.End End If ' Get the newly created vendor ID Dim rsNewVendor Set rsNewVendor = objConn.Execute("SELECT LAST_INSERT_ID() AS newid") newvendorid = rsNewVendor("newid") rsNewVendor.Close Set rsNewVendor = Nothing On Error Goto 0 End If ' Escape single quotes for model Dim escapedModelNumber, escapedModelNotes, escapedModelDocPath escapedModelNumber = Replace(newmodelnumber, "'", "''") escapedModelNotes = Replace(newmodelnotes, "'", "''") escapedModelDocPath = Replace(newmodeldocpath, "'", "''") ' Insert new model Dim sqlNewModel sqlNewModel = "INSERT INTO models (modelnumber, vendorid, notes, documentationpath, isactive) " & _ "VALUES ('" & escapedModelNumber & "', " & newvendorid & ", '" & escapedModelNotes & "', '" & escapedModelDocPath & "', 1)" On Error Resume Next objConn.Execute sqlNewModel If Err.Number <> 0 Then Response.Write("
Error creating new model: " & Err.Description & "
") Response.Write("Go back") objConn.Close Response.End End If ' Get the newly created model ID Dim rsNewModel Set rsNewModel = objConn.Execute("SELECT LAST_INSERT_ID() AS newid") modelid = rsNewModel("newid") rsNewModel.Close Set rsNewModel = Nothing On Error Goto 0 End If ' Escape single quotes serialnumber = Replace(serialnumber, "'", "''") ipaddress = Replace(ipaddress, "'", "''") fqdn = Replace(fqdn, "'", "''") printercsfname = Replace(printercsfname, "'", "''") printerwindowsname = Replace(printerwindowsname, "'", "''") ' Build INSERT statement with map coordinates (default to 50,50 if not provided) Dim strSQL, maptopSQL, mapleftSQL ' Handle map coordinates - default to 50 if not provided If maptop <> "" And IsNumeric(maptop) Then maptopSQL = maptop Else maptopSQL = "50" End If If mapleft <> "" And IsNumeric(mapleft) Then mapleftSQL = mapleft Else mapleftSQL = "50" End If strSQL = "INSERT INTO printers (modelid, serialnumber, ipaddress, fqdn, printercsfname, printerwindowsname, machineid, maptop, mapleft, isactive) " & _ "VALUES (" & modelid & ", '" & serialnumber & "', '" & ipaddress & "', '" & fqdn & "', '" & printercsfname & "', '" & printerwindowsname & "', " & machineid & ", " & maptopSQL & ", " & mapleftSQL & ", 1)" On Error Resume Next objConn.Execute strSQL If Err.Number <> 0 Then Response.Write("
Error inserting printer: " & Err.Description & "
") Response.Write("
SQL: " & Server.HTMLEncode(strSQL) & "
") Response.Write("Go back") objConn.Close Response.End End If On Error Goto 0 ' Get the new printer ID Dim newPrinterId Set rsCheck = objConn.Execute("SELECT LAST_INSERT_ID() as newid") newPrinterId = CLng(rsCheck("newid")) rsCheck.Close Set rsCheck = Nothing objConn.Close If CLng(newPrinterId) > 0 Then %> <% Else Response.Write("Error: Printer was not added successfully.") End If %>