Subversion Repositories DevTools

Rev

Rev 129 | Go to most recent revision | 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 )
        
        OraDatabase.BeginTrans
        
        
        '-- 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) )
                        
                        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)
                        
                        
                        '/* 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
                        
                        '-- Remove this element from objOldIssStates
                        objOldIssStates.Remove ( isspk )
                        
                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) )
                        
                        OraDatabase.ExecuteSQL _
                                "BEGIN  Log_Action ( "& NNpv_id &", 'issue_outstanding', "& objAccessControl.UserId &", 'Issue number: "& iss_num &"' );  END;"
                        
                End If
                
        Next
        
        
        OraDatabase.CommitTrans
        
End Sub
'-----------------------------------------------------------------------------------------------------------------------------
%>
<%
'-----------------------  MAIN LINE  ---------------------------
'--- Process submition ---
If (parPv_id <> "") Then
        ' All mendatory 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 mendatory parameters are missing!" & "<br>" 'TODO
        Response.write QSTR_All 
End If
%>

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