<%@ Language=VBScript %>
<%
Option Explicit
%>
<!--#include file="./includes/sql.asp"-->
<!--#include file="./includes/validation.asp"-->
<!--#include file="./includes/encoding.asp"-->
<!--#include file="./includes/error_handler.asp"-->
<!--#include file="./includes/db_helpers.asp"-->
<%
'=============================================================================
' FILE: editapplication.asp
' PURPOSE: Update an existing application record
'
' PARAMETERS:
'   appid (Form, Required) - Integer ID of application to update
'   appname (Form, Required) - Application name (1-50 chars)
'   appdescription (Form, Optional) - Description (max 255 chars)
'   supportteamid (Form, Required) - Support team ID
'   applicationnotes (Form, Optional) - Notes (max 512 chars)
'   installpath (Form, Optional) - Installation path/URL (max 255 chars)
'   documentationpath (Form, Optional) - Documentation path/URL (max 512 chars)
'   image (Form, Optional) - Image filename (max 255 chars)
'   isinstallable, isactive, ishidden, isprinter, islicenced (Form, Optional) - Checkboxes (0/1)
'
' SECURITY:
'   - Uses parameterized queries
'   - Validates all inputs
'   - HTML encodes outputs
'
' AUTHOR: Claude Code
' CREATED: 2025-10-12
'=============================================================================

'-----------------------------------------------------------------------------
' INITIALIZATION
'-----------------------------------------------------------------------------
Call InitializeErrorHandling("editapplication.asp")

' Get and validate required inputs
Dim appid, appname, appdescription, supportteamid
Dim applicationnotes, installpath, documentationpath, image
Dim isinstallable, isactive, ishidden, isprinter, islicenced

appid = Trim(Request.Form("appid"))
appname = Trim(Request.Form("appname"))
appdescription = Trim(Request.Form("appdescription"))
supportteamid = Trim(Request.Form("supportteamid"))
applicationnotes = Trim(Request.Form("applicationnotes"))
installpath = Trim(Request.Form("installpath"))
documentationpath = Trim(Request.Form("documentationpath"))
image = Trim(Request.Form("image"))

' Checkboxes - convert to bit values
If Request.Form("isinstallable") = "1" Then
	isinstallable = 1
Else
	isinstallable = 0
End If

If Request.Form("isactive") = "1" Then
	isactive = 1
Else
	isactive = 0
End If

If Request.Form("ishidden") = "1" Then
	ishidden = 1
Else
	ishidden = 0
End If

If Request.Form("isprinter") = "1" Then
	isprinter = 1
Else
	isprinter = 0
End If

If Request.Form("islicenced") = "1" Then
	islicenced = 1
Else
	islicenced = 0
End If

'-----------------------------------------------------------------------------
' VALIDATE INPUTS
'-----------------------------------------------------------------------------

' Validate appid
If Not ValidateID(appid) Then
	Call HandleValidationError("displayapplications.asp", "INVALID_ID")
End If

' Verify the application exists - DISABLED DUE TO CACHING ISSUE
' If Not RecordExists(objConn, "applications", "appid", appid) Then
' 	Call HandleValidationError("displayapplications.asp", "NOT_FOUND")
' End If

' Validate appname (required, 1-50 chars)
If Len(appname) < 1 Or Len(appname) > 50 Then
	Call HandleValidationError("displayapplication.asp?appid=" & appid, "INVALID_INPUT")
End If

' Validate supportteamid
If Not ValidateID(supportteamid) Then
	Call HandleValidationError("displayapplication.asp?appid=" & appid, "INVALID_ID")
End If

' Verify support team exists - DISABLED DUE TO CACHING ISSUE
' If Not RecordExists(objConn, "supportteams", "supporteamid", supportteamid) Then
' 	Call HandleValidationError("displayapplication.asp?appid=" & appid, "INVALID_INPUT")
' End If

' Validate field lengths
If Len(appdescription) > 255 Then
	Call HandleValidationError("displayapplication.asp?appid=" & appid, "INVALID_INPUT")
End If

If Len(applicationnotes) > 512 Then
	Call HandleValidationError("displayapplication.asp?appid=" & appid, "INVALID_INPUT")
End If

If Len(installpath) > 255 Then
	Call HandleValidationError("displayapplication.asp?appid=" & appid, "INVALID_INPUT")
End If

If Len(documentationpath) > 512 Then
	Call HandleValidationError("displayapplication.asp?appid=" & appid, "INVALID_INPUT")
End If

If Len(image) > 255 Then
	Call HandleValidationError("displayapplication.asp?appid=" & appid, "INVALID_INPUT")
End If

'-----------------------------------------------------------------------------
' DATABASE UPDATE
'-----------------------------------------------------------------------------

Dim strSQL
strSQL = "UPDATE applications SET " & _
         "appname = ?, " & _
         "appdescription = ?, " & _
         "supportteamid = ?, " & _
         "applicationnotes = ?, " & _
         "installpath = ?, " & _
         "documentationpath = ?, " & _
         "image = ?, " & _
         "isinstallable = ?, " & _
         "isactive = ?, " & _
         "ishidden = ?, " & _
         "isprinter = ?, " & _
         "islicenced = ? " & _
         "WHERE appid = ?"

Dim recordsAffected
recordsAffected = ExecuteParameterizedUpdate(objConn, strSQL, Array( _
	appname, _
	appdescription, _
	supportteamid, _
	applicationnotes, _
	installpath, _
	documentationpath, _
	image, _
	isinstallable, _
	isactive, _
	ishidden, _
	isprinter, _
	islicenced, _
	appid _
))

Call CheckForErrors()

'-----------------------------------------------------------------------------
' CLEANUP AND REDIRECT
'-----------------------------------------------------------------------------
Call CleanupResources()

If recordsAffected > 0 Then
	Response.Redirect("displayapplication.asp?appid=" & Server.URLEncode(appid))
Else
	Response.Write("<html><body>")
	Response.Write("<h3>Error: No records were updated.</h3>")
	Response.Write("<p><a href='displayapplication.asp?appid=" & Server.HTMLEncode(appid) & "'>Go Back</a></p>")
	Response.Write("</body></html>")
End If
%>
