<%@LANGUAGE="VBSCRIPT"%> <% '===================================================== ' Update Issues State ' --- PROCESS FORM --- '===================================================== %> <% Option explicit ' Good idea to set when using redirect Response.Expires = 0 ' always load the page, dont store %> <% ' Set rfile parameter. This is a return page after Login Call objPMod.StoreParameter ( "rfile", "fixed_issues.asp" ) '------------ ACCESS CONTROL ------------------ %> <% '------------ Variable Definition ------------- Dim parPv_id Dim parFRfixed '------------ Constants Declaration ----------- '------------ Variable Init ------------------- parPv_id = QStrPar("pv_id") parRtag_id = QStrPar("rtag_id") parFRfixed = Request("FRfixed") '---------------------------------------------- %> <% '----------------------------------------------------------------------------------------------------------------------------- Sub GetOldIssueStates ( nPvId, ByRef outobjOldIssStates ) Dim rsQry, query query = _ " SELECT cqi.ISS_DB ||'.'|| cqi.ISS_ID AS iss_db_id,"&_ " cqi.ISS_STATE"&_ " FROM CQ_ISSUES cqi"&_ " WHERE cqi.PV_ID = :PV_ID" OraDatabase.Parameters.Add "PV_ID", nPvId, ORAPARM_INPUT, ORATYPE_NUMBER Set rsQry = OraDatabase.DbCreateDynaset( query , ORADYN_DEFAULT ) While ((NOT rsQry.BOF) AND (NOT rsQry.EOF)) outobjOldIssStates.Item ( CStr(rsQry("iss_db_id")) ) = Cstr(rsQry("iss_state")) rsQry.MoveNext() WEnd rsQry.Close Set rsQry = Nothing OraDatabase.Parameters.Remove "PV_ID" End Sub '----------------------------------------------------------------------------------------------------------------------------- Sub Update_Issues ( NNpv_id, NNfixed_iss_list ) Dim fixedIssArr, isspkArr, isspk, objOldIssStates, iss_num, outstandingIssArr Set objOldIssStates = CreateObject("Scripting.Dictionary") Call GetOldIssueStates ( NNpv_id, objOldIssStates ) objEH.TryORA ( OraSession ) On Error Resume Next '-- Set all issues to "imported" i.e. "not fixed" 'OraDatabase.ExecuteSQL _ ' " UPDATE cq_issues "&_ ' " SET iss_state = "& enumISSUES_STATE_IMPORTED &_ ' " WHERE pv_id = "& NNpv_id '-- Now set "fixed" for selected issues If NNfixed_iss_list <> "" Then fixedIssArr = Split( Replace( NNfixed_iss_list, " ", "" ) , ",") For Each isspk In fixedIssArr isspkArr = Split(isspk, ".") iss_num = GetIssueNumber ( isspkArr(0), isspkArr(1) ) If Err.Number = 0 Then OraDatabase.ExecuteSQL _ " UPDATE cq_issues "&_ " SET iss_state = "& enumISSUES_STATE_FIXED &_ " WHERE pv_id = "& NNpv_id &_ " AND iss_db = "& isspkArr(0) &_ " AND iss_id = "& isspkArr(1) If Err.Number = 0 Then '/* Log Action */ If CStr( objOldIssStates.Item ( isspk ) ) = CStr(enumISSUES_STATE_IMPORTED) Then OraDatabase.ExecuteSQL _ "BEGIN Log_Action ( "& NNpv_id &", 'issue_fixed', "& objAccessControl.UserId &", 'Issue number: "& iss_num &"' ); END;" End If End If '-- Remove this element from objOldIssStates objOldIssStates.Remove ( isspk ) End If Next End If '/* Log Action */ '-- Log Set to Outstanding outstandingIssArr = objOldIssStates.Keys For Each isspk In outstandingIssArr If CStr( objOldIssStates.Item ( isspk ) ) = CStr(enumISSUES_STATE_FIXED) Then isspkArr = Split(isspk, ".") iss_num = GetIssueNumber ( isspkArr(0), isspkArr(1) ) If Err.Number = 0 Then OraDatabase.ExecuteSQL _ "BEGIN Log_Action ( "& NNpv_id &", 'issue_outstanding', "& objAccessControl.UserId &", 'Issue number: "& iss_num &"' ); END;" End If End If Next objEH.CatchORA ( OraSession ) End Sub '----------------------------------------------------------------------------------------------------------------------------- %> <% '----------------------- MAIN LINE --------------------------- '--- Process submition --- If (parPv_id <> "") Then ' All mandatory parameters FOUND Call Update_Issues ( parPv_id, parFRfixed ) Call Destroy_All_Objects Response.Redirect("fixed_issues.asp?hidenv=true&pv_id="& Request("pv_id") &"&rtag_id="& Request("rtag_id")) Else Response.write "Some mandatory parameters are missing!" & "
" 'TODO Response.write QSTR_FullQuery End If %>