<% ' Initialize error handling Call InitializeErrorHandling("savemodel.asp") ' Get and validate all inputs Dim modelnumber, vendorid, notes, documentationpath Dim newvendorname, isprinter, ispc, ismachine Dim modelisprinter, modelispc, modelismachine modelnumber = Trim(Request.Form("modelnumber")) vendorid = Trim(Request.Form("vendorid")) notes = Trim(Request.Form("notes")) documentationpath = Trim(Request.Form("documentationpath")) ' New vendor fields newvendorname = Trim(Request.Form("newvendorname")) isprinter = Request.Form("isprinter") ispc = Request.Form("ispc") ismachine = Request.Form("ismachine") ' Model type checkboxes (NOTE: these are different from vendor checkboxes above) modelisprinter = Request.Form("modelisprinter") modelispc = Request.Form("modelispc") modelismachine = Request.Form("modelismachine") ' Validate required fields If modelnumber = "" Then Call HandleValidationError("addmodel.asp", "INVALID_INPUT") End If ' Validate field lengths If Len(modelnumber) > 255 Then Call HandleValidationError("addmodel.asp", "INVALID_INPUT") End If If Len(notes) > 255 Then Call HandleValidationError("addmodel.asp", "INVALID_INPUT") End If If Len(documentationpath) > 255 Then Call HandleValidationError("addmodel.asp", "INVALID_INPUT") End If ' Check if we need to create a new vendor first If vendorid = "new" Then If newvendorname = "" Then Response.Write("
Error: Manufacturer name is required when adding a new manufacturer.
") Response.Write("Go back") Call CleanupResources() Response.End End If If Len(newvendorname) > 50 Then Call HandleValidationError("addmodel.asp", "INVALID_INPUT") End If ' Check if vendor already exists Dim checkSQL, rsCheck checkSQL = "SELECT COUNT(*) as cnt FROM vendors WHERE LOWER(vendor) = LOWER(?)" Set rsCheck = ExecuteParameterizedQuery(objConn, checkSQL, Array(newvendorname)) If rsCheck("cnt") > 0 Then rsCheck.Close Set rsCheck = Nothing Response.Write("
Error: Manufacturer '" & Server.HTMLEncode(newvendorname) & "' already exists.
") Response.Write("Go back") Call CleanupResources() Response.End End If rsCheck.Close Set rsCheck = Nothing ' Insert new vendor Dim vendorSQL vendorSQL = "INSERT INTO vendors (vendor, isactive, isprinter, ispc, ismachine) VALUES (?, 1, ?, ?, ?)" Dim vendorParams vendorParams = Array(newvendorname, _ IIf(isprinter = "1", 1, 0), _ IIf(ispc = "1", 1, 0), _ IIf(ismachine = "1", 1, 0)) Call ExecuteParameterizedUpdate(objConn, vendorSQL, vendorParams) ' Get the new vendor ID Set rsCheck = objConn.Execute("SELECT LAST_INSERT_ID() as newid") vendorid = rsCheck("newid") rsCheck.Close Set rsCheck = Nothing Else ' Validate existing vendor ID If Not ValidateID(vendorid) Then Call HandleValidationError("addmodel.asp", "INVALID_ID") End If End If ' Now we need to update the vendor's type flags based on model type selection ' If model is for printer, ensure vendor.isprinter = 1, etc. If modelisprinter = "1" OR modelispc = "1" OR modelismachine = "1" Then Dim updateVendorSQL updateVendorSQL = "UPDATE vendors SET " Dim updateParts() ReDim updateParts(-1) If modelisprinter = "1" Then ReDim Preserve updateParts(UBound(updateParts) + 1) updateParts(UBound(updateParts)) = "isprinter = 1" End If If modelispc = "1" Then ReDim Preserve updateParts(UBound(updateParts) + 1) updateParts(UBound(updateParts)) = "ispc = 1" End If If modelismachine = "1" Then ReDim Preserve updateParts(UBound(updateParts) + 1) updateParts(UBound(updateParts)) = "ismachine = 1" End If If UBound(updateParts) >= 0 Then updateVendorSQL = updateVendorSQL & Join(updateParts, ", ") & " WHERE vendorid = ?" Call ExecuteParameterizedUpdate(objConn, updateVendorSQL, Array(vendorid)) End If End If ' Check if model already exists for this vendor checkSQL = "SELECT COUNT(*) as cnt FROM models WHERE LOWER(modelnumber) = LOWER(?) AND vendorid = ?" Set rsCheck = ExecuteParameterizedQuery(objConn, checkSQL, Array(modelnumber, vendorid)) If rsCheck("cnt") > 0 Then rsCheck.Close Set rsCheck = Nothing Response.Write("
Error: Model '" & Server.HTMLEncode(modelnumber) & "' already exists for this manufacturer.
") Response.Write("Go back") Call CleanupResources() Response.End End If rsCheck.Close Set rsCheck = Nothing ' Insert the new model Dim modelSQL, modelParams modelSQL = "INSERT INTO models (modelnumber, vendorid, notes, documentationpath, isactive) VALUES (?, ?, ?, ?, 1)" modelParams = Array(modelnumber, vendorid, notes, documentationpath) Dim recordsAffected recordsAffected = ExecuteParameterizedUpdate(objConn, modelSQL, modelParams) ' Get the new model ID Dim newModelId Set rsCheck = objConn.Execute("SELECT LAST_INSERT_ID() as newid") newModelId = rsCheck("newid") rsCheck.Close Set rsCheck = Nothing ' Cleanup resources Call CleanupResources() ' Redirect back to where they came from or to a success page If recordsAffected > 0 And newModelId > 0 Then Response.Write("
Model added successfully!
") Response.Write("

Model '" & Server.HTMLEncode(modelnumber) & "' has been added.

") Response.Write("

Add Another Model ") Response.Write("Add Printer ") Response.Write("Add Machine

") Else Response.Write("
Error: Model was not added successfully.
") Response.Write("Go back") End If %>