Subversion Repositories DevTools

Rev

Blame | Last modification | View Log | RSS feed

<%@LANGUAGE="VBSCRIPT"%>
<%
'=====================================================
'                                   MAKE APPROVED FOR AUTOMATED BUILD
'               --- 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"-->
<%
'------------ 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 parRfile
Dim retERRmsg
Dim retALRTmsg
Dim retParameters
Dim pkgType
Dim retVal
'------------ Constants Declaration -----------
'------------ Variable Init -------------------
parPv_id = Request("pv_id")
parRfile = Request("rfile")
Set pkgInfoHash = CreateObject("Scripting.Dictionary")
'------------ Constants Declaration -----------
'------------ Variable Init -------------------
'----------------------------------------------
%>
<%
'----------------------------------------------------------------------------------------------------------------------------------------
Function  Get_CQ_Issues ( SSsql, OOrsCQ )

        
        'On Error Resume Next
        OOrsCQ.ActiveConnection = CQ_conn
        OOrsCQ.Source = SSsql
        OOrsCQ.CursorType = 0
        OOrsCQ.CursorLocation = 2
        OOrsCQ.LockType = 3
        OOrsCQ.Open()
        

        
        Get_CQ_Issues = Err.Number
        
End Function
'------------------------------------------------------------------------------------------------------------------------------------------
Sub NotifyInterest(NNpv_id, NNrtag_id)
        On Error Resume Next
        Dim Query_String, rsQry, myMail
        
        Query_String = _
        "       SELECT * FROM PACKAGE_INTEREST PI, PACKAGES PKG, PACKAGE_VERSIONS PV, USERS U,"&_
        "       RELEASE_TAGS RT, PROJECTS PRJ WHERE PKG.PKG_ID = PI.PKG_ID AND "&_
        "       RT.RTAG_ID = "& NNrtag_id &""&_
        "       AND PV.PV_ID = "& NNpv_id &" AND PV.PKG_ID = PKG.PKG_ID AND "&_
        "       PRJ.PROJ_ID = RT.PROJ_ID AND PRJ.PROJ_ID = PI.PROJ_ID AND U.USER_ID = PI.USER_ID" 
        
        Set rsQry = OraDatabase.DbCreateDynaset( Query_String , cint(0) )       
        
        If rsQry.RecordCount <> "" Then
                While ((NOT rsQry.BOF) AND (NOT rsQry.EOF))
                        Set myMail=Server.CreateObject("Persits.MailSender")
                        myMail.Host = SMTP_HOST
                        myMail.Subject="New Version of Package "& rsQry("pkg_name") &" in Project " & rsQry("proj_name") &" on Release Branch " & rsQry("rtag_name") &" would be autobuild soon." 
                        myMail.From=ADMIN_EMAIL
                        myMail.AddAddress rsQry("user_email")
                
                        myMail.Send
                        set myMail=nothing
                        rsQry.MoveNext  
                Wend
                        
        End If
        
        rsQry.Close()
        set rsQry = nothing


End Sub
'-------------------------------------------------------------------------------------
Sub Get_Package_Issues(NNpv_id, SSsql)
Dim sqlstr, rsTemp, DEVIiss, TDSEiss, VT5DMiss, VTSUPiss

        sqlstr = "SELECT iss_db, iss_id, iss_state, notes FROM CQ_ISSUES WHERE pv_id="& NNpv_id &"  AND iss_state = 1"

        Set rsTemp = OraDatabase.DbCreateDynaset( sqlstr, cint(0))
        
        DEVIiss = "-1"
        TDSEiss  = "-1"
        VT5DMiss = "-1"
        VTSUPiss = "-1"
        
        While ((NOT rsTemp.BOF) AND (NOT rsTemp.EOF))
                If CInt(rsTemp("iss_db")) = CInt(enumCLEARQUEST_DEVI_ID) Then
                        DEVIiss = DEVIiss &","& rsTemp("iss_id")
                        
                ElseIf CInt(rsTemp("iss_db")) = CInt(enumCLEARQUEST_TDSE_ID) Then
                        TDSEiss = TDSEiss &","& rsTemp("iss_id")
                ElseIf CInt(rsTemp("iss_db")) = CInt(enumCLEARQUEST_VT5DM_ID) Then
                        VT5DMiss = VT5DMiss &","& rsTemp("iss_id")
                ElseIf CInt(rsTemp("iss_db")) = CInt(enumCLEARQUEST_VTSUP_ID) Then
                        VTSUPiss = VTSUPiss &","& rsTemp("iss_id")
                        
                End If
                
                rsTemp.MoveNext
        WEnd    
        
        ' Construct SQL statement for CQ database
        If Len(DEVIiss) <> 1 OR Len(TDSEiss) <> 1 Then
                SSsql = ReadFile( rootPath & "queries\cq_issues.sql" )
                SSsql = Replace( SSsql, "/*enumCLEARQUEST_DEVI_ID*/", enumCLEARQUEST_DEVI_ID)
                SSsql = Replace( SSsql, "/*enumCLEARQUEST_TDSE_ID*/", enumCLEARQUEST_TDSE_ID)
                SSsql = Replace( SSsql, "/*enumCLEARQUEST_VT5DM_ID*/", enumCLEARQUEST_VT5DM_ID)
                SSsql = Replace( SSsql, "/*enumCLEARQUEST_VTSUP_ID*/", enumCLEARQUEST_VTSUP_ID)
                SSsql = Replace( SSsql, "/*DEVIiss*/", DEVIiss)
                SSsql = Replace( SSsql, "/*TDSEiss*/", TDSEiss)
                SSsql = Replace( SSsql, "/*VT5DMiss*/", VT5DMiss)
                SSsql = Replace( SSsql, "/*VTSUPiss*/", VTSUPiss)
        End If  
        
        rsTemp.Close
        Set rsTemp = nothing    
        
End Sub
'-------------------------------------------------------------------------------------
Sub MakeApproved (EmailBody)
        'Dim objWSH
        'Set objWSH = Server.CreateObject("WScript.Shell")
        
        
        OraDatabase.Parameters.Add "PV_ID",             Request("pv_id"),       ORAPARM_INPUT, ORATYPE_NUMBER 
        OraDatabase.Parameters.Add "RTAG_ID",           Request("rtag_id"),     ORAPARM_INPUT, ORATYPE_NUMBER 
        OraDatabase.Parameters.Add "USER_ID",           objAccessControl.UserId,        ORAPARM_INPUT, ORATYPE_NUMBER 
        
        
        OraSession.BeginTrans
        
        OraDatabase.ExecuteSQL _
        "BEGIN "&_
        " PK_ENVIRONMENT.MAKE_APPROVED ( :PV_ID, :RTAG_ID, :USER_ID ); "&_
        "END; "
        
        
        
        
        OraSession.CommitTrans
                Dim myMail,parPv_id, rsQry, EmailAutoBuild, comments, release, package
                EmailAutoBuild = ReadFile( rootPath & "queries\EmailAutoBuild.sql" )
                EmailAutoBuild = Replace( EmailAutoBuild, ":PV_ID", (Request("pv_id")) )
                EmailAutoBuild = Replace( EmailAutoBuild, ":RTAG_ID", (Request("rtag_id")) )
                Set rsQry = OraDatabase.DbCreateDynaset( EmailAutoBuild , cint(0))
                        If rsQry("comments") <> "" Then
                                comments = comments & "<table width='100%' border='0' cellspacing='0' cellpadding='1'>"
                comments = comments & "<tr>" 
                    comments = comments & "<td background='#CAC5B8' nowrap class='form_field'><font size='2' face='tahoma,sans-serif'><b>Reason&nbsp;For&nbsp;Release</b></font></td>"
                comments = comments & "</tr>"
                                comments = comments & "<tr>"
                    comments = comments & "<td background='#CAC5B8' nowrap class='form_item'><font size='1' face='tahoma,sans-serif'>"&NewLine_To_BR((rsQry("comments")))&"</font></td>"                        
                                comments = comments & "</tr>"
                                comments = comments & "</table>"
                                comments = comments & "<br>"                                                    
                        End If
                        
                Set myMail=Server.CreateObject("Persits.MailSender")
                If rsQry("owner_email") <> "" Then
                        myMail.Host = SMTP_HOST
                        myMail.Subject="Build required for package "& rsQry("pkg_name") &" in Project " & rsQry("proj_name") &" on Release Branch " & rsQry("rtag_name") 
                        release = release & "<table width='100%' border='0' cellspacing='0' cellpadding='1'>"
            release = release & "<tr>" 
                release = release & "<td background='#CAC5B8' nowrap class='form_field'><font size='2' face='tahoma,sans-serif'><b>Release</b></font></td>"
            release = release & "</tr>"
                        release = release & "<tr>"
                release = release & "<td background='#CAC5B8' nowrap class='form_item'><a href='http://erg:8002/ManagerSuite/Release_Manager/dependencies.asp?rtag_id="&Request("rtag_id")&"'><font size='1' face='tahoma,sans-serif'>"&rsQry("rtag_name")&"</font></a></td>"                   
                        release = release & "</tr>"
                        release = release & "</table>"
                        release = release & "<br>"
                        
                        package = package & "<table width='100%' border='0' cellspacing='0' cellpadding='1'>"
            package = package & "<tr>" 
                package = package & "<td background='#CAC5B8' nowrap class='form_field'><font size='2' face='tahoma,sans-serif'><b>Package</b></font></td>"
            package = package & "</tr>"
                        package = package & "<tr>"
                package = package & "<td background='#CAC5B8' nowrap class='form_item'><a href='http://erg:8002/ManagerSuite/Release_Manager/fixed_issues.asp?pv_id="&Request("pv_id")&"&rtag_id="&Request("rtag_id")&"'><font size='1' face='tahoma,sans-serif'>"&rsQry("pkg_name")&" "&rsQry("pkg_version")&"</font></a></td>"                        
                        package = package & "</tr>"
                        package = package & "</table>"
                        package = package & "<br>"      
                                
                        EmailBody =  release & package & comments & EmailBody
                        myMail.IsHTML = True
                        myMail.Body = EmailBody
                        myMail.From=ADMIN_EMAIL
                
                        If Timer < 28800 OR Timer > 61200 Then 
                                If rsQry("owner_personal_email") <> "" Then
                                        myMail.AddAddress rsQry("owner_personal_email")
                                Else
                                        myMail.AddAddress rsQry("owner_email")                  
                                End If
                        Else
                                myMail.AddAddress rsQry("owner_email")
                        End If
                        ' Attach the file
                        'parPv_id = Request(pv_id)
                
                        myMail.Send
                        set myMail=nothing
                End If
        
        OraDatabase.Parameters.Remove "PV_ID"
        OraDatabase.Parameters.Remove "RTAG_ID"
        OraDatabase.Parameters.Remove "USER_ID"
        
End Sub
'-------------------------------------------------------------------------------------
Function Check_Package_WIP_Already_Exists(NNrtag_id, NNpv_id)
        Dim Query_String, rsQry

        Query_String = _
        "       SELECT * "&_
        "       FROM planned pl, package_versions pv "&_
        "       WHERE pl.rtag_id = "& NNrtag_id &_
        "       AND pv.pv_id = pl.pv_id "&_
        "       AND pv.dlocked = 'A' "&_
        "       AND pv.pkg_id = (SELECT pkg_id "&_
    "                  FROM package_versions "&_
    "                 WHERE pv_id = "& NNpv_id &") "


        Set rsQry = OraDatabase.DbCreateDynaset( Query_String , cint(0) )       
        
        Check_Package_WIP_Already_Exists = rsQry.RecordCount

        rsQry.Close()
        Set rsQry = Nothing
End Function
'-------------------------------------------------------------------------------------
%>
<%
'-----------------------  MAIN LINE  ---------------------------

'--- Process submission ---
If ( Request("rtag_id") <> "") AND (Request("pv_id") <> "") Then
        
        'Check If There Already Exists A WIP Instance Of The Package In The Release
         If Check_Package_WIP_Already_Exists(Request("rtag_id"), Request("pv_id")) > 0 Then
                Call RaiseMsg ( enum_MSG_PACKAGE_WIP_EXISTS&"?rtag_id="& parRtag_id &"&pv_id="& parPv_id &"", parPv_id )
         End If
        
        '-- Get Package details
        Call Get_Pkg_Info ( Request("pv_id"), Request("rtag_id") )
        
        
        If pkgInfoHash.Item("build_type") = "M" Then
                '-- Approve Manual-build package
                Call OpenInWindow( "_make_released.asp?rfile=dependencies.asp&pv_id="& parPv_id &"&rtag_id="& parRtag_id  )
                
        Else
                '-- Approve Automatic-build package
                Call CheckRequirementsForMakeApproved ( parPv_id, parRtag_id, pkgType, retERRmsg, retALRTmsg, retParameters )
                
        End If
        
        
        If IsNull(retERRmsg) Then
                Dim SSsql, rsCQ 
                Set rsCQ = Server.CreateObject("ADODB.Recordset")
                ' All Requirements OK
                'COMPLETE THE REQUEST...
                Call Get_Package_Issues(parPv_id, SSsql)
                
                retVal = Get_CQ_Issues ( SSsql, rsCQ )
                
                If retVal = 0 Then      
                        Dim EmailBody                                   
                        EmailBody = EmailBody & "<font size='2' face='tahoma,sans-serif'><b>Fixed Issues</b></font>"
            EmailBody = EmailBody & "<table width='100%' border='1' cellspacing='0' cellpadding='1'>"
            EmailBody = EmailBody & "<tr>" 
            EmailBody = EmailBody &                           "<td background='#CAC5B8' nowrap class='form_field'><font size='1' face='tahoma,sans-serif'>Issue&nbsp;Id&nbsp;</font></td>"

            EmailBody = EmailBody &                           "<td background='#CAC5B8' nowrap class='form_field'><font size='1' face='tahoma,sans-serif'>Summary</font></td>"
            EmailBody = EmailBody &                                                "<td background='#CAC5B8' nowrap class='form_field'><font size='1' face='tahoma,sans-serif'>Issue&nbsp;Type&nbsp;</font></td>"
            EmailBody = EmailBody &                           "<td background='#CAC5B8' nowrap class='form_field'><font size='1' face='tahoma,sans-serif'>Priority</font></td>"
            EmailBody = EmailBody &                                                "<td background='#CAC5B8' nowrap class='form_field'><font size='1' face='tahoma,sans-serif'>Status</font></td>"

            EmailBody = EmailBody &                      "</tr>"
                                          If ((NOT rsCQ.BOF) AND (NOT rsCQ.EOF)) Then
                         While ((NOT rsCQ.BOF) AND (NOT rsCQ.EOF))
            EmailBody = EmailBody & "<tr>"
            EmailBody = EmailBody &  "<td background='#CAC5B8' nowrap class='form_item'><font size='1' face='tahoma,sans-serif'>"&rsCQ("iss_num")&"</font></td>"

                        EmailBody = EmailBody &         "                                  <td background='#CAC5B8' class='form_item'><font size='1' face='tahoma,sans-serif'>"&NewLine_To_BR ( To_HTML ( rsCQ("summary") ) )&"</font></td>"
            EmailBody = EmailBody &             "                                 <td nowrap background='#CAC5B8' class='form_item'><font size='1' face='tahoma,sans-serif'>"&rsCQ("issue_type")&"</font></td>"
            EmailBody = EmailBody &                           "<td nowrap background='#CAC5B8' class='form_item'><font size='1' face='tahoma,sans-serif'>"&rsCQ("priority")&"</font></td>"
            EmailBody = EmailBody &                                                "<td nowrap background='#CAC5B8' class='form_item'><font size='1' face='tahoma,sans-serif'>"&rsCQ("Status")&"</font></td>"
            EmailBody = EmailBody &    "                     </tr>"
                         rsCQ.MoveNext
                                          WEnd
                                          rsCQ.Close%>
                                          <%Else
 EmailBody = EmailBody &    "                          <tr> "
 EmailBody = EmailBody &    "                            <td background='#CAC5B8' nowrap></td>"
 EmailBody = EmailBody &    "                                              <td background='#CAC5B8' class='form_item'></td>"
 EmailBody = EmailBody &    "                            <td background='#CAC5B8' class='form_item'></td>"
 EmailBody = EmailBody &    "                            <td background='#CAC5B8' class='form_item'></td>"
 EmailBody = EmailBody &    "                                              <td background='#CAC5B8' class='form_item'></td>"
 EmailBody = EmailBody &    "                          </tr>"
                                          End If
                                          
 EmailBody = EmailBody &    "                        </table>           "
                        
                End If
                Call MakeApproved (EmailBody )
                'Call NotifyInterest(parPv_id, parRtag_id)
                If Request("rfile") <> "" Then
                        Response.Redirect ( Request("rfile") &"?pv_id="& Request("pv_id") &"&rtag_id="& Request("rtag_id") )
                Else
                        Response.Redirect ( "dependencies.asp?pv_id="& Request("pv_id") &"&rtag_id="& Request("rtag_id") )
                End If
                
        Else
                Call RaiseMsg ( Eval(retERRmsg), parRtag_id &"|"& parPv_id      &"|"& retParameters &"|"& "N" )
                
        End If
        
Else
        Response.write "Some mendatory parameters are missing!" & "<br>" 'TODO
        Response.write QSTR_All 
End If
%>

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