Subversion Repositories DevTools

Rev

Rev 1281 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<%@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
%>
<!--#include file="common/conf.asp"-->
<!--#include file="common/globals.asp"-->
<!--#include file="common/formating.asp"-->
<!--#include file="common/qstr.asp"-->
<!--#include file="common/common_subs.asp"-->
<!--#include file="common/common_dbedit.asp"-->
<%
' Set rfile parameter. This is a return page after Login
Call objPMod.StoreParameter ( "rfile", "fixed_issues.asp" )
'------------ ACCESS CONTROL ------------------
%>
<!--#include file="_access_control_login.asp"-->
<!--#include file="_access_control_general.asp"-->
<!--#include file="_access_control_project.asp"-->
<%
'------------ 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 )

   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!" & "<br>" 'TODO
   Response.write QSTR_All
End If
%>

<!-- DESTRUCTOR ------->
<!--#include file="common/destructor.asp"-->