public int Revise(result FOSresult, string FinalRating, int TradeID, bool RerunMacro, out htmlresult htmlResult)
        {
            htmlResult = new htmlresult();
            //List<int> listOld = new List<int>();
            //List<int> listNew = new List<int>();
            //foreach (Process process in Process.GetProcessesByName("Excel"))
            //{
            //    listOld.Add(process.Id);
            //}
            System.DateTime lastmodifytime;
            string filename = GetFileName(parentpath, out lastmodifytime);
            if (impersonateValidUser(username, Domain, password))
            //if(1==1)
            {
                int i;
                Range r;
                int j;
                Range rr;
                int paramstartindex = 0;
                int paramendindex = 0;
                //string[] IssueRatings = IssueRating.Split(new char[] { '/' });
                //string SPRating = IssueRatings[0];
                //string MoodyRating = IssueRatings[1];
                //string FitchRating = IssueRatings[2];
                //string RTG1 = this.GetRTG1(SPRating, MoodyRating, FitchRating);
                //string RTG2 = this.GetRTG2(SPRating, MoodyRating, FitchRating);
                //Dictionary<string, string> insertresult = new Dictionary<string, string>();
                //string filename = @"D:\ACR Portfolio - 120229.xlsm";

                try
                {
                    #region Revise
                    Application celapp = new Application();
                    object mss = Missing.Value;
                    Workbook celwbook = null;
                    FileInfo fi1 = new FileInfo(parentpath + @"\" + filename);
                    if (this.Application.AllKeys.Contains("ExcelInstance") && this.Application["ExcelInstance"] != null)
                    {
                        celapp = ((Workbook)(this.Application["ExcelInstance"])).Application;
                        celwbook = (Workbook)(this.Application["ExcelInstance"]);
                    }
                    else
                    {
                        FileInfo fireadonly = new FileInfo(parentpath + @"\~$" + filename);
                        if (fireadonly.Exists)
                            return 1;
                        fireadonly = new FileInfo(tempworkpath + @"\~$" + filename);
                        if (fireadonly.Exists)
                            return 2;
                        fi1.CopyTo(tempworkpath + @"\" + filename, true);
                        Workbook celwbook1 = celapp.Workbooks.Open(tempworkpath + @"\" + "Book1.xls", mss, mss, mss, mss, mss, mss, mss, mss, mss, mss, mss, mss, mss, mss);
                        //Worksheet celsh = celwbook.Sheets["Live"] as Worksheet;
                        Worksheet celsh1 = celwbook1.ActiveSheet as Worksheet;
                        //celsh.Select(Missing.Value);
                        celapp.Visible = true;
                        AddIn addin = celapp.AddIns.Add(@"C:\blp\API\Office Tools\BloombergUI.xla", Missing.Value);
                        addin.Installed = false;

                        addin.Installed = true;
                        celwbook = celapp.Workbooks.Open(tempworkpath + @"\" + filename, mss, mss, mss, mss, mss, mss, mss, mss, mss, false, mss, mss, mss, mss);
                        this.Application["ExcelInstance"] = celwbook;
                    }
                    //foreach (System.Diagnostics.Process process in System.Diagnostics.Process.GetProcessesByName("Excel"))
                    //{
                    //    listNew.Add(process.Id);
                    //}
                    Worksheet celsh = celwbook.Sheets["Live"] as Worksheet;
                    celsh.Select(Missing.Value);
                    celapp.Visible = true;
                    string s1 = string.Empty;
                    Dictionary<int, string> columnname = new Dictionary<int, string>();
                    int rowindex = 0;
                    int tradeIDcolumnindex = 0;
                    for (i = 1; i < celsh.UsedRange.Rows.Count; i++)
                    {
                        r = (Range)celsh.Cells[i, 1];
                        s1 = r.Text.ToString();
                        if (s1.Trim() == "Mkt Value (US$)")
                        {
                            paramstartindex = i;
                        }
                        else if (s1.Trim() == "Ave Credit Quality")
                        {
                            paramendindex = i;
                        }
                        else if (s1.Trim() == "Acc #")
                        {
                            rowindex = i;
                            break;
                        }
                    }
                    for (i = 1; i <= celsh.UsedRange.Rows.Columns.Count; i++)
                    {
                        r = (Range)celsh.Cells[rowindex, i];
                        if (r.Text.ToString().Trim() == "TRADE ID")
                        {
                            tradeIDcolumnindex = i;
                            break;
                        }
                    }
                    for (i = rowindex; i <= celsh.UsedRange.Rows.Count; i++)
                    {
                        r = (Range)celsh.Cells[i, tradeIDcolumnindex];
                        if (r.Text.ToString().Trim() == TradeID.ToString())
                        {
                            ((Range)(celsh.Cells[i, 4])).Formula = FOSresult.ISIN;
                            ((Range)(celsh.Cells[i, 6])).Formula = FOSresult.SECURITY_DES;
                            ((Range)(celsh.Cells[i, 7])).Formula = FOSresult.Quatity.Replace(",", "");
                            ((Range)(celsh.Cells[i, 12])).Formula = FOSresult.CRNCY;
                            ((Range)(celsh.Cells[i, 13])).Formula = FOSresult.PX_BID;
                            ((Range)(celsh.Cells[i, 14])).Formula = FOSresult.PX_BID;
                            ((Range)(celsh.Cells[i, 23])).Formula = FOSresult.YLD_YTM_BID;
                        }

                    }
                    #endregion
                    #region runmacro
                    if (RerunMacro)
                    {
                        string sectorissuer = ((Range)(celsh.Cells[rowindex + 1, 39])).Text.ToString();
                        //celwbook.Save();
                        bool flag = true;
                        while (flag)
                        {
                            flag = false;
                            i = paramstartindex;
                            while (i <= (paramendindex + 1))
                            {
                                j = 2;
                                while (j <= 29)
                                {
                                    if (((Range)(celsh.Cells[i, j])).Text.ToString().IndexOf("#V") != -1)
                                    {
                                        flag = true;
                                        break;
                                    }
                                    j++;
                                }
                                i++;
                            }
                        }
                        celwbook.RefreshAll();
                        this.RunMacro(celapp, new object[] { "RefreshSummary" });

                        StringBuilder html = new StringBuilder();
                        StringBuilder html2 = new StringBuilder();
                        StringBuilder html3 = new StringBuilder();
                        StringBuilder html4 = new StringBuilder();
                        celsh = celwbook.Sheets["IssuerExp"] as Worksheet;
                        for (int iii = 1; iii < celsh.UsedRange.Rows.Count; iii++)
                        {
                            r = (Range)celsh.Cells[iii, 1];
                            if (r.Text.ToString() == FOSresult.ISSUER)
                            {
                                htmlResult.issuer = FOSresult.ISSUER;
                            }
                        }

                        celsh = celwbook.Sheets["GUIDELINES CHECK"] as Worksheet;
                        //transfer data from datatable to html
                        int step1 = 0;
                        int step2 = 0;
                        int step3 = 0;
                        int row = 0;
                        int column = 0;
                        int BBBGuidlineCheck = 0;
                        //Range r;
                        //Range rr;
                        for (int iii = 1; iii < celsh.UsedRange.Rows.Count; iii++)
                        {
                            for (int jjj = 1; jjj < celsh.UsedRange.Columns.Count; jjj++)
                            {
                                r = (Range)celsh.Cells[iii, jjj];
                                switch ((string)(r.Text.ToString()))
                                {
                                    case "LIMITS":
                                        column = jjj;
                                        step1 = iii;
                                        break;
                                    case "LIMITS BY SECURITY TYPES":
                                        step2 = iii;
                                        break;
                                    case "LIMITS BY ISSUER":
                                        step3 = iii;
                                        break;
                                    case "Issuer/Issue Rating":
                                        BBBGuidlineCheck = iii;
                                        break;
                                }
                                row++;
                                if (step3 > 0)
                                    break;
                            }
                        }
                        if (RTG_FITCHlist.Contains(FinalRating))
                            celsh.Cells[BBBGuidlineCheck, column + 5] = "YES";
                        else
                        {
                            if (CRNCY == "IDR" || CRNCY == "INR" || CRNCY == "PHP")
                                celsh.Cells[BBBGuidlineCheck, column + 5] = "YES";
                            else
                                celsh.Cells[BBBGuidlineCheck, column + 5] = "NO";
                        }
                        html.Append("<tr>");
                        for (int kk = column; kk <= 8; kk++)
                        {
                            r = (Range)celsh.Cells[step1 + 1, kk];
                            html.Append("<th>" + r.Text.ToString() + "</th>");
                        }
                        for (int jj = step1 + 3; jj < celsh.UsedRange.Rows.Count; jj++)
                        {
                            r = (Range)celsh.Cells[jj, column];
                            if (r.Text.ToString() == "")
                            {
                                break;
                            }
                            else
                            {
                                html.Append("<tr>");
                                for (int k = column; k <= 8; k++)
                                {
                                    rr = (Range)celsh.Cells[jj, k];
                                    html.Append("<td>" + rr.Text.ToString() + "</td>");
                                }
                                html.Append("</tr>");
                            }
                        }
                        html2.Append("<tr>");
                        for (int kk = column; kk <= 8; kk++)
                        {
                            if (kk == 3 || kk == 5)
                                continue;
                            r = (Range)celsh.Cells[step2 + 1, kk];
                            html2.Append("<th>" + r.Text.ToString() + "</th>");
                        }
                        html2.Append("</tr>");
                        for (int jj = step2 + 2; jj < celsh.UsedRange.Rows.Count; jj++)
                        {
                            r = (Range)celsh.Cells[jj, column];
                            if (r.Text.ToString() == "")
                                break;
                            else
                            {
                                html2.Append("<tr>");
                                for (int k = column; k <= 8; k++)
                                {
                                    if (k == 3 || k == 5)
                                        continue;
                                    rr = (Range)celsh.Cells[jj, k];
                                    html2.Append("<td>" + rr.Text.ToString() + "</td>");
                                    if (k == 2 || k == 4)
                                        k++;
                                }
                                html2.Append("</tr>");
                            }
                        }
                        html3.Append("<tr>");
                        for (int kk = column; kk <= 8; kk++)
                        {
                            if (kk == 3 || kk == 5)
                                continue;
                            r = (Range)celsh.Cells[step3 + 1, kk];
                            html3.Append("<th>" + r.Text.ToString() + "</th>");
                        }
                        html3.Append("</tr>");
                        for (int jj = step3 + 2; jj < celsh.UsedRange.Rows.Count; jj++)
                        {
                            r = (Range)celsh.Cells[jj, column];
                            if (r.Text.ToString().Trim() == "Grand Total" || r.Text.ToString() == "")
                                break;
                            else
                            {
                                string stemp = r.Text.ToString();
                                if (stemp.Trim().ToUpper() == sectorissuer.Trim().ToUpper())
                                //if (stemp.Substring((temp.IndexOf('-') + 1), (stemp.ToString().Length - stemp.ToString().IndexOf('-') - 1)) == sectorissuer.ToUpper())
                                {
                                    html3.Append("<tr>");
                                    for (int k = column; k <= 8; k++)
                                    {
                                        if (k == 3 || k == 5)
                                            continue;
                                        rr = (Range)celsh.Cells[jj, k];
                                        html3.Append("<td>" + rr.Text.ToString() + "</td>");
                                        if (k == 2 || k == 4)
                                            k++;
                                    }
                                    html3.Append("</tr>");
                                }
                            }
                        }
                        html4.Append("<tr>");
                        for (int kk = column; kk <= 8; kk++)
                        {
                            if (kk == 3 || kk == 5)
                                continue;
                            r = (Range)celsh.Cells[step3 + 1, kk];
                            html4.Append("<th>" + r.Text.ToString() + "</th>");
                        }
                        html4.Append("</tr>");
                        for (int jj = step3 + 2; jj < celsh.UsedRange.Rows.Count; jj++)
                        {
                            r = (Range)celsh.Cells[jj, column];
                            if (r.Text.ToString().Trim() == "Grand Total" || r.Text.ToString() == "")
                                break;
                            else
                            {
                                rr = (Range)celsh.Cells[jj, 4];
                                string stemp = rr.Text.ToString();
                                if (float.Parse(stemp.Substring(0, stemp.Length - 1)) > 3.5)
                                {
                                    html4.Append("<tr>");
                                    for (int k = column; k <= 8; k++)
                                    {
                                        if (k == 3 || k == 5)
                                            continue;
                                        rr = (Range)celsh.Cells[jj, k];
                                        html4.Append("<td>" + rr.Text.ToString() + "</td>");
                                        if (k == 2 || k == 4)
                                            k++;
                                    }
                                    html4.Append("</tr>");
                                }
                            }
                        }
                        celwbook.Save();

                        fi1 = new FileInfo(tempworkpath + @"\" + filename);
                        fi1.CopyTo(parentpath + @"\" + filename, true);
                        undoImpersonation();
                        //impersonateValidUser("bbuser1", "WSG053", "bbUser01");
                        //if (celapp != null)
                        //{
                        //    Process process = new Process();
                        //    foreach (int pID in listNew.Except(listOld))
                        //    {
                        //        process = System.Diagnostics.Process.GetProcessById(pID);
                        //        process.Kill();
                        //    }

                        //    //Process.GetProcessesByName("Excel")[0].Kill();
                        //}
                        //undoImpersonation();
                        StringBuilder finalhtml = new StringBuilder();
                        finalhtml.Append("<div><h2>SUMMARY OF GUIDELINES CHECK</h2><h4>LIMITS</h4><table border='1'>");
                        finalhtml.Append(html.ToString());
                        finalhtml.Append("</table><p>*Note: Exception for Guideline 5 applies only if Guideline 4 is met</p><h4>LIMITS BY SECURITY TYPES</h4><table border='1'>");
                        finalhtml.Append(html2.ToString());
                        finalhtml.Append("</table><h4>LIMITS BY ISSUER</h4><table border='1'>");
                        finalhtml.Append(html3.ToString());
                        finalhtml.Append("</table><h4>LIMITS BY ISSUER(>3.5%)</h4><table border='1'>");
                        finalhtml.Append(html4.ToString());
                        finalhtml.Append("</table></div>");
                        htmlResult.htmlfortable = finalhtml.ToString();
                        return 0;
                    }
                    #endregion
                    #region norunmacro
                    else
                    {
                        celwbook.Save();

                        fi1 = new FileInfo(tempworkpath + @"\" + filename);
                        fi1.CopyTo(parentpath + @"\" + filename, true);
                        undoImpersonation();
                        //impersonateValidUser("bbuser1", "WSG053", "bbUser01");
                        //if (celapp != null)
                        //{
                        //    Process process = new Process();
                        //    foreach (int pID in listNew.Except(listOld))
                        //    {
                        //        process = System.Diagnostics.Process.GetProcessById(pID);
                        //        process.Kill();
                        //    }

                        //    //Process.GetProcessesByName("Excel")[0].Kill();
                        //}
                        //undoImpersonation();
                        return 0;
                    }
                    #endregion
                }
                catch (Exception e)
                {
                    return -1;
                }
                finally
                {
                //    impersonateValidUser("bbuser1", "WSG053", "bbUser01");
                //    if (celapp != null)
                //    {
                //        Process process = new Process();
                //        foreach (int pID in listNew.Except(listOld))
                //        {
                //            process = System.Diagnostics.Process.GetProcessById(pID);
                //            process.Kill();
                //        }

                //        //Process.GetProcessesByName("Excel")[0].Kill();
                //    }
                //    undoImpersonation();
                }
            }
            else
            {
                return -1;
            }
        }
        public int Insert(result FOSresult, string FinalRating, int TradeID, out htmlresult htmlResult)
        {
            htmlResult = new htmlresult();
            List<int> listOld = new List<int>();
            List<int> listNew = new List<int>();
            foreach (Process process in Process.GetProcessesByName("Excel"))
            {
                listOld.Add(process.Id);
            }
            System.DateTime lastmodifytime;
            string filename = GetFileName(parentpath, out lastmodifytime);
            if (impersonateValidUser(username, Domain, password))
            //if(1==1)
            {
                int i;
                Range r;
                int j;
                Range rr;
                int paramstartindex = 0;
                int paramendindex = 0;
                //string[] IssueRatings = IssueRating.Split(new char[] { '/' });
                //string SPRating = IssueRatings[0];
                //string MoodyRating = IssueRatings[1];
                //string FitchRating = IssueRatings[2];
                //string RTG1 = this.GetRTG1(SPRating, MoodyRating, FitchRating);
                //string RTG2 = this.GetRTG2(SPRating, MoodyRating, FitchRating);
                //Dictionary<string, string> insertresult = new Dictionary<string, string>();
                //string filename = @"D:\ACR Portfolio - 120229.xlsm";

                try
                {
                    #region insert
                    Application celapp = new Application();
                    object mss = Missing.Value;
                    Workbook celwbook = null;
                    FileInfo fi1 = new FileInfo(parentpath + @"\" + filename);
                    if (this.Application.AllKeys.Contains("ExcelInstance") && this.Application["ExcelInstance"] != null)
                    {
                        celapp = ((Workbook)(this.Application["ExcelInstance"])).Application;
                        celwbook = (Workbook)(this.Application["ExcelInstance"]);
                    }
                    else
                    {
                        FileInfo fireadonly = new FileInfo(parentpath + @"\~$" + filename);
                        if (fireadonly.Exists)
                            return 1;
                        fireadonly = new FileInfo(tempworkpath + @"\~$" + filename);
                        if (fireadonly.Exists)
                            return 2;
                        fi1.CopyTo(tempworkpath + @"\" + filename, true);
                        Workbook celwbook1 = celapp.Workbooks.Open(tempworkpath + @"\" + "Book1.xls", mss, mss, mss, mss, mss, mss, mss, mss, mss, mss, mss, mss, mss, mss);
                        //Worksheet celsh = celwbook.Sheets["Live"] as Worksheet;
                        Worksheet celsh1 = celwbook1.ActiveSheet as Worksheet;
                        //celsh.Select(Missing.Value);
                        celapp.Visible = true;
                        AddIn addin = celapp.AddIns.Add(@"C:\blp\API\Office Tools\BloombergUI.xla", Missing.Value);
                        addin.Installed = false;

                        addin.Installed = true;
                        celwbook = celapp.Workbooks.Open(tempworkpath + @"\" + filename, mss, mss, mss, mss, mss, mss, mss, mss, mss, false, mss, mss, mss, mss);
                    }
                    //foreach (System.Diagnostics.Process process in System.Diagnostics.Process.GetProcessesByName("Excel"))
                    //{
                    //    listNew.Add(process.Id);
                    //}
                    Worksheet celsh = celwbook.Sheets["Live"] as Worksheet;
                    celsh.Select(Missing.Value);
                    celapp.Visible = true;
                    string s1 = string.Empty;
                    Dictionary<int, string> columnname = new Dictionary<int, string>();
                    int rowindex = 0;
                    for (i = 1; i < celsh.UsedRange.Rows.Count; i++)
                    {
                        r = (Range)celsh.Cells[i, 1];
                        s1 = r.Text.ToString();
                        if (s1.Trim() == "Mkt Value (US$)")
                        {
                            paramstartindex = i;
                        }
                        else if (s1.Trim() == "Ave Credit Quality")
                        {
                            paramendindex = i;
                        }
                        else if (s1.Trim() == "Acc #")
                        {
                            rowindex = i;
                            break;
                        }
                    }
                    float ftap = 0;
                    if (float.TryParse(FOSresult.TAP, out ftap))
                        celsh.Cells[rowindex - 1, 19] = ftap * 1000000;
                    else
                        return -1;
                    float ftfa = 0;
                    if (float.TryParse(FOSresult.TFA, out ftfa))
                        celsh.Cells[rowindex - 2, 20] = ftfa * 1000000;
                    else
                        return -1;
                    Range oldrange = (Range)celsh.Rows[rowindex + 2, mss];
                    ((Range)(celsh.Rows[rowindex + 1, mss])).Insert(XlDirection.xlDown, Missing.Value);
                    Range newrange = (Range)celsh.Rows[rowindex + 1, mss];
                    oldrange.Copy(newrange);
                    for (i = 1; i <= celsh.UsedRange.Columns.Count; i++)
                    {
                        r = (Range)celsh.Cells[rowindex, i];
                        columnname.Add(i, r.Text.ToString());

                    }
                    string temp = string.Empty;
                    i = 1;
                    if (FOSresult.BORS == "S" && FOSresult.Quatity != "")
                    {
                        FOSresult.Quatity = "-" + FOSresult.Quatity;
                        FOSresult.MVLCY = "-" + FOSresult.MVLCY;
                    }
                    while (i <= celsh.UsedRange.Columns.Count)
                    {
                        temp = this.updateValue(columnname, i, BondLife(FOSresult), FinalRating, FOSresult.FundType, FOSresult.ISIN, FOSresult.SECURITY_DES, FOSresult.CRNCY, FOSresult.ISSUER, FOSresult.COUNTRY_FULL_NAME, FOSresult.MARKET_SECTOR_DES, FOSresult.INDUSTRY_SECTOR, FOSresult.Quatity.Replace(",", ""), FOSresult.PX_BID, FOSresult.COUPON, FOSresult.YLD_YTM_BID, FOSresult.DUR_BID, TradeID.ToString(), FOSresult.MVLCY, "pending for approval");
                        if (temp != "")
                        {
                            ((Range)(celsh.Cells[rowindex + 1, i])).Formula = temp;
                        }
                        i++;
                    }
                    #endregion
                    #region runmacro
                    string sectorissuer = ((Range)(celsh.Cells[rowindex + 1, 39])).Text.ToString();
                    //celwbook.Save();
                    bool flag = true;
                    while (flag)
                    {
                        flag = false;
                        i = paramstartindex;
                        while (i <= (paramendindex + 1))
                        {
                            j = 2;
                            while (j <= 29)
                            {
                                if (((Range)(celsh.Cells[i, j])).Text.ToString().IndexOf("#V") != -1)
                                {
                                    flag = true;
                                    break;
                                }
                                j++;
                            }
                            i++;
                        }
                    }
                    celwbook.RefreshAll();
                    this.RunMacro(celapp, new object[] { "RefreshSummary" });

                    /*StringBuilder html = new StringBuilder();
                    StringBuilder html2 = new StringBuilder();
                    StringBuilder html3 = new StringBuilder();
                    StringBuilder html4 = new StringBuilder();
                    celsh = celwbook.Sheets["IssuerExp"] as Worksheet;
                    for (int iii = 1; iii < celsh.UsedRange.Rows.Count; iii++)
                    {
                        r = (Range)celsh.Cells[iii, 1];
                        if (r.Text.ToString() == FOSresult.ISSUER)
                        {
                            htmlResult.issuer = FOSresult.ISSUER;
                        }
                    }

                    celsh = celwbook.Sheets["GUIDELINES CHECK"] as Worksheet;
                    //transfer data from datatable to html
                    int step1 = 0;
                    int step2 = 0;
                    int step3 = 0;
                    int row = 0;
                    int column = 0;
                    int BBBGuidlineCheck = 0;
                    //Range r;
                    //Range rr;
                    for (int iii = 1; iii < celsh.UsedRange.Rows.Count; iii++)
                    {
                        for (int jjj = 1; jjj < celsh.UsedRange.Columns.Count; jjj++)
                        {
                            r = (Range)celsh.Cells[iii, jjj];
                            switch ((string)(r.Text.ToString()))
                            {
                                case "LIMITS":
                                    column = jjj;
                                    step1 = iii;
                                    break;
                                case "LIMITS BY SECURITY TYPES":
                                    step2 = iii;
                                    break;
                                case "LIMITS BY ISSUER":
                                    step3 = iii;
                                    break;
                                case "Issuer/Issue Rating":
                                    BBBGuidlineCheck = iii;
                                    break;
                            }
                            row++;
                            if (step3 > 0)
                                break;
                        }
                    }
                    if (RTG_FITCHlist.Contains(FinalRating))
                        celsh.Cells[BBBGuidlineCheck, column + 5] = "YES";
                    else
                    {
                        if (CRNCY == "IDR" || CRNCY == "INR" || CRNCY == "PHP")
                            celsh.Cells[BBBGuidlineCheck, column + 5] = "YES";
                        else
                            celsh.Cells[BBBGuidlineCheck, column + 5] = "NO";
                    }
                    for (int jj = step1 + 3; jj < celsh.UsedRange.Rows.Count; jj++)
                    {
                        r = (Range)celsh.Cells[jj, column];
                        if (r.Text.ToString() == "")
                        {
                            break;
                        }
                        else
                        {
                            html.Append("<tr>");
                            for (int k = column; k <= 8; k++)
                            {
                                rr = (Range)celsh.Cells[jj, k];
                                html.Append("<td>" + rr.Text.ToString() + "</td>");
                            }
                            html.Append("</tr>");
                        }
                    }
                    for (int jj = step2 + 2; jj < celsh.UsedRange.Rows.Count; jj++)
                    {
                        r = (Range)celsh.Cells[jj, column];
                        if (r.Text.ToString() == "")
                            break;
                        else
                        {
                            html2.Append("<tr>");
                            for (int k = column; k <= 8; k++)
                            {
                                if (k == 3 || k == 5)
                                    continue;
                                rr = (Range)celsh.Cells[jj, k];
                                html2.Append("<td>" + rr.Text.ToString() + "</td>");
                                if (k == 2 || k == 4)
                                    k++;
                            }
                            html2.Append("</tr>");
                        }
                    }
                    for (int jj = step3 + 2; jj < celsh.UsedRange.Rows.Count; jj++)
                    {
                        r = (Range)celsh.Cells[jj, column];
                        if (r.Text.ToString() == "")
                            break;
                        else
                        {
                            string stemp = r.Text.ToString();
                            if (stemp.Trim().ToUpper() == sectorissuer.Trim().ToUpper())
                            //if (stemp.Substring((temp.IndexOf('-') + 1), (stemp.ToString().Length - stemp.ToString().IndexOf('-') - 1)) == sectorissuer.ToUpper())
                            {
                                html3.Append("<tr>");
                                for (int k = column; k <= 8; k++)
                                {
                                    if (k == 3 || k == 5)
                                        continue;
                                    rr = (Range)celsh.Cells[jj, k];
                                    html3.Append("<td>" + rr.Text.ToString() + "</td>");
                                    if (k == 2 || k == 4)
                                        k++;
                                }
                                html3.Append("</tr>");
                            }
                        }
                    }
                    for (int jj = step3 + 2; jj < celsh.UsedRange.Rows.Count; jj++)
                    {
                        r = (Range)celsh.Cells[jj, column];
                        if (r.Text.ToString() == "")
                            break;
                        else
                        {
                            rr = (Range)celsh.Cells[jj, 4];
                            string stemp = rr.Text.ToString();
                            float fstemp = 0;
                            if (float.TryParse(stemp.Substring(0, stemp.Length - 1), out fstemp))
                            {
                                if (fstemp > 3.5)
                                {
                                    html4.Append("<tr>");
                                    for (int k = column; k <= 8; k++)
                                    {
                                        if (k == 3 || k == 5)
                                            continue;
                                        rr = (Range)celsh.Cells[jj, k];
                                        html4.Append("<td>" + rr.Text.ToString() + "</td>");
                                        if (k == 2 || k == 4)
                                            k++;
                                    }
                                    html4.Append("</tr>");
                                }
                            }
                        }
                    }*/
                    celwbook.Save();

                    fi1 = new FileInfo(tempworkpath + @"\" + filename);
                    fi1.CopyTo(parentpath + @"\" + filename, true);
                    undoImpersonation();

                    /*StringBuilder finalhtml = new StringBuilder();
                    finalhtml.Append("<div><h2>SUMMARY OF GUIDELINES CHECK</h2><h4>LIMITS</h4><table border='1'><tr><th>S/N</th><th>GUIDELINE</th><th>Official Guidelines</th><th>Exception (Jan 2012 - Jun 2012)</th><th>ACR PORTFOLIO</th><th>MET GUIDELINE?</th><th>BUFFER BEFORE HITTING LIMIT</th></tr>");
                    finalhtml.Append(html.ToString());
                    finalhtml.Append("</table><p>*Note: Exception for Guideline 5 applies only if Guideline 4 is met</p><h4>LIMITS BY SECURITY TYPES</h4><table border='1'><tr><th>Security Types</th><th>% Weight of Target Asian Bond Portfolio</th><th>Maximum Limits(Guidelines)</th><th>Met Guidelines?</th><th>Buffer Before Hitting Limit</th></tr>");
                    finalhtml.Append(html2.ToString());
                    finalhtml.Append("</table><h4>LIMITS BY ISSUER</h4><table border='1'><tr><th>Security Types</th><th>% Weight of Target Asian Bond Portfolio</th><th>Maximum Limits(Guidelines)</th><th>Met Guidelines?</th><th>Buffer Before Hitting Limit</th></tr>");
                    finalhtml.Append(html3.ToString());
                    finalhtml.Append("</table><h4>LIMITS BY ISSUER(>3.5%)</h4><table border='1'><tr><th>Security Types</th><th>% Weight of Target Asian Bond Portfolio</th><th>Maximum Limits(Guidelines)</th><th>Met Guidelines?</th><th>Buffer Before Hitting Limit</th></tr>");
                    finalhtml.Append(html4.ToString());
                    finalhtml.Append("</table></div>");
                    htmlResult.htmlfortable = finalhtml.ToString();*/
                    return 0;
                    #endregion
                    //#region norunmacro
                    //else
                    //{
                    //    celwbook.Save();
                    //    celapp.DisplayAlerts = false;
                    //    celapp.Quit();

                    //    fi1 = new FileInfo(tempworkpath + @"\" + filename);
                    //    fi1.CopyTo(parentpath + @"\" + filename, true);
                    //    undoImpersonation();
                    //    impersonateValidUser("bbuser1", "WSG053", "bbUser01");
                    //    if (celapp != null)
                    //    {
                    //        Process process = new Process();
                    //        foreach (int pID in listNew.Except(listOld))
                    //        {
                    //            process = System.Diagnostics.Process.GetProcessById(pID);
                    //            process.Kill();
                    //        }

                    //        //Process.GetProcessesByName("Excel")[0].Kill();
                    //    }
                    //    undoImpersonation();
                    //    return 0;
                    //}
                    //#endregion
                }
                catch (Exception e)
                {
                    return -1;
                }
                finally
                {
                    //impersonateValidUser("bbuser1", "WSG053", "bbUser01");
                    //if (celapp != null)
                    //{
                    //    Process process = new Process();
                    //    foreach (int pID in listNew.Except(listOld))
                    //    {
                    //        process = System.Diagnostics.Process.GetProcessById(pID);
                    //        process.Kill();
                    //    }

                    //    //Process.GetProcessesByName("Excel")[0].Kill();
                    //}
                    //undoImpersonation();
                }
            }
            else
            {
                return -1;
            }
        }
        public int PTCCheck(result FOSresult, string FinalRating, out htmlresult htmlResult)
        {
            impersonateValidUser("bbuser1", "WSG053", "bbUser01");
            StreamWriter tw = new StreamWriter("d:\\Temp\\Miao\\log.txt");
            undoImpersonation();
            htmlResult = new htmlresult();
            /*List<int> listOld = new List<int>();
            List<int> listNew = new List<int>();
            foreach (Process process in Process.GetProcessesByName("Excel"))
            {
                listOld.Add(process.Id);
            }*/
            System.DateTime lastmodifytime;
            string filename = GetFileName(parentpath, out lastmodifytime);
            if (impersonateValidUser(username, Domain, password))
            //if(1==1)
            {
                int i;
                Range r;
                int j;
                Range rr;
                int paramstartindex = 0;
                int paramendindex = 0;
                //string[] IssueRatings = IssueRating.Split(new char[] { '/' });
                //string SPRating = IssueRatings[0];
                //string MoodyRating = IssueRatings[1];
                //string FitchRating = IssueRatings[2];
                //string RTG1 = this.GetRTG1(SPRating, MoodyRating, FitchRating);
                //string RTG2 = this.GetRTG2(SPRating, MoodyRating, FitchRating);
                //Dictionary<string, string> insertresult = new Dictionary<string, string>();
                //string filename = @"D:\ACR Portfolio - 120229.xlsm";
                //impersonateValidUser("bbuser1", "WSG053", "bbUser01");

                try
                {
                    Application celapp = new Application();
                    object mss = Missing.Value;
                    Workbook celwbook = null;
                    FileInfo fi1 = new FileInfo(parentpath + @"\" + filename);
                    bool isOpen = false;
                    bool book1isOpen = false;

                    if (Process.GetProcessesByName("Excel").Count() > 0)
                    {
                        impersonateValidUser("bbuser1", "WSG053", "bbUser01");
                        tw.WriteLine("Begin to get obj");
                        object o=null;
                        try
                        {
                            o = Marshal.GetActiveObject("Excel.Application");

                        }
                        catch(Exception e)
                        {
                            tw.WriteLine("null");
                            o=null;
                        }
                        tw.WriteLine("End to get obj");
                        undoImpersonation();
                        if (o != null)
                        {
                            impersonateValidUser("bbuser1", "WSG053", "bbUser01");
                            tw.WriteLine("Begin to get app");
                            undoImpersonation();
                            celapp = (Microsoft.Office.Interop.Excel.Application)o;
                            Microsoft.Office.Interop.Excel.Workbooks s = celapp.Workbooks;
                            foreach (Microsoft.Office.Interop.Excel.Workbook ss in s)
                            {
                                string excelfilename = ss.FullName;
                                if (excelfilename == tempworkpath + "\\" + filename)
                                {
                                    isOpen = true;
                                    celwbook = ss;
                                }
                                if (excelfilename == tempworkpath + "\\Book1.xls")
                                {
                                    book1isOpen = true;
                                }
                            }
                        }
                    }
                    if(!isOpen)
                    {
                        impersonateValidUser("bbuser1", "WSG053", "bbUser01");
                        tw.WriteLine("IsOpen: "+isOpen);
                        undoImpersonation();
                        //Process[] pr = Process.GetProcessesByName("EXCEL");

                        impersonateValidUser(username, Domain, password);
                        FileInfo fireadonly = new FileInfo(parentpath + @"\~$" + filename);
                        if (fireadonly.Exists)
                            return 1;
                        fireadonly = new FileInfo(tempworkpath + @"\~$" + filename);
                        if (fireadonly.Exists)
                        {
                            tw.Close();
                            return 2;
                        }
                        fi1.CopyTo(tempworkpath + @"\" + filename, true);

                        if (!book1isOpen)
                        {
                            Workbook celwbook1 = celapp.Workbooks.Open(tempworkpath + @"\" + "Book1.xls", mss, mss, mss, mss, mss, mss, mss, mss, mss, mss, mss, mss, mss, mss);
                            //Worksheet celsh = celwbook.Sheets["Live"] as Worksheet;
                            Worksheet celsh1 = celwbook1.ActiveSheet as Worksheet;
                            //celsh.Select(Missing.Value);
                            celapp.Visible = true;
                            AddIn addin = celapp.AddIns.Add(@"C:\blp\API\Office Tools\BloombergUI.xla", Missing.Value);
                            addin.Installed = false;

                            addin.Installed = true;
                            //celwbook = celapp.Workbooks.Open(tempworkpath + @"\" + filename, mss, mss, mss, mss, mss, mss, mss, mss, mss, false, mss, mss, mss, mss);
                        }
                        celwbook = celapp.Workbooks.Open(tempworkpath + @"\" + filename, mss, mss, mss, mss, mss, mss, mss, mss, mss, false, mss, mss, mss, mss);
                        //foreach (System.Diagnostics.Process process in System.Diagnostics.Process.GetProcessesByName("Excel"))
                        //{
                        //    if (process.MainWindowTitle.IndexOf(filename) > 0)
                        //    {
                        //        this.Application["ProcessID"] = process.Id;
                        //        break;
                        //    }
                        //}
                        //this.Application["ExcelInstance"] = celwbook;
                    }
                    impersonateValidUser("bbuser1", "WSG053", "bbUser01");
                    tw.Close();
                    undoImpersonation();
                    Worksheet celsh = celwbook.Sheets["IssuerExp"] as Worksheet;
                    celsh.Select(Missing.Value);
                    celapp.Visible = true;
                    for (i = 1; i < celsh.UsedRange.Rows.Count; i++)
                    {
                        r = (Range)celsh.Cells[i, 1];
                        if (r.Text.ToString() == FOSresult.ISSUER)
                        {
                            htmlResult.SumofMV = ((Range)celsh.Cells[i, 2]).Text.ToString();
                            break;
                        }
                    }

                    celsh = celwbook.Sheets["Live"] as Worksheet;
                    celsh.Select(Missing.Value);
                    string s1 = string.Empty;
                    Dictionary<int, string> columnname = new Dictionary<int, string>();
                    int rowindex = 0;
                    for (i = 1; i < celsh.UsedRange.Rows.Count; i++)
                    {
                        r = (Range)celsh.Cells[i, 1];
                        s1 = r.Text.ToString();
                        if (s1.Trim() == "Mkt Value (US$)")
                        {
                            paramstartindex = i;
                        }
                        else if (s1.Trim() == "Ave Credit Quality")
                        {
                            paramendindex = i;
                        }
                        else if (s1.Trim() == "Acc #")
                        {
                            rowindex = i;
                            break;
                        }
                    }
                    float ftap = 0;
                    if (float.TryParse(FOSresult.TAP, out ftap))
                        celsh.Cells[rowindex - 1, 19] = ftap * 1000000;
                    else
                        return -1;
                    float ftfa = 0;
                    if (float.TryParse(FOSresult.TFA, out ftfa))
                        celsh.Cells[rowindex - 2, 20] = ftfa * 1000000;
                    else
                        return -1;
                    Range oldrange = (Range)celsh.Rows[rowindex + 2, mss];
                    ((Range)(celsh.Rows[rowindex + 1, mss])).Insert(XlDirection.xlDown, Missing.Value);
                    Range newrange = (Range)celsh.Rows[rowindex + 1, mss];
                    oldrange.Copy(newrange);
                    for (i = 1; i < celsh.UsedRange.Columns.Count; i++)
                    {
                        r = (Range)celsh.Cells[rowindex, i];
                        columnname.Add(i, r.Text.ToString());

                    }
                    string temp = string.Empty;
                    i = 1;
                    if (FOSresult.BORS == "S" && FOSresult.Quatity != "")
                    {
                        FOSresult.Quatity = "-" + FOSresult.Quatity;
                        FOSresult.MVLCY = "-" + FOSresult.MVLCY;
                    }
                    while (i < celsh.UsedRange.Columns.Count)
                    {
                        temp = this.updateValue(columnname, i, BondLife(FOSresult), FinalRating, FOSresult.FundType, FOSresult.ISIN, FOSresult.SECURITY_DES, FOSresult.CRNCY, FOSresult.ISSUER, FOSresult.COUNTRY_FULL_NAME, FOSresult.MARKET_SECTOR_DES, FOSresult.INDUSTRY_SECTOR, FOSresult.Quatity.Replace(",", ""), FOSresult.PX_BID, FOSresult.COUPON, FOSresult.YLD_YTM_BID, FOSresult.DUR_BID, "", FOSresult.MVLCY, "");
                        if (temp != "")
                        {
                            ((Range)(celsh.Cells[rowindex + 1, i])).Formula = temp;
                        }
                        i++;
                    }
                    string sectorissuer = ((Range)(celsh.Cells[rowindex + 1, 39])).Text.ToString();
                    //celwbook.Save();
                    bool flag = true;
                    while (flag)
                    {
                        flag = false;
                        i = paramstartindex;
                        while (i <= (paramendindex + 1))
                        {
                            j = 2;
                            while (j <= 29)
                            {
                                if (((Range)(celsh.Cells[i, j])).Text.ToString().IndexOf("#") != -1)
                                {
                                    flag = true;
                                    break;
                                }
                                j++;
                            }
                            i++;
                        }
                    }
                    celwbook.RefreshAll();
                    this.RunMacro(celapp, new object[] { "RefreshSummary" });

                    StringBuilder html = new StringBuilder();
                    StringBuilder html2 = new StringBuilder();
                    StringBuilder html3 = new StringBuilder();
                    StringBuilder html4 = new StringBuilder();
                    /*celsh = celwbook.Sheets["IssuerExp"] as Worksheet;
                    for (int iii = 1; iii < celsh.UsedRange.Rows.Count; iii++)
                    {
                        r = (Range)celsh.Cells[iii, 1];
                        if (r.Text.ToString() == FOSresult.ISSUER)
                        {
                            htmlResult.issuer = FOSresult.ISSUER;
                        }
                    }*/
                    bool AllYes = true;
                    htmlResult.issuer = FOSresult.ISSUER;
                    celsh = celwbook.Sheets["GUIDELINES CHECK"] as Worksheet;
                    //transfer data from datatable to html
                    int step1 = 0;
                    int step2 = 0;
                    int step3 = 0;
                    int row = 0;
                    int column = 0;
                    int BBBGuidlineCheck = 0;
                    //Range r;
                    //Range rr;
                    for (int iii = 1; iii < celsh.UsedRange.Rows.Count; iii++)
                    {
                        for (int jjj = 1; jjj < celsh.UsedRange.Columns.Count; jjj++)
                        {
                            r = (Range)celsh.Cells[iii, jjj];
                            switch ((string)(r.Text.ToString()))
                            {
                                case "LIMITS":
                                    column = jjj;
                                    step1 = iii;
                                    break;
                                case "LIMITS BY SECURITY TYPES":
                                    step2 = iii;
                                    break;
                                case "LIMITS BY ISSUER":
                                    step3 = iii;
                                    break;
                                case "Issuer/Issue Rating":
                                    BBBGuidlineCheck = iii;
                                    break;
                            }
                            row++;
                            if (step3 > 0)
                                break;
                        }
                    }
                    if (FOSresult.BORS == "B")
                    {
                        if (RTG_FITCHlist.Contains(FinalRating))
                            celsh.Cells[BBBGuidlineCheck, column + 5] = "YES";
                        else
                        {
                            if (CRNCY == "IDR" || CRNCY == "INR" || CRNCY == "PHP")
                                celsh.Cells[BBBGuidlineCheck, column + 5] = "YES";
                            else
                                celsh.Cells[BBBGuidlineCheck, column + 5] = "NO";
                        }
                    }
                    else
                        celsh.Cells[BBBGuidlineCheck, column + 5] = "-";
                    html.Append("<tr>");
                    for (int kk = column; kk <= 8; kk++)
                    {
                        r = (Range)celsh.Cells[step1 + 1, kk];
                        html.Append("<th>" + r.Text.ToString() + "</th>");
                    }
                    html.Append("</tr>");
                    for (int jj = step1 + 3; jj < celsh.UsedRange.Rows.Count; jj++)
                    {
                        r = (Range)celsh.Cells[jj, column];
                        if (r.Text.ToString() == "")
                        {
                            break;
                        }
                        else
                        {
                            html.Append("<tr>");
                            for (int k = column; k <= 8; k++)
                            {
                                rr = (Range)celsh.Cells[jj, k];
                                switch (rr.Text.ToString().Trim().ToUpper())
                                {
                                    case "YES":
                                        html.Append("<td style='color:GREEN;'>" + rr.Text.ToString() + "</td>");
                                        break;
                                    case "NO":
                                        html.Append("<td style='color:RED;'>" + rr.Text.ToString() + "</td>");
                                        AllYes = false;
                                        break;
                                    default:
                                        html.Append("<td>" + rr.Text.ToString() + "</td>");
                                        break;
                                }
                            }
                            html.Append("</tr>");
                        }
                    }
                    html2.Append("<tr>");
                    for (int kk = column; kk <= 8; kk++)
                    {
                        if (kk == 3 || kk == 5)
                            continue;
                        r = (Range)celsh.Cells[step2 + 1, kk];
                        html2.Append("<th>" + r.Text.ToString() + "</th>");
                    }
                    html2.Append("</tr>");
                    for (int jj = step2 + 2; jj < celsh.UsedRange.Rows.Count; jj++)
                    {
                        r = (Range)celsh.Cells[jj, column];
                        if (r.Text.ToString() == "")
                            break;
                        else
                        {
                            html2.Append("<tr>");
                            for (int k = column; k <= 8; k++)
                            {
                                if (k == 3 || k == 5)
                                    continue;
                                rr = (Range)celsh.Cells[jj, k];
                                switch (rr.Text.ToString().Trim().ToUpper())
                                {
                                    case "YES":
                                        html2.Append("<td style='color:GREEN;'>" + rr.Text.ToString() + "</td>");
                                        break;
                                    case "NO":
                                        html2.Append("<td style='color:RED;'>" + rr.Text.ToString() + "</td>");
                                        AllYes = false;
                                        break;
                                    default:
                                        html2.Append("<td>" + rr.Text.ToString() + "</td>");
                                        break;
                                }
                                if (k == 2 || k == 4)
                                    k++;
                            }
                            html2.Append("</tr>");
                        }
                    }
                    html3.Append("<tr>");
                    for (int kk = column; kk <= 8; kk++)
                    {
                        if (kk == 3 || kk == 5)
                            continue;
                        r = (Range)celsh.Cells[step3 + 1, kk];
                        html3.Append("<th>" + r.Text.ToString() + "</th>");
                    }
                    html3.Append("</tr>");
                    for (int jj = step3 + 2; jj < celsh.UsedRange.Rows.Count; jj++)
                    {
                        r = (Range)celsh.Cells[jj, column];
                        if (r.Text.ToString().Trim() == "Grand Total" || r.Text.ToString() == "")
                            break;
                        else
                        {
                            string stemp = r.Text.ToString();
                            if (stemp.Trim().ToUpper() == sectorissuer.Trim().ToUpper())
                            //if (stemp.Substring((temp.IndexOf('-') + 1), (stemp.ToString().Length - stemp.ToString().IndexOf('-') - 1)) == sectorissuer.ToUpper())
                            {
                                html3.Append("<tr>");
                                for (int k = column; k <= 8; k++)
                                {
                                    if (k == 3 || k == 5)
                                        continue;
                                    rr = (Range)celsh.Cells[jj, k];
                                    switch (rr.Text.ToString().Trim().ToUpper())
                                    {
                                        case "YES":
                                            html3.Append("<td style='color:GREEN;'>" + rr.Text.ToString() + "</td>");
                                            break;
                                        case "NO":
                                            html3.Append("<td style='color:RED;'>" + rr.Text.ToString() + "</td>");
                                            AllYes = false;
                                            break;
                                        default:
                                            html3.Append("<td>" + rr.Text.ToString() + "</td>");
                                            break;
                                    }
                                    if (k == 2 || k == 4)
                                        k++;
                                }
                                html3.Append("</tr>");
                            }
                        }
                    }

                    html4.Append("<tr>");
                    for (int kk = column; kk <= 8; kk++)
                    {
                        if (kk == 3 || kk == 5)
                            continue;
                        r = (Range)celsh.Cells[step3 + 1, kk];
                        html4.Append("<th>" + r.Text.ToString() + "</th>");
                    }
                    html4.Append("</tr>");

                    for (int jj = step3 + 2; jj < celsh.UsedRange.Rows.Count; jj++)
                    {
                        r = (Range)celsh.Cells[jj, column];
                        if (r.Text.ToString().Trim() == "Grand Total" || r.Text.ToString() == "")
                            break;
                        else
                        {
                            rr = (Range)celsh.Cells[jj, 4];
                            string stemp = rr.Text.ToString();
                            float fstemp = 0;
                            if (float.TryParse(stemp.Substring(0, stemp.Length - 1), out fstemp))
                            {
                                if (fstemp > 3.5)
                                {
                                    html4.Append("<tr>");
                                    for (int k = column; k <= 8; k++)
                                    {
                                        if (k == 3 || k == 5)
                                            continue;
                                        rr = (Range)celsh.Cells[jj, k];
                                        switch (rr.Text.ToString().Trim().ToUpper())
                                        {
                                            case "YES":
                                                html4.Append("<td style='color:GREEN;'>" + rr.Text.ToString() + "</td>");
                                                break;
                                            case "NO":
                                                html4.Append("<td style='color:RED;'>" + rr.Text.ToString() + "</td>");
                                                AllYes = false;
                                                break;
                                            default:
                                                html4.Append("<td>" + rr.Text.ToString() + "</td>");
                                                break;
                                        }
                                        if (k == 2 || k == 4)
                                            k++;
                                    }
                                    html4.Append("</tr>");
                                }
                            }
                        }
                    }
                    //celapp.DisplayAlerts = false;
                    //celapp.Quit();
                    celwbook.Save();
                    //celwbook.Close();
                    impersonateValidUser(username, Domain, password);
                    fi1 = new FileInfo(tempworkpath +@"\"+ filename);
                    fi1.CopyTo(parentpath +@"\"+ filename, true);
                    undoImpersonation();
                    //impersonateValidUser("bbuser1", "WSG053", "bbUser01");
                    //if (celapp != null)
                    //{
                    //    Process process = new Process();
                    //    foreach (int pID in listNew.Except(listOld))
                    //    {
                    //        process = System.Diagnostics.Process.GetProcessById(pID);
                    //        process.Kill();
                    //    }

                    //    //Process.GetProcessesByName("Excel")[0].Kill();
                    //}
                    //undoImpersonation();
                    StringBuilder finalhtml = new StringBuilder();
                    finalhtml.Append("<div><h2>SUMMARY OF GUIDELINES CHECK</h2><h4>LIMITS</h4><table border='1'>");
                    finalhtml.Append(html.ToString());
                    finalhtml.Append("</table><p>*Note: Exception for Guideline 5 applies only if Guideline 4 is met</p><h4>LIMITS BY SECURITY TYPES</h4><table border='1'>");
                    finalhtml.Append(html2.ToString());
                    finalhtml.Append("</table><h4>LIMITS BY ISSUER</h4><table border='1'>");
                    finalhtml.Append(html3.ToString());
                    finalhtml.Append("</table><h4>LIMITS BY ISSUER(>3.5%)</h4><table border='1'>");
                    finalhtml.Append(html4.ToString());
                    finalhtml.Append("</table></div>");
                    htmlResult.htmlfortable = finalhtml.ToString();
                    htmlResult.Flag = AllYes;
                    impersonateValidUser("bbuser1", "WSG053", "bbUser01");
                    tw.WriteLine("Done");
                    undoImpersonation();
                    return 0;
                }
                catch (Exception e)
                {
                    return -1;

                }
                finally
                {
                    impersonateValidUser("bbuser1", "WSG053", "bbUser01");
                    tw.Close();
                    undoImpersonation();
                    //impersonateValidUser("bbuser1", "WSG053", "bbUser01");
                    //if (celapp != null)
                    //{
                    //    Process process = new Process();
                    //    foreach (int pID in listNew.Except(listOld))
                    //    {
                    //        process = System.Diagnostics.Process.GetProcessById(pID);
                    //        process.Kill();
                    //    }

                    //    //Process.GetProcessesByName("Excel")[0].Kill();
                    //}
                    //undoImpersonation();
                }
            }
            else
                return 3;
        }