Esempio n. 1
0
        /// <summary>
        /// 获取配置。
        /// </summary>
        /// <typeparam name="T">配置类型。</typeparam>
        /// <param name="getParameter">获取配置参数。</param>
        /// <param name="restartAppDomainOnChange">当配置改变时重新启动应用程序域。</param>
        /// <returns>配置。</returns>
        public override T GetMergedConfig <T>(IConfigParameter getParameter, bool restartAppDomainOnChange)
        {
            Check.Argument.IsNotNull("getParameter", getParameter);
            Check.Argument.IsAssignableFrom("getParameter", getParameter, typeof(XmlConfigGetParameter));

            T config = GetConfigFromCache <T>(getParameter);

            if (config == null)
            {
                lock (this.SyncLock)
                {
                    config = GetConfigFromCache <T>(getParameter);
                    if (config == null)
                    {
                        config = new T();

                        XmlConfigGetParameter cp = getParameter as XmlConfigGetParameter;
                        if (cp.HasFiles)
                        {
                            FileMergeResult mergeResult = new FileMergeResult(new List <string>(cp.Files));
                            foreach (string file in cp.Files)
                            {
                                try
                                {
                                    T splitConfig = Serializer.XmlSerializer.FromFile <T>(file);
                                    config.Merge(splitConfig);

                                    mergeResult.FilesMerged.Add(file);
                                }
                                catch (Exception ex)
                                {
                                    FileMergeFailReason mergeFailReasion = new FileMergeFailReason();
                                    mergeFailReasion.FileName        = file;
                                    mergeFailReasion.MergeFailReason = ExceptionHelper.GetMessage(ex);
                                    mergeResult.FileMergeFailReasons.Add(mergeFailReasion);
                                }
                            }

                            if (!mergeResult.HasFileMerged)
                            {
                                // Logger.Error
                            }
                            else if (!mergeResult.AllFilesMerged)
                            {
                                //Logger.Warning("Framework.Configuration", "XMLConfigProvider", fileMergeResult.ToString());
                            }

                            AddConfigToCache(getParameter, config);
                            SetupWacher(new XmlConfigChangeWatcher(cp));
                        }
                    }
                }
            }

            return(config);
        }
Esempio n. 2
0
        public FileMergeResult MergeCMCorporateFinance(SqlConnection con, long cmId, string foldertemplate, string temporaryFolderLocation)
        {
            DBHelper db = new DBHelper();

            List <CMData> dataResult = db.ExecToModel <CMData>(con, "dbo.Generate_Document_CM_Data_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, cmId)
            });

            System.Data.DataTable listBorrower = db.ExecToDataTable(con, "Generate_Document_CM_Borrower_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, cmId)
            });

            System.Data.DataTable listFacility = db.ExecToDataTable(con, "Generate_Document_CM_ProposalFacility_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, cmId)
            });

            System.Data.DataTable listDealTeam = db.ExecToDataTable(con, "Generate_Document_CM_DealTeam_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, cmId)
            });

            string fileName    = "CM-" + dataResult[0].ProductType + "-" + dataResult[0].CompanyName + "-" + dataResult[0].ProjectCode + ".docx";
            string fileNamePDF = "CM-" + dataResult[0].ProductType + "-" + dataResult[0].CompanyName + "-" + dataResult[0].ProjectCode + ".pdf";

            string fileTemplateName     = "CM Template - Corporate Finance.docx";
            string fileTemplateFullName = foldertemplate.AppendPath("\\", fileTemplateName);

            string getfileName = Path.GetFileName(fileTemplateFullName);
            string destFile    = Path.Combine(temporaryFolderLocation, fileName);

            File.Copy(fileTemplateFullName, destFile, true);

            object      missing  = System.Reflection.Missing.Value;
            object      readOnly = (object)false;
            Application app      = new Application();

            string currFontFamily = "";
            float  currFontSize   = 0;

            try
            {
                Document doc = app.Documents.Open(destFile, ref missing, ref readOnly);
                app.Visible = false;
                try
                {
                    #region Cover
                    Range reviewMemo = app.ActiveDocument.Bookmarks["bmReview"].Range;
                    reviewMemo.Text      = dataResult[0].ReviewMemo;
                    reviewMemo.Font.Name = "Roboto Light";
                    Range cmNumber = app.ActiveDocument.Bookmarks["bmCMnumber"].Range;
                    //cmNumber.Text = dataResult[0].c;
                    cmNumber.Font.Name = "Roboto Light";
                    Range projCompanyName = app.ActiveDocument.Bookmarks["bmCompanyName"].Range;
                    projCompanyName.Text      = dataResult[0].CompanyName;
                    projCompanyName.Font.Name = "Roboto Light";
                    Range projName = app.ActiveDocument.Bookmarks["bmProjectName"].Range;
                    projName.Text      = dataResult[0].ProjectName;
                    projName.Font.Name = "Roboto Light";
                    Range projCode = app.ActiveDocument.Bookmarks["bmProjectCode"].Range;
                    projCode.Text      = dataResult[0].ProjectCode;
                    projCode.Font.Name = "Roboto Light";
                    Range projDate = app.ActiveDocument.Bookmarks["bmProjectDate"].Range;
                    projDate.Text      = dataResult[0].CMDate.ToString("dd-MMMM-yyyy");
                    projDate.Font.Name = "Roboto Light";
                    #endregion

                    #region PROJECT
                    Range project    = app.ActiveDocument.Bookmarks["bmProject"].Range;
                    Table tblproject = app.ActiveDocument.Tables.Add(project, 4, 2, WdDefaultTableBehavior.wdWord9TableBehavior);
                    tblproject.Range.Font.Name = currFontFamily = "Roboto Light";
                    tblproject.Range.Font.Size = currFontSize = 10;
                    tblproject.set_Style("Table Grid");

                    tblproject.Columns[1].SetWidth(130, WdRulerStyle.wdAdjustFirstColumn);
                    tblproject.Cell(1, 1).Range.Text = "Project Name";
                    //tblproject.Cell(1, 2).Range.Text = dataResult[0].ProjectDescription.ToString();
                    tblproject.Cell(1, 2).Range.Text = "-";
                    tblproject.Cell(2, 1).Range.Text = "Sector – Sub sector";
                    tblproject.Cell(2, 2).Range.Text = dataResult[0].SubSector + " " + dataResult[0].SubSector;
                    tblproject.Cell(3, 1).Range.Text = "Funding Needs";
                    tblproject.Cell(3, 2).Range.InsertFile(ConvertHtmlAndFile.SaveToHtmlNew(dataResult[0].FundingNeeds, currFontFamily, currFontSize));
                    tblproject.Cell(4, 1).Range.Text = "Deal Strategy";
                    tblproject.Cell(4, 2).Range.InsertFile(ConvertHtmlAndFile.SaveToHtmlNew(dataResult[0].DealStrategy, currFontFamily, currFontSize));
                    #endregion

                    #region BORROWER
                    Range borrower    = app.ActiveDocument.Bookmarks["bmBorrower"].Range;
                    Table tblborrower = app.ActiveDocument.Tables.Add(borrower, 3, 5, WdDefaultTableBehavior.wdWord9TableBehavior);
                    int   rowCount    = 3;
                    tblborrower.Range.Font.Name = currFontFamily = "Roboto Light";
                    tblborrower.Range.Font.Size = currFontSize = 10;
                    tblborrower.set_Style("Table Grid");
                    tblborrower.AutoFitBehavior(WdAutoFitBehavior.wdAutoFitWindow);
                    tblborrower.Columns[1].SetWidth(app.InchesToPoints(1.6f / 2.54f), WdRulerStyle.wdAdjustNone);

                    tblborrower.Cell(1, 1).Range.Text = "Project Company";
                    tblborrower.Cell(1, 2).Merge(tblborrower.Cell(1, 5));

                    tblborrower.Cell(2, 1).Range.Text = "Project Sponsors";
                    tblborrower.Cell(2, 1).Range.Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;

                    tblborrower.Cell(2, 2).Range.Text = "Project Company";
                    tblborrower.Cell(2, 2).Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblborrower.Cell(2, 2).Range.Shading.BackgroundPatternColor = WdColor.wdColorGray10;

                    tblborrower.Cell(2, 3).Merge(tblborrower.Cell(2, 4));
                    tblborrower.Cell(2, 3).Range.Text = "Shareholders";
                    tblborrower.Cell(2, 3).Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblborrower.Cell(2, 3).Range.Shading.BackgroundPatternColor = WdColor.wdColorGray10;

                    tblborrower.Cell(2, 4).Range.Text = "% ownership";
                    tblborrower.Cell(2, 4).Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblborrower.Cell(2, 4).Range.Shading.BackgroundPatternColor = WdColor.wdColorGray10;

                    int rowtemp = 0;

                    string prevkey  = "";
                    string cellText = "";

                    foreach (DataRow item in listBorrower.Rows)
                    {
                        prevkey = item[0].ToString() + "\r\a";
                        if (cellText != prevkey)
                        {
                            tblborrower.Rows[rowCount].Cells[2].Range.Text = item[0].ToString();
                            cellText = tblborrower.Rows[rowCount].Cells[2].Range.Text;
                            tblborrower.Cell(1, 2).Range.Text = item[0].ToString() + " ";
                        }

                        tblborrower.Rows.Add(ref missing);
                        tblborrower.Rows[rowCount].Cells[1].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                        tblborrower.Rows[rowCount].Cells[3].Range.Text = item[1].ToString();
                        tblborrower.Rows[rowCount].Cells[5].Range.Text = item[2].ToString();
                        rowCount++;
                    }

                    rowCount++;
                    tblborrower.Rows.Add(ref missing);
                    tblborrower.Rows[rowCount].Cells[1].Range.Text = "Ultimate Beneficial Owner";
                    tblborrower.Rows[rowCount].Cells[1].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleSingle;
                    tblborrower.Rows[rowCount].Cells[1].Borders[WdBorderType.wdBorderTop].LineStyle    = WdLineStyle.wdLineStyleSingle;
                    tblborrower.Rows[rowCount].Cells[2].Range.Text = dataResult[0].UltimateBeneficialOwner;
                    rowtemp = rowCount;

                    rowCount++;
                    tblborrower.Rows.Add(ref missing);
                    tblborrower.Rows[rowCount].Cells[1].Range.Text = "Rating";
                    tblborrower.Rows[rowCount].Cells[1].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleSingle;
                    tblborrower.Rows[rowCount].Cells[1].Borders[WdBorderType.wdBorderTop].LineStyle    = WdLineStyle.wdLineStyleSingle;
                    tblborrower.Rows[rowCount].Cells[2].Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblborrower.Rows[rowCount].Cells[2].Range.Shading.BackgroundPatternColor = WdColor.wdColorGray10;
                    tblborrower.Rows[rowCount].Cells[2].Range.Text = "IIF Rating";
                    tblborrower.Rows[rowCount].Cells[3].Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblborrower.Rows[rowCount].Cells[3].Range.Shading.BackgroundPatternColor = WdColor.wdColorGray10;
                    tblborrower.Rows[rowCount].Cells[3].Range.Text = "External Rating";
                    tblborrower.Rows[rowCount].Cells[4].Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblborrower.Rows[rowCount].Cells[4].Range.Shading.BackgroundPatternColor = WdColor.wdColorGray10;
                    tblborrower.Rows[rowCount].Cells[4].Range.Text = "S&E Category";
                    tblborrower.Rows[rowCount].Cells[5].Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblborrower.Rows[rowCount].Cells[5].Range.Shading.BackgroundPatternColor = WdColor.wdColorGray10;
                    tblborrower.Rows[rowCount].Cells[5].Range.Text = "LQC/BI Checking";

                    //merge column Ultimate Beneficial Owner
                    tblborrower.Rows[rowtemp].Cells[2].Merge(tblborrower.Rows[rowtemp].Cells[5]);

                    rowCount++;
                    tblborrower.Rows.Add(ref missing);
                    tblborrower.Rows[rowCount].Cells[2].Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblborrower.Rows[rowCount].Cells[2].Range.Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                    tblborrower.Rows[rowCount].Cells[3].Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblborrower.Rows[rowCount].Cells[3].Range.Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                    tblborrower.Rows[rowCount].Cells[4].Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblborrower.Rows[rowCount].Cells[4].Range.Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                    tblborrower.Rows[rowCount].Cells[5].Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblborrower.Rows[rowCount].Cells[5].Range.Shading.BackgroundPatternColor = WdColor.wdColorWhite;

                    tblborrower.Rows[rowCount].Cells[2].Range.Text = "";
                    tblborrower.Rows[rowCount].Cells[3].Range.Text = "S&P: ";
                    tblborrower.Rows[rowCount].Cells[4].Range.Text = "";
                    tblborrower.Rows[rowCount].Cells[5].Range.Text = "";
                    tblborrower.Rows[rowCount].Cells[1].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[2].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[3].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[4].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[5].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;

                    rowCount++;
                    tblborrower.Rows.Add(ref missing);
                    tblborrower.Rows[rowCount].Cells[2].Range.Text = "Rating Date: " + Convert.ToDateTime(dataResult[0].IIFRatingDate).ToString("dd MMM yyyy");
                    tblborrower.Rows[rowCount].Cells[3].Range.Text = "Moodys: " + dataResult[0].MoodysRate;
                    tblborrower.Rows[rowCount].Cells[1].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[2].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[3].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[4].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[5].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;

                    rowCount++;
                    tblborrower.Rows.Add(ref missing);
                    tblborrower.Rows[rowCount].Cells[3].Range.Text = "Fitch: " + dataResult[0].FitchRate;
                    tblborrower.Rows[rowCount].Cells[1].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[2].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[3].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[4].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[5].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;

                    rowCount++;
                    tblborrower.Rows.Add(ref missing);
                    tblborrower.Rows[rowCount].Cells[3].Range.Text = "Pefindo: " + dataResult[0].PefindoRate;

                    rowCount++;
                    tblborrower.Rows.Add(ref missing);
                    tblborrower.Rows[rowCount].Cells[1].Range.Text = "Other information";
                    tblborrower.Rows[rowCount].Cells[2].Merge(tblborrower.Rows[rowCount].Cells[5]);
                    //tblborrower.Rows[rowCount].Cells[2].Range.Text = dataResult[0].OtherInformation;
                    tblborrower.Rows[rowCount].Cells[2].Range.InsertFile(ConvertHtmlAndFile.SaveToHtmlNew(dataResult[0].OtherInformation, currFontFamily, currFontSize));
                    tblborrower.Rows[rowCount].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleSingle;
                    #endregion

                    #region FACILITY
                    Range proposal    = app.ActiveDocument.Bookmarks["bmFacility"].Range;
                    Table tblProposal = app.ActiveDocument.Tables.Add(proposal, 3, 5, WdDefaultTableBehavior.wdWord9TableBehavior);
                    tblProposal.AutoFitBehavior(WdAutoFitBehavior.wdAutoFitWindow);
                    tblProposal.Range.Font.Name = "Roboto Light";
                    tblProposal.Range.Font.Size = 10;
                    tblProposal.set_Style("Table Grid");
                    tblProposal.Columns[1].SetWidth(app.InchesToPoints(1.8f / 2.54f), WdRulerStyle.wdAdjustNone);
                    int rowcount = 2;

                    tblProposal.Cell(1, 1).Range.Text = "Purpose";
                    tblProposal.Cell(1, 2).Merge(tblProposal.Cell(1, 3));
                    tblProposal.Cell(1, 2).Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].Purpose));

                    tblProposal.Cell(2, 1).Range.Text = "Approval Authority";
                    tblProposal.Cell(2, 2).Merge(tblProposal.Cell(2, 3));
                    tblProposal.Cell(2, 2).Range.Text = dataResult[0].ApprovalAuhority;

                    tblProposal.Cell(3, 1).Range.Text = "Facility";
                    tblProposal.Cell(3, 2).Shading.BackgroundPatternColor  = WdColor.wdColorGray10;
                    tblProposal.Cell(3, 2).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblProposal.Cell(3, 2).Range.Text = "Type";
                    tblProposal.Cell(3, 3).Shading.BackgroundPatternColor  = WdColor.wdColorGray10;
                    tblProposal.Cell(3, 3).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblProposal.Cell(3, 3).Range.Text = "Approved";
                    tblProposal.Cell(3, 4).Shading.BackgroundPatternColor  = WdColor.wdColorGray10;
                    tblProposal.Cell(3, 4).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblProposal.Cell(3, 4).Range.Text = "Proposed";
                    tblProposal.Cell(3, 5).Shading.BackgroundPatternColor  = WdColor.wdColorGray10;
                    tblProposal.Cell(3, 5).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblProposal.Cell(3, 5).Range.Text = "Outstanding";

                    foreach (DataRow item in listFacility.Rows)
                    {
                        tblProposal.Rows.Add(ref missing);
                        rowcount++;
                        tblProposal.Rows[rowcount].Cells[2].Range.Text = item[0].ToString();
                        tblProposal.Rows[rowcount].Cells[3].Range.Text = item[1].ToString() + " " + item[2].ToString();
                        tblProposal.Rows[rowcount].Cells[4].Range.Text = item[3].ToString() + " " + item[4].ToString();
                        tblProposal.Rows[rowcount].Cells[5].Range.Text = item[5].ToString() + " " + item[6].ToString();
                    }

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[1].Range.Text = "Group Exposure";
                    tblProposal.Rows[rowcount].Cells[2].Range.Text = dataResult[0].GroupExposureCurr + dataResult[0].GroupExposureAmount;

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[1].Range.Text = "Remarks";
                    tblProposal.Rows[rowcount].Cells[2].Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].Remarks));

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[1].Range.Text = "Tenor";
                    tblProposal.Rows[rowcount].Cells[2].Range.Text = dataResult[0].TenorYear + " year(s)  " + dataResult[0].TenorMonth + " month(s)";

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[1].Range.Text = "Average Loan Life";
                    tblProposal.Rows[rowcount].Cells[2].Range.Text = dataResult[0].AverageLoanLifeYear + " year(s)  " + dataResult[0].AverageLoanLifeMonth + " month(s)";

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[1].Range.Text = "Pricing";
                    tblProposal.Rows[rowcount].Cells[2].Range.Text = "Interest rate";
                    tblProposal.Rows[rowcount].Cells[3].Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].PricingInterestRate));

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[2].Range.Text = "Commitment Fee";
                    tblProposal.Rows[rowcount].Cells[3].Range.Text = dataResult[0].PricingCommitmentFee;

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[2].Range.Text = "Upfront Fee";
                    tblProposal.Rows[rowcount].Cells[3].Range.Text = dataResult[0].PricingUpfrontFacilityFee;

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[2].Range.Text = "Structuring Fee";
                    tblProposal.Rows[rowcount].Cells[3].Range.Text = dataResult[0].PricingStructuringFee;

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[2].Range.Text = "Arranger Fee";
                    tblProposal.Rows[rowcount].Cells[3].Range.Text = dataResult[0].PricingArrangerFee;

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[1].Range.Text = "Collateral";
                    tblProposal.Rows[rowcount].Cells[2].Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].PricingCollateral));

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[1].Range.Text = "Other Conditions";
                    tblProposal.Rows[rowcount].Cells[2].Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].PricingOtherConditions));

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[1].Range.Text = "Limit Compliance";
                    tblProposal.Cell(rowcount, 2).Shading.BackgroundPatternColor  = WdColor.wdColorGray10;
                    tblProposal.Cell(rowcount, 2).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblProposal.Rows[rowcount].Cells[2].Range.Text = "IDR  million, as of xx1] ";
                    tblProposal.Cell(rowcount, 3).Shading.BackgroundPatternColor  = WdColor.wdColorGray10;
                    tblProposal.Cell(rowcount, 3).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblProposal.Rows[rowcount].Cells[3].Range.Text = "Max Limit";
                    tblProposal.Cell(rowcount, 4).Shading.BackgroundPatternColor  = WdColor.wdColorGray10;
                    tblProposal.Cell(rowcount, 4).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblProposal.Rows[rowcount].Cells[4].Range.Text = "Proposed";
                    tblProposal.Cell(rowcount, 5).Shading.BackgroundPatternColor  = WdColor.wdColorGray10;
                    tblProposal.Cell(rowcount, 5).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblProposal.Rows[rowcount].Cells[5].Range.Text = "Remarks";

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[2].Range.Text = "Single Project Exposure limit";
                    //tblProposal.Columns[rowcount].Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                    tblProposal.Cell(rowcount, 2).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblProposal.Rows[rowcount].Cells[3].Range.Text = Convert.ToString(dataResult[0].FacilityLimitComplianceSingleProjectExposureMaxLimit);
                    tblProposal.Cell(rowcount, 3).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblProposal.Rows[rowcount].Cells[4].Range.Text = Convert.ToString(dataResult[0].FacilityLimitComplianceSingleProjectExposureProposed);
                    tblProposal.Cell(rowcount, 4).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblProposal.Rows[rowcount].Cells[5].Range.Text = dataResult[0].SingleProjectExposureRemarks;
                    tblProposal.Cell(rowcount, 5).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[2].Range.Text = "Product";
                    tblProposal.Cell(rowcount, 2).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblProposal.Rows[rowcount].Cells[3].Range.Text = Convert.ToString(dataResult[0].FacilityLimitComplianceProductMaxLimit);
                    tblProposal.Cell(rowcount, 3).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblProposal.Rows[rowcount].Cells[4].Range.Text = Convert.ToString(dataResult[0].FacilityLimitComplianceProductProposed);
                    tblProposal.Cell(rowcount, 4).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblProposal.Rows[rowcount].Cells[5].Range.Text = dataResult[0].ProductRemarks;
                    tblProposal.Cell(rowcount, 5).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[2].Range.Text = "Risk Rating";
                    tblProposal.Cell(rowcount, 2).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblProposal.Rows[rowcount].Cells[3].Range.Text = Convert.ToString(dataResult[0].FacilityLimitComplianceRiskRatingMaxLimit);
                    tblProposal.Cell(rowcount, 3).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblProposal.Rows[rowcount].Cells[4].Range.Text = Convert.ToString(dataResult[0].FacilityLimitComplianceRiskRatingProposed);
                    tblProposal.Cell(rowcount, 4).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblProposal.Rows[rowcount].Cells[5].Range.Text = dataResult[0].RiskRatingRemarks;
                    tblProposal.Cell(rowcount, 5).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[2].Range.Text = "Group Exposure Limit";
                    tblProposal.Cell(rowcount, 2).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblProposal.Rows[rowcount].Cells[3].Range.Text = Convert.ToString(dataResult[0].FacilityLimitComplianceGrupExposureMaxLimit);
                    tblProposal.Cell(rowcount, 3).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblProposal.Rows[rowcount].Cells[4].Range.Text = Convert.ToString(dataResult[0].FacilityLimitComplianceGrupExposureProposed);
                    tblProposal.Cell(rowcount, 4).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblProposal.Rows[rowcount].Cells[5].Range.Text = dataResult[0].GrupExposureRemarks;
                    tblProposal.Cell(rowcount, 5).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[2].Range.Text = "Sector exposure";
                    tblProposal.Cell(rowcount, 2).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblProposal.Rows[rowcount].Cells[3].Range.Text = Convert.ToString(dataResult[0].FacilityLimitComplianceSectorExposureMaxLimit);
                    tblProposal.Cell(rowcount, 3).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblProposal.Rows[rowcount].Cells[4].Range.Text = Convert.ToString(dataResult[0].FacilityLimitComplianceSectorExposureProposed);
                    tblProposal.Cell(rowcount, 4).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblProposal.Rows[rowcount].Cells[5].Range.Text = dataResult[0].SectorExposureRemarks;
                    tblProposal.Cell(rowcount, 5).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[1].Range.Text = "Exception to IIF Policy";
                    tblProposal.Rows[rowcount].Cells[2].Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].PricingExceptionToIIFPolicy));

                    rowcount++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcount].Cells[1].Range.Text = "Review Period";
                    tblProposal.Rows[rowcount].Cells[2].Range.Text = dataResult[0].ProposalReviewPeriod;
                    #endregion

                    #region D.Recommendation
                    Range     keyInvestment = app.ActiveDocument.Bookmarks["bmRecommendation"].Range;
                    Paragraph paragraph     = doc.Content.Paragraphs.Add(keyInvestment);
                    paragraph.Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].KeyInvestmentRecommendation));

                    Range recommendation = app.ActiveDocument.Bookmarks["bmRecommendation"].Range;
                    paragraph.Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].Recommendation));

                    Range accountResponsible    = app.ActiveDocument.Bookmarks["bmRecommendation"].Range;
                    Table tblAccountResponsible = app.ActiveDocument.Tables.Add(accountResponsible, 1, 3, WdDefaultTableBehavior.wdWord9TableBehavior);
                    tblAccountResponsible.Range.Font.Name = "Roboto Light";
                    tblAccountResponsible.Range.Font.Size = 10;
                    tblAccountResponsible.set_Style("Table Grid");
                    tblAccountResponsible.Columns[1].SetWidth(130, WdRulerStyle.wdAdjustFirstColumn);
                    tblAccountResponsible.AutoFitBehavior(WdAutoFitBehavior.wdAutoFitWindow);

                    tblAccountResponsible.Cell(1, 1).Range.Text = "Account Responsible";
                    tblAccountResponsible.Cell(1, 2).Range.Text = "Deal Team";
                    tblAccountResponsible.Cell(1, 2).Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblAccountResponsible.Cell(1, 2).Range.Shading.BackgroundPatternColor = WdColor.wdColorGray10;
                    tblAccountResponsible.Cell(1, 3).Range.Text = "CIO";
                    tblAccountResponsible.Cell(1, 3).Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblAccountResponsible.Cell(1, 3).Range.Shading.BackgroundPatternColor = WdColor.wdColorGray10;

                    int rowCountDealTeam = 1;
                    foreach (DataRow item in listDealTeam.Rows)
                    {
                        rowCountDealTeam++;
                        tblAccountResponsible.Rows.Add(ref missing);

                        tblAccountResponsible.Rows[rowCountDealTeam].Cells[2].Shading.BackgroundPatternColor  = WdColor.wdColorWhite;
                        tblAccountResponsible.Rows[rowCountDealTeam].Cells[2].Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                        tblAccountResponsible.Rows[rowCountDealTeam].Cells[3].Shading.BackgroundPatternColor  = WdColor.wdColorWhite;
                        tblAccountResponsible.Rows[rowCountDealTeam].Cells[3].Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                        tblAccountResponsible.Rows[rowCountDealTeam].Cells[2].Range.Text = item[0].ToString();
                        if (rowCountDealTeam <= 2)
                        {
                            tblAccountResponsible.Rows[rowCountDealTeam].Cells[3].Range.Text = dataResult[0].AccountResponsibleCIOName;
                        }
                    }
                    #endregion

                    #region Attachment
                    this.FillBookmarkWithCMAttachmentType1(app, con, "bmPeriodicReview", AppConstants.TableName.CM_PeriodicReview, cmId);
                    this.FillBookmarkWithCMAttachmentType1(app, con, "bmPreviousApproval", AppConstants.TableName.CM_PreviousApprovals, cmId);
                    this.FillBookmarkWithCMAttachmentType1(app, con, "bmRiskRating", AppConstants.TableName.CM_RiskRating, cmId);
                    this.FillBookmarkWithCMAttachmentType1(app, con, "bmKYCchecklist", AppConstants.TableName.CM_KYCChecklists, cmId);
                    this.FillBookmarkWithCMAttachmentType1(app, con, "bmSAndEReview", AppConstants.TableName.CM_SAndEReview, cmId);
                    this.FillBookmarkWithCMAttachmentType1(app, con, "bmOtherbankFacilities", AppConstants.TableName.CM_OtherBanksFacilities, cmId);
                    this.FillBookmarkWithCMAttachmentType1(app, con, "bmOtherAttachment", AppConstants.TableName.CM_OtherAttachment, cmId);
                    #endregion

                    doc.PageSetup.PaperSize = WdPaperSize.wdPaperA4;
                    //doc.SaveAs2(Path.Combine(temporaryFolderLocation, fileNamePDF), WdExportFormat.wdExportFormatPDF);
                    doc.SaveAs2(Path.Combine(temporaryFolderLocation, fileName));
                }
                finally
                {
                    doc.Close(WdSaveOptions.wdDoNotSaveChanges);
                }
            }
            finally
            {
                app.Quit();
            }

            //File.Delete(destFile);
            //string destFilePDF = Path.Combine(temporaryFolderLocation, fileNamePDF);
            //byte[] fileContent = File.ReadAllBytes(destFilePDF);

            FileMergeResult result = new FileMergeResult();
            //result.FileContent = fileContent;
            //result.FileName = fileNamePDF;
            return(result);
        }
Esempio n. 3
0
        public FileMergeResult MergePAMEquityFinance(SqlConnection con, long pamId, string foldertemplate, string temporaryFolderLocation)
        {
            DBHelper db = new DBHelper();

            //foldertemplate = ConfigurationManager.AppSettings["PAM_TEMPLATE_FOLDER_LOCATION"];
            //temporaryFolderLocation = ConfigurationManager.AppSettings["PAM_MERGE_FOLDER_LOCATION"];

            List <PAMData> dataResult = db.ExecToModel <PAMData>(con, "dbo.Generate_Document_PAM_Data_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, pamId)
            });

            System.Data.DataTable listBorrower = db.ExecToDataTable(con, "Generate_Document_PAM_Borrower_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, pamId)
            });
            System.Data.DataTable listBorrowerCover = db.ExecToDataTable(con, "Generate_Document_PAM_Borrower_Cover_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, pamId)
            });

            System.Data.DataTable listFacility = db.ExecToDataTable(con, "Generate_Document_PAM_ProposalFacility_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, pamId)
            });

            System.Data.DataTable listDealTeam = db.ExecToDataTable(con, "Generate_Document_PAM_DealTeam_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, pamId)
            });

            System.Data.DataTable listDocVersion = db.ExecToDataTable(con, "Generate_Document_PAM_Version_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, pamId)
            });

            string fileName             = "PAM-" + dataResult[0].ProductType + "-" + dataResult[0].ProjectCompanyName + "-" + dataResult[0].ProjectCode + ".docx";
            string fileNamePDF          = "PAM-" + dataResult[0].ProductType + "-" + dataResult[0].ProjectCompanyName + "-" + dataResult[0].ProjectCode + ".pdf";
            string fileTemplateName     = "PAM Equity Investment Template.docx";
            string fileTemplateFullName = foldertemplate.AppendPath("\\", fileTemplateName);

            string getfileName = Path.GetFileName(fileTemplateFullName);
            string destFile    = Path.Combine(temporaryFolderLocation, fileName);

            IIFCommon.copyFromNetwork(fileTemplateFullName, destFile, foldertemplate, temporaryFolderLocation);

            object      missing  = System.Reflection.Missing.Value;
            object      readOnly = (object)false;
            Application app      = new Application();

            string currFontFamily = "Roboto Light";
            float  currFontSize   = 10;

            try
            {
                Document doc = app.Documents.Open(destFile, ref missing, ref readOnly);
                app.Visible = false;
                try
                {
                    #region Cover
                    //app.ActiveDocument.Bookmarks["CompanyName"].Range.Text = dataResult[0].ProjectCompanyName;

                    int           countBorrower    = 0;
                    int           countSetBorrower = 0;
                    string        prevBorrower     = "";
                    string        currentBorrower  = "";
                    List <String> lsBorrower       = new List <string>();

                    foreach (DataRow item in listBorrowerCover.Rows)
                    {
                        countBorrower++;
                        prevBorrower = item[0].ToString().Trim().ToLower();

                        if (!lsBorrower.Contains(prevBorrower))
                        {
                            if (countBorrower > 5)
                            {
                                continue;
                            }
                            countSetBorrower++;
                            app.ActiveDocument.Bookmarks["CompanyName" + (countSetBorrower)].Range.Text = item[0].ToString();

                            currentBorrower = item[0].ToString().Trim().ToLower();

                            lsBorrower.Add(currentBorrower);
                        }
                    }


                    app.ActiveDocument.Bookmarks["ProjectName"].Range.Text = dataResult[0].ProjectName;

                    app.ActiveDocument.Bookmarks["ProjectCode"].Range.Text = dataResult[0].ProjectCode;
                    System.Globalization.CultureInfo cult = new System.Globalization.CultureInfo("en-us");
                    string dateToShow = string.Format(cult, "{0:dd-MMMM-yyyy}", dataResult[0].PAMDate);
                    app.ActiveDocument.Bookmarks["ProjectDate"].Range.Text = dateToShow;

                    //app.ActiveDocument.Bookmarks["FooterProjectCode"].Range.Text = dataResult[0].ProjectCode;
                    #endregion

                    #region PROJECT
                    app.ActiveDocument.Bookmarks["AxPROJECTxProjectName"].Range.Text     = dataResult[0].ProjectName;
                    app.ActiveDocument.Bookmarks["AxPROJECTxSectorSubsector"].Range.Text = dataResult[0].SectorDesc + " - " + dataResult[0].SubSectorDesc;
                    this.FillBookmarkWithPAMAttachmentABNormal(app, con, "AxPROJECTxFundingNeeds", AppConstants.TableName.PAM_ProjectData, pamId, "FundingNeeds", "Id");
                    this.FillBookmarkWithPAMAttachmentABNormal(app, con, "AxPROJECTxDealStrategy", AppConstants.TableName.PAM_ProjectData, pamId, "DealStrategy", "Id");
                    #endregion

                    #region BORROWER
                    app.ActiveDocument.Bookmarks["BxBORROWERxInvesteeCompany"].Range.Text = dataResult[0].ProjectCompanyName;

                    Table tblShareholders = IIFCommon.createTable(app, "BxBORROWERxShareholders", 3, true);
                    //header
                    tblShareholders.Cell(1, 1).Range.Text = "Target Company";
                    tblShareholders.Cell(1, 2).Range.Text = "Shareholders";
                    tblShareholders.Cell(1, 3).Range.Text = "% ownership";

                    string prevkey    = "";
                    string cellText   = "";
                    int    rowCounter = 1;
                    int    rowTemp    = 0;
                    foreach (DataRow item in listBorrower.Rows)
                    {
                        tblShareholders.Rows.Add(ref missing);
                        rowCounter++;

                        prevkey = item[0].ToString().Trim().ToLower();
                        if (cellText.Trim().ToLower() != prevkey.Trim().ToLower())
                        {
                            //merge kolom kalo value nya beda, mulai row ke 3
                            if (rowCounter > 2 && (rowTemp != (rowCounter - 1)))
                            {
                                tblShareholders.Cell(rowTemp, 1).Merge(tblShareholders.Cell(rowCounter - 1, 1));
                            }

                            rowTemp = rowCounter;

                            tblShareholders.Cell(rowCounter, 1).Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                            tblShareholders.Cell(rowCounter, 1).Range.Text = item[0].ToString().Trim();
                            cellText = item[0].ToString().Trim().ToLower();
                            tblShareholders.Cell(rowCounter, 1).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                        }

                        tblShareholders.Cell(rowCounter, 2).Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                        tblShareholders.Cell(rowCounter, 2).Range.Text = item[1].ToString().Trim();
                        tblShareholders.Cell(rowCounter, 2).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;

                        tblShareholders.Cell(rowCounter, 3).Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                        tblShareholders.Cell(rowCounter, 3).Range.Text = item[2].ToString().Trim();
                        tblShareholders.Cell(rowCounter, 3).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;
                    }

                    //merge kolom untuk value trakhir
                    if (rowCounter > 2 && (rowTemp != rowCounter))
                    {
                        tblShareholders.Cell(rowTemp, 1).Merge(tblShareholders.Cell(rowCounter, 1));
                    }

                    app.ActiveDocument.Bookmarks["BxBORROWERxUltimateBeneficialOwner"].Range.Text = dataResult[0].UltimateBeneficialOwner;

                    app.ActiveDocument.Bookmarks["BxBORROWERxRatingxSP"].Range.Text            = dataResult[0].SAndPRate;
                    app.ActiveDocument.Bookmarks["BxBORROWERxRatingxMoodys"].Range.Text        = dataResult[0].MoodysRate;
                    app.ActiveDocument.Bookmarks["BxBORROWERxRatingxFitch"].Range.Text         = dataResult[0].FitchRate;
                    app.ActiveDocument.Bookmarks["BxBORROWERxRatingxPefindo"].Range.Text       = dataResult[0].PefindoRate;
                    app.ActiveDocument.Bookmarks["BxBORROWERxRatingxSAndECategory"].Range.Text = dataResult[0].SAndECategoryRate + "-" + dataResult[0].SAndECategoryType;
                    app.ActiveDocument.Bookmarks["BxBORROWERxRatingxLQCBIChecking"].Range.Text = dataResult[0].LQCOrBICheckingRate;

                    this.FillBookmarkWithPAMAttachmentABNormal(app, con, "BxBORROWERxBusinessActivities", AppConstants.TableName.PAM_BorrowerOrTargetCompanyData, pamId, "BusinessActivities", "Id");
                    this.FillBookmarkWithPAMAttachmentABNormal(app, con, "BxBORROWERxOtherInformation", AppConstants.TableName.PAM_BorrowerOrTargetCompanyData, pamId, "OtherInformation", "Id");
                    #endregion

                    #region PROPOSAL
                    this.FillBookmarkWithPAMAttachmentABNormal(app, con, "CxPROPOSALxPurpose", AppConstants.TableName.PAM_ProposalData, pamId, "Purpose", "Id");

                    app.ActiveDocument.Bookmarks["CxPROPOSALxApprovalAuthority"].Range.Text = dataResult[0].ApprovalAuthority;

                    Table tblFacility = IIFCommon.createTable(app, "CxPROPOSALxInvestment", 2, true);
                    //header
                    tblFacility.Cell(1, 1).Range.Text = "Type";
                    tblFacility.Cell(1, 2).Range.Text = "Amount";

                    rowCounter = 1;

                    foreach (DataRow item in listFacility.Rows)
                    {
                        tblFacility.Rows.Add(ref missing);
                        rowCounter++;

                        tblFacility.Cell(rowCounter, 1).Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                        tblFacility.Cell(rowCounter, 1).Range.Text = item[0].ToString();
                        tblFacility.Cell(rowCounter, 1).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;

                        tblFacility.Cell(rowCounter, 2).Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                        tblFacility.Cell(rowCounter, 2).Range.Text = item[1].ToString() + " " + item[2].ToString();
                        tblFacility.Cell(rowCounter, 2).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;
                    }

                    tblFacility.Rows.Add(ref missing);
                    tblFacility.Cell(rowCounter + 1, 1).Range.Text = "Remarks : " + dataResult[0].FacilityOrInvestmentRemarks;
                    tblFacility.Cell(rowCounter + 1, 1).Merge(tblFacility.Cell(rowCounter + 1, 2));
                    tblFacility.Cell(rowCounter + 1, 1).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;

                    app.ActiveDocument.Bookmarks["CxPROPOSALxGroupExposure"].Range.Text = dataResult[0].GroupExposureCurr + " " + dataResult[0].GroupExposureAmount;

                    this.FillBookmarkWithPAMAttachmentABNormal(app, con, "CxPROPOSALxRemarks", AppConstants.TableName.PAM_ProposalData, pamId, "Remarks", "Id");
                    app.ActiveDocument.Bookmarks["CxPROPOSALxExpectedHoldingPeriod"].Range.Text = dataResult[0].ExpectedHoldingPeriodYear + " Year(s) " + dataResult[0].ExpectedHoldingPeriodMonth + " Month(s)";
                    this.FillBookmarkWithPAMAttachmentABNormal(app, con, "CxPROPOSALxExitStrategy", AppConstants.TableName.PAM_ProposalData, pamId, "ExitStrategy", "Id");
                    this.FillBookmarkWithPAMAttachmentABNormal(app, con, "CxPROPOSALxExpectedReturn", AppConstants.TableName.PAM_ProposalData, pamId, "ExpectedReturn", "Id");
                    this.FillBookmarkWithPAMAttachmentABNormal(app, con, "CxPROPOSALxOtherCondition", AppConstants.TableName.PAM_ProposalData, pamId, "PricingOtherConditions", "Id");
                    this.FillBookmarkWithPAMAttachmentABNormal(app, con, "CxPROPOSALxExceptionToIIFPolicy", AppConstants.TableName.PAM_ProposalData, pamId, "PricingExceptionToIIFPolicy", "Id");
                    app.ActiveDocument.Bookmarks["CxPROPOSALxReviewPeriod"].Range.Text = dataResult[0].reviewPeriod;
                    #endregion

                    #region RECOMMENDATION
                    this.FillBookmarkWithPAMAttachmentABNormal(app, con, "DxRECOMMENDATIONxKeyInvestment", AppConstants.TableName.PAM_RecommendationData, pamId, "KeyInvestmentRecommendation", "Id");
                    this.FillBookmarkWithPAMAttachmentABNormal(app, con, "DxRECOMMENDATION", AppConstants.TableName.PAM_RecommendationData, pamId, "Recommendation", "Id");

                    Table tblDealTeam = IIFCommon.createTable(app, "DxRECOMMENDATIONxDealTeam", 1, false);
                    tblDealTeam.Borders.Enable = 0;
                    rowCounter = 0;
                    foreach (DataRow item in listDealTeam.Rows)
                    {
                        tblDealTeam.Rows.Add(ref missing);
                        rowCounter++;
                        tblDealTeam.Cell(rowCounter, 1).Range.Text = item[0].ToString();
                        tblDealTeam.Cell(rowCounter, 1).Range.Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                        tblDealTeam.Cell(rowCounter, 1).Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphLeft;
                    }

                    app.ActiveDocument.Bookmarks["DxRECOMMENDATIONxCIO"].Range.Text = dataResult[0].AccountResponsibleCIOName;

                    #endregion

                    #region Attachment
                    this.FillBookmarkWithPAMAttachmentNormal(app, con, "ProjectAnalysis", AppConstants.TableName.PAM_ProjectAnalysis, pamId);
                    this.FillBookmarkWithPAMAttachmentNormal(app, con, "HistoricalFinancialandFinancialProject", AppConstants.TableName.PAM_HistoricalFinancial, pamId);
                    this.FillBookmarkWithPAMAttachmentNormal(app, con, "Supplemental", AppConstants.TableName.PAM_Supplemental, pamId);
                    this.FillBookmarkWithPAMAttachmentNormal(app, con, "SocialEnvironmental", AppConstants.TableName.PAM_Social, pamId);
                    this.FillBookmarkWithPAMAttachmentNormal(app, con, "TermSheet", AppConstants.TableName.PAM_TermSheet, pamId);
                    this.FillBookmarkWithPAMAttachmentNormal(app, con, "RiskRating", AppConstants.TableName.PAM_RiskRating, pamId);
                    this.FillBookmarkWithPAMAttachmentNormal(app, con, "KYCChecklists", AppConstants.TableName.PAM_KYCChecklists, pamId);
                    this.FillBookmarkWithPAMAttachmentNormal(app, con, "OtherBanksfacilities", AppConstants.TableName.PAM_OtherBanksFacilities, pamId);
                    this.FillBookmarkWithPAMAttachmentNormal(app, con, "ShareValuationReport", AppConstants.TableName.PAM_ShareValuationReport, pamId);

                    System.Data.DataTable listLegalDue = db.ExecToDataTable(con, "Generate_Document_PAM_LegalDue_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                        this.NewSqlParameter("@Id", SqlDbType.BigInt, pamId)
                    });
                    IIFCommon.createLegalSAndEDueOtherReportTable(app, listLegalDue, "LegalDuediligenceReportAttachment", "LegalDuediligenceReportDescription", currFontFamily, currFontSize);

                    System.Data.DataTable listSAndDue = db.ExecToDataTable(con, "Generate_Document_PAM_SAndDue_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                        this.NewSqlParameter("@Id", SqlDbType.BigInt, pamId)
                    });
                    IIFCommon.createLegalSAndEDueOtherReportTable(app, listSAndDue, "SAndDuediligenceReportAttachment", "SAndDuediligenceReportDescription", currFontFamily, currFontSize);

                    System.Data.DataTable listOtherReport = db.ExecToDataTable(con, "Generate_Document_PAM_OtherReport_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                        this.NewSqlParameter("@Id", SqlDbType.BigInt, pamId)
                    });
                    IIFCommon.createLegalSAndEDueOtherReportTable(app, listOtherReport, "OtherReportAttachment", "OtherReportDescription", currFontFamily, currFontSize);
                    #endregion

                    IIFCommon.finalizeDoc(doc);
                    IIFCommon.injectFooterPAM(doc, dataResult[0].ProjectCode);

                    bool isPreview = false;
                    try
                    {
                        if (dataResult[0].MWorkflowStatusId != null && dataResult[0].MWorkflowStatusId == 7)
                        {
                            isPreview = true;
                        }
                    }
                    catch { }
                    fileNamePDF = IIFCommon.fileNameFormat(listDocVersion, fileNamePDF, isPreview);

                    doc.SaveAs2(Path.Combine(temporaryFolderLocation, fileNamePDF), WdExportFormat.wdExportFormatPDF);
                    //doc.SaveAs2(Path.Combine(temporaryFolderLocation, fileName));
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    doc.Close(WdSaveOptions.wdDoNotSaveChanges);
                }
            }
            finally
            {
                app.Quit();
            }

            File.Delete(destFile);
            string destFilePDF = Path.Combine(temporaryFolderLocation, fileNamePDF);
            byte[] fileContent = File.ReadAllBytes(destFilePDF);

            FileMergeResult result = new FileMergeResult();
            result.FileContent = fileContent;
            result.FileName    = fileNamePDF;
            return(result);
        }
Esempio n. 4
0
        public FileMergeResult MergePAMCorporateFinance(SqlConnection con, long pamId, string foldertemplate, string temporaryFolderLocation)
        {
            DBHelper db = new DBHelper();

            List <PAMData> dataResult = db.ExecToModel <PAMData>(con, "dbo.Generate_Document_PAM_Data_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, pamId)
            });

            System.Data.DataTable listBorrower = db.ExecToDataTable(con, "Generate_Document_PAM_Borrower_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, pamId)
            });

            System.Data.DataTable listFacility = db.ExecToDataTable(con, "Generate_Document_PAM_ProposalFacility_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, pamId)
            });

            System.Data.DataTable listDealTeam = db.ExecToDataTable(con, "Generate_Document_PAM_DealTeam_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, pamId)
            });

            string fileName = "PAM-" + dataResult[0].ProductType + "-" + dataResult[0].ProjectCompanyName + "-" + dataResult[0].ProjectCode + ".docx";

            string fileNamePDF          = "PAM-" + dataResult[0].ProductType + "-" + dataResult[0].ProjectCompanyName + "-" + dataResult[0].ProjectCode + ".pdf";
            string fileTemplateName     = "PAM Template - Corporate Finance.docx";
            string fileTemplateFullName = foldertemplate.AppendPath("\\", fileTemplateName);

            string getfileName = Path.GetFileName(fileTemplateFullName);
            string destFile    = Path.Combine(temporaryFolderLocation, fileName);

            File.Copy(fileTemplateFullName, destFile, true);

            object      missing  = System.Reflection.Missing.Value;
            object      readOnly = (object)false;
            Application app      = new Application();

            try
            {
                Document doc = app.Documents.Open(destFile, ref missing, ref readOnly);
                app.Visible = false;
                try
                {
                    #region header & Footer
                    //doc.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekCurrentPageFooter;
                    //Object oMissing = System.Reflection.Missing.Value;
                    //doc.ActiveWindow.Selection.TypeText("Review Memorandum – Project Finance");
                    //Object TotalPages = WdFieldType.wdFieldNumPages;
                    //Object CurrentPage = WdFieldType.wdFieldPage;
                    //doc.ActiveWindow.Selection.TypeText("\t\t");
                    //doc.ActiveWindow.Selection.Fields.Add(doc.ActiveWindow.Selection.Range, ref CurrentPage, ref oMissing, ref oMissing);
                    #endregion

                    #region Cover
                    this.SetBookmarkText(app, "BorrowerName", dataResult[0].ProjectCompanyName);
                    this.SetBookmarkText(app, "ProjectName", dataResult[0].ProjectName);
                    this.SetBookmarkText(app, "ProjectCode", dataResult[0].ProjectCode);
                    this.SetBookmarkText(app, "ProjectDate", dataResult[0].PAMDate.ToString("dd-MMMM-yyyy"));

                    #endregion

                    #region A.Project
                    Range project    = app.ActiveDocument.Bookmarks["ExecutiveSummary"].Range;
                    Table tblproject = app.ActiveDocument.Tables.Add(project, 4, 2, WdDefaultTableBehavior.wdWord9TableBehavior);
                    tblproject.Range.Font.Name = "Roboto Light";
                    tblproject.Range.Font.Size = 10;
                    tblproject.set_Style("Table Grid");

                    tblproject.Columns[1].SetWidth(120, WdRulerStyle.wdAdjustFirstColumn);
                    tblproject.Cell(1, 1).Range.Text = "Borrower Name";
                    tblproject.Cell(1, 2).Range.Text = dataResult[0].ProjectCompanyName.ToString();
                    tblproject.Cell(2, 1).Range.Text = "Sector – Sub sector";
                    tblproject.Cell(2, 2).Range.Text = dataResult[0].Sector + " - " + dataResult[0].SubSector;
                    tblproject.Cell(3, 1).Range.Text = "Funding Needs";

                    Logger.Error("yefta:" + dataResult[0].FundingNeeds);


                    tblproject.Cell(3, 2).Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].FundingNeeds));
                    tblproject.Cell(4, 1).Range.Text = "Deal Strategy";
                    tblproject.Cell(4, 2).Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].DealStrategy));
                    #endregion

                    #region B.Borrower
                    Range borrower    = app.ActiveDocument.Bookmarks["Borrower"].Range;
                    Table tblborrower = app.ActiveDocument.Tables.Add(borrower, 2, 5, WdDefaultTableBehavior.wdWord9TableBehavior);
                    tblborrower.Range.Font.Name = "Roboto Light";
                    tblborrower.Range.Font.Size = 10;
                    tblborrower.set_Style("Table Grid");
                    tblborrower.Columns[1].SetWidth(100, WdRulerStyle.wdAdjustFirstColumn);

                    tblborrower.Cell(1, 1).Range.Text = "Borrower Company";

                    string prevkey  = "";
                    string cellText = "";
                    foreach (DataRow items in listBorrower.Rows)
                    {
                        prevkey = items[0].ToString() + "\r\a";
                        if (cellText != prevkey)
                        {
                            tblborrower.Cell(1, 2).Range.Text = items[0].ToString();
                            cellText = tblborrower.Cell(1, 2).Range.Text;
                        }
                    }

                    tblborrower.Cell(2, 1).Range.Text = "Shareholders";
                    tblborrower.Cell(2, 1).Range.Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;

                    tblborrower.Cell(2, 2).SetWidth(140, WdRulerStyle.wdAdjustFirstColumn);
                    tblborrower.Cell(2, 2).Range.Text = "Borrower(s)";
                    tblborrower.Cell(2, 2).Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblborrower.Cell(2, 2).Range.Shading.BackgroundPatternColor = WdColor.wdColorGray10;

                    tblborrower.Cell(2, 3).Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblborrower.Cell(2, 3).Range.Shading.BackgroundPatternColor = WdColor.wdColorGray10;
                    tblborrower.Cell(2, 3).Range.Text = "Shareholders";

                    tblborrower.Cell(2, 5).Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblborrower.Cell(2, 5).Range.Shading.BackgroundPatternColor = WdColor.wdColorGray10;
                    tblborrower.Cell(2, 5).Range.Text = "% ownership";

                    string prevkey1  = "";
                    string cellText1 = "";
                    int    rowCount  = 2;
                    foreach (DataRow item in listBorrower.Rows)
                    {
                        rowCount++;
                        tblborrower.Rows.Add(ref missing);

                        prevkey1 = item[0].ToString() + "\r\a";
                        if (cellText1 != prevkey1)
                        {
                            tblborrower.Rows[rowCount].Cells[2].Range.Text = item[0].ToString();
                            tblborrower.Rows[rowCount].Cells[2].Range.Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                            tblborrower.Rows[rowCount].Cells[3].Range.Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                            tblborrower.Rows[rowCount].Cells[5].Range.Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                            cellText1 = tblborrower.Rows[rowCount].Cells[2].Range.Text;
                            tblborrower.Cell(1, 2).Range.Text      = item[0].ToString() + " ";
                            tblborrower.Cell(1, 2).Range.Font.Name = "Roboto Light";
                            tblborrower.Cell(1, 2).Range.Font.Size = 10;
                        }
                        tblborrower.Rows[rowCount].Cells[1].Borders[WdBorderType.wdBorderTop].LineStyle    = WdLineStyle.wdLineStyleNone;
                        tblborrower.Rows[rowCount].Cells[1].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                        tblborrower.Rows[rowCount].Cells[3].Range.Text      = item[1].ToString();
                        tblborrower.Rows[rowCount].Cells[3].Range.Font.Name = "Roboto Light";
                        tblborrower.Rows[rowCount].Cells[3].Range.Font.Size = 10;
                        var Ownership = Convert.ToDecimal(item[2]);
                        tblborrower.Rows[rowCount].Cells[5].Range.Text      = Ownership.ToString("#,#");
                        tblborrower.Rows[rowCount].Cells[5].Range.Font.Name = "Roboto Light";
                        tblborrower.Rows[rowCount].Cells[5].Range.Font.Size = 10;
                    }

                    rowCount++;
                    tblborrower.Rows.Add(ref missing);
                    tblborrower.Rows[rowCount].Cells[1].Range.Text = "Ultimate Beneficial Owner";
                    tblborrower.Rows[rowCount].Cells[1].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleSingle;
                    tblborrower.Rows[rowCount].Cells[1].Borders[WdBorderType.wdBorderTop].LineStyle    = WdLineStyle.wdLineStyleSingle;
                    tblborrower.Rows[rowCount].Cells[2].Range.Text      = dataResult[0].UltimateBeneficialOwner;
                    tblborrower.Rows[rowCount].Cells[2].Range.Font.Name = "Roboto Light";
                    int rowtemp = rowCount;

                    rowCount++;
                    tblborrower.Rows.Add(ref missing);
                    tblborrower.Rows[rowCount].Range.Font.Name     = "Roboto Light";
                    tblborrower.Rows[rowCount].Cells[1].Range.Text = "Rating";
                    tblborrower.Rows[rowCount].Cells[1].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[2].Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblborrower.Rows[rowCount].Cells[2].Range.Shading.BackgroundPatternColor = WdColor.wdColorGray10;
                    tblborrower.Rows[rowCount].Cells[2].Range.Text = "IIF Rating";
                    tblborrower.Rows[rowCount].Cells[3].Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblborrower.Rows[rowCount].Cells[3].Range.Shading.BackgroundPatternColor = WdColor.wdColorGray10;
                    tblborrower.Rows[rowCount].Cells[3].Range.Text = "External Rating";
                    tblborrower.Rows[rowCount].Cells[4].Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblborrower.Rows[rowCount].Cells[4].Range.Shading.BackgroundPatternColor = WdColor.wdColorGray10;
                    tblborrower.Rows[rowCount].Cells[4].Range.Text = "S&E Category";
                    tblborrower.Rows[rowCount].Cells[5].Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblborrower.Rows[rowCount].Cells[5].Range.Shading.BackgroundPatternColor = WdColor.wdColorGray10;
                    tblborrower.Rows[rowCount].Cells[5].Range.Text = "LQC/BI Checking";

                    rowCount++;
                    tblborrower.Rows.Add(ref missing);
                    tblborrower.Rows[rowCount].Cells[1].Borders[WdBorderType.wdBorderTop].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[2].Range.ParagraphFormat.Alignment             = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblborrower.Rows[rowCount].Cells[2].Range.Shading.BackgroundPatternColor        = WdColor.wdColorWhite;
                    tblborrower.Rows[rowCount].Cells[3].Range.ParagraphFormat.Alignment             = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblborrower.Rows[rowCount].Cells[3].Range.Shading.BackgroundPatternColor        = WdColor.wdColorWhite;
                    tblborrower.Rows[rowCount].Cells[4].Range.ParagraphFormat.Alignment             = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblborrower.Rows[rowCount].Cells[4].Range.Shading.BackgroundPatternColor        = WdColor.wdColorWhite;
                    tblborrower.Rows[rowCount].Cells[5].Range.ParagraphFormat.Alignment             = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblborrower.Rows[rowCount].Cells[5].Range.Shading.BackgroundPatternColor        = WdColor.wdColorWhite;

                    tblborrower.Rows[rowCount].Cells[2].Range.Text      = dataResult[0].IIFRate;
                    tblborrower.Rows[rowCount].Cells[3].Range.Text      = "S&P: " + dataResult[0].SAndPRate;
                    tblborrower.Rows[rowCount].Cells[3].Range.Font.Name = "Roboto Light";
                    tblborrower.Rows[rowCount].Cells[4].Range.Text      = dataResult[0].SAndECategoryRate;
                    tblborrower.Rows[rowCount].Cells[5].Range.Text      = dataResult[0].LQCOrBICheckingRate;;
                    tblborrower.Rows[rowCount].Cells[1].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[2].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[3].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[4].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[5].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;

                    rowCount++;
                    tblborrower.Rows.Add(ref missing);
                    tblborrower.Rows[rowCount].Cells[1].Borders[WdBorderType.wdBorderTop].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[2].Borders[WdBorderType.wdBorderTop].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[3].Borders[WdBorderType.wdBorderTop].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[4].Borders[WdBorderType.wdBorderTop].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[5].Borders[WdBorderType.wdBorderTop].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblborrower.Rows[rowCount].Cells[2].Range.Text      = "Rating Date: " + dataResult[0].IIFRatingDate.Value.ToString("dd-MMM-yyyy");
                    tblborrower.Rows[rowCount].Cells[2].Range.Font.Name = "Roboto Light";
                    tblborrower.Rows[rowCount].Cells[3].Range.Text      = "Moodys: " + dataResult[0].MoodysRate;
                    tblborrower.Rows[rowCount].Cells[3].Range.Font.Name = "Roboto Light";

                    rowCount++;
                    tblborrower.Rows.Add(ref missing);
                    tblborrower.Rows[rowCount].Cells[3].Range.Text      = "Fitch: " + dataResult[0].FitchRate;
                    tblborrower.Rows[rowCount].Cells[3].Range.Font.Name = "Roboto Light";

                    rowCount++;
                    tblborrower.Rows.Add(ref missing);
                    tblborrower.Rows[rowCount].Cells[3].Range.Text      = "Pefindo: " + dataResult[0].PefindoRate;
                    tblborrower.Rows[rowCount].Cells[3].Range.Font.Name = "Roboto Light";

                    rowCount++;
                    int countBusinessActivities = rowCount;
                    tblborrower.Rows.Add(ref missing);
                    tblborrower.Rows[rowCount].Cells[1].Range.Text = "Business Activities";
                    tblborrower.Rows[rowCount].Cells[2].Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].BusinessActivities));
                    tblborrower.Rows[rowCount].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleSingle;
                    tblborrower.Rows[rowCount].Borders[WdBorderType.wdBorderTop].LineStyle    = WdLineStyle.wdLineStyleSingle;
                    tblborrower.Rows[rowCount].Range.Font.Name = "Roboto Light";

                    rowCount++;
                    tblborrower.Rows.Add(ref missing);
                    int countOtherinfo = rowCount;
                    tblborrower.Rows[rowCount].Cells[1].Range.Text = "Other information";
                    tblborrower.Rows[rowCount].Cells[2].Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].OtherInformation));
                    tblborrower.Rows[rowCount].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleSingle;
                    tblborrower.Rows[rowCount].Range.Font.Name = "Roboto Light";

                    tblborrower.Cell(1, 2).Merge(tblborrower.Cell(1, 5));
                    tblborrower.Cell(2, 3).Merge(tblborrower.Cell(2, 4));
                    tblborrower.Cell(2, 3).SetWidth(130, WdRulerStyle.wdAdjustSameWidth);

                    for (int a = 1; a <= listBorrower.Rows.Count; a++)
                    {
                        tblborrower.Cell(2 + a, 3).Merge(tblborrower.Cell(2 + a, 4));
                        tblborrower.Cell(2 + a, 3).SetWidth(130, WdRulerStyle.wdAdjustSameWidth);
                    }
                    tblborrower.Rows[countOtherinfo].Cells[2].Merge(tblborrower.Rows[countOtherinfo].Cells[5]);
                    tblborrower.Rows[countBusinessActivities].Cells[2].Merge(tblborrower.Rows[countBusinessActivities].Cells[5]);
                    tblborrower.Rows[rowtemp].Cells[2].Merge(tblborrower.Rows[rowtemp].Cells[5]);
                    #endregion

                    #region C.Proposal
                    Range proposal    = app.ActiveDocument.Bookmarks["Proposal"].Range;
                    Table tblProposal = app.ActiveDocument.Tables.Add(proposal, 3, 3, WdDefaultTableBehavior.wdWord9TableBehavior);
                    tblProposal.Range.Font.Name = "Roboto Light";
                    tblProposal.Range.Font.Size = 10;
                    tblProposal.set_Style("Table Grid");
                    tblProposal.Columns[1].SetWidth(130, WdRulerStyle.wdAdjustFirstColumn);
                    tblProposal.AutoFitBehavior(WdAutoFitBehavior.wdAutoFitWindow);

                    tblProposal.Cell(1, 1).Range.Text = "Purpose";
                    tblProposal.Cell(1, 2).Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].Purpose));
                    tblProposal.Cell(1, 2).Merge(tblProposal.Cell(1, 3));
                    tblProposal.Cell(1, 2).Range.Font.Name = "Roboto Light";
                    tblProposal.Cell(1, 2).Range.Font.Size = 10;

                    tblProposal.Cell(2, 1).Range.Text = "Approval Authority";
                    tblProposal.Cell(2, 2).Merge(tblProposal.Cell(2, 3));
                    tblProposal.Cell(2, 2).Range.Text      = dataResult[0].ApprovalAuthority;
                    tblProposal.Cell(2, 2).Range.Font.Name = "Roboto Light";

                    tblProposal.Cell(3, 1).Range.Text = "Facility";
                    tblProposal.Cell(3, 1).Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;

                    tblProposal.Cell(3, 2).Shading.BackgroundPatternColor  = WdColor.wdColorGray10;
                    tblProposal.Cell(3, 2).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblProposal.Cell(3, 2).Range.Text = "Type";

                    tblProposal.Cell(3, 3).Shading.BackgroundPatternColor  = WdColor.wdColorGray10;
                    tblProposal.Cell(3, 3).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblProposal.Cell(3, 3).Range.Text = "Amount";

                    int rowcounttblProposal = 3;
                    foreach (DataRow item in listFacility.Rows)
                    {
                        rowcounttblProposal++;
                        tblProposal.Rows.Add(ref missing);
                        tblProposal.Rows[rowcounttblProposal].Cells[1].Borders[WdBorderType.wdBorderTop].LineStyle = WdLineStyle.wdLineStyleNone;
                        tblProposal.Rows[rowcounttblProposal].Cells[2].Shading.BackgroundPatternColor  = WdColor.wdColorWhite;
                        tblProposal.Rows[rowcounttblProposal].Cells[2].Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                        tblProposal.Rows[rowcounttblProposal].Cells[3].Shading.BackgroundPatternColor  = WdColor.wdColorWhite;
                        tblProposal.Rows[rowcounttblProposal].Cells[3].Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                        tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Text      = item[0].ToString();
                        tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Font.Name = "Roboto Light";
                        tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Font.Size = 10;
                        var amout = Convert.ToDecimal(item[2]);
                        tblProposal.Rows[rowcounttblProposal].Cells[3].Range.Text      = item[1].ToString() + " " + amout.ToString("#,#");
                        tblProposal.Rows[rowcounttblProposal].Cells[3].Range.Font.Name = "Roboto Light";
                        tblProposal.Rows[rowcounttblProposal].Cells[3].Range.Font.Size = 10;
                    }

                    rowcounttblProposal++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Shading.BackgroundPatternColor  = WdColor.wdColorWhite;
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                    tblProposal.Rows[rowcounttblProposal].Cells[3].Shading.BackgroundPatternColor  = WdColor.wdColorWhite;
                    tblProposal.Rows[rowcounttblProposal].Cells[3].Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;

                    tblProposal.Rows[rowcounttblProposal].Cells[1].Borders[WdBorderType.wdBorderTop].LineStyle = WdLineStyle.wdLineStyleSingle;
                    tblProposal.Rows[rowcounttblProposal].Cells[1].Range.Text      = "Group Exposure";
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Text      = dataResult[0].GroupExposureCurr + " " + dataResult[0].GroupExposureAmount;
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Font.Name = "Roboto Light";
                    int GroupExpoCount = rowcounttblProposal;

                    rowcounttblProposal++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcounttblProposal].Cells[1].Range.Text = "Remarks";
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].Remarks));
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Font.Name = "Roboto Light";
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Font.Size = 10;
                    int RemarksCount = rowcounttblProposal;

                    rowcounttblProposal++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcounttblProposal].Cells[1].Range.Text      = "Tenor";
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Text      = dataResult[0].tenorYear + " year(s)  " + dataResult[0].tenorMonth + " month(s)";
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Font.Name = "Roboto Light";
                    int tenorCount = rowcounttblProposal;

                    rowcounttblProposal++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcounttblProposal].Cells[1].Range.Text      = "Average Loan Life";
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Text      = dataResult[0].averageLoanLifeYear + " year(s)  " + dataResult[0].averageLoanLifeMonth + " month(s)";
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Font.Name = "Roboto Light";
                    int AverageCount = rowcounttblProposal;

                    rowcounttblProposal++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcounttblProposal].Cells[1].Range.Text = "Pricing";
                    tblProposal.Rows[rowcounttblProposal].Cells[1].Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Text = "Interest rate";
                    tblProposal.Rows[rowcounttblProposal].Cells[3].Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].pricingInterestRate));
                    tblProposal.Rows[rowcounttblProposal].Cells[3].Range.Font.Name = "Roboto Light";
                    tblProposal.Rows[rowcounttblProposal].Cells[3].Range.Font.Size = 10;

                    rowcounttblProposal++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcounttblProposal].Cells[1].Borders[WdBorderType.wdBorderTop].LineStyle = WdLineStyle.wdLineStyleNone;
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Text      = "Commitment Fee";
                    tblProposal.Rows[rowcounttblProposal].Cells[3].Range.Text      = dataResult[0].pricingCommitmentFee;
                    tblProposal.Rows[rowcounttblProposal].Cells[3].Range.Font.Name = "Roboto Light";

                    rowcounttblProposal++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Text      = "Upfront Fee";
                    tblProposal.Rows[rowcounttblProposal].Cells[3].Range.Text      = dataResult[0].pricingUpfrontFacilityFee;
                    tblProposal.Rows[rowcounttblProposal].Cells[3].Range.Font.Name = "Roboto Light";

                    rowcounttblProposal++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Text      = "Structuring Fee";
                    tblProposal.Rows[rowcounttblProposal].Cells[3].Range.Text      = dataResult[0].pricingStructuringFee;
                    tblProposal.Rows[rowcounttblProposal].Cells[3].Range.Font.Name = "Roboto Light";

                    rowcounttblProposal++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Text      = "Arranger Fee";
                    tblProposal.Rows[rowcounttblProposal].Cells[3].Range.Text      = dataResult[0].pricingArrangerFee;
                    tblProposal.Rows[rowcounttblProposal].Cells[3].Range.Font.Name = "Roboto Light";

                    rowcounttblProposal++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcounttblProposal].Cells[1].Borders[WdBorderType.wdBorderTop].LineStyle = WdLineStyle.wdLineStyleSingle;
                    tblProposal.Rows[rowcounttblProposal].Cells[1].Range.Text = "Collateral";
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].pricingCollateral));
                    tblProposal.Cell(rowcounttblProposal, 2).Merge(tblProposal.Cell(rowcounttblProposal, 3));
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Font.Name = "Roboto Light";
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Font.Size = 10;

                    rowcounttblProposal++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcounttblProposal].Cells[1].Range.Text = "Other Conditions";
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].pricingOtherConditions));
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Font.Name = "Roboto Light";
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Font.Size = 10;

                    rowcounttblProposal++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcounttblProposal].Cells[1].Range.Text = "Exception to IIF Policy";
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].pricingExceptionToIIFPolicy));
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Font.Name = "Roboto Light";
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Font.Size = 10;

                    rowcounttblProposal++;
                    tblProposal.Rows.Add(ref missing);
                    tblProposal.Rows[rowcounttblProposal].Cells[1].Range.Text      = "Review Period";
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Text      = dataResult[0].reviewPeriod;
                    tblProposal.Rows[rowcounttblProposal].Cells[2].Range.Font.Name = "Roboto Light";

                    tblProposal.Cell(GroupExpoCount, 2).Merge(tblProposal.Cell(GroupExpoCount, 3));
                    tblProposal.Cell(RemarksCount, 2).Merge(tblProposal.Cell(RemarksCount, 3));
                    tblProposal.Cell(tenorCount, 2).Merge(tblProposal.Cell(tenorCount, 3));
                    tblProposal.Cell(AverageCount, 2).Merge(tblProposal.Cell(AverageCount, 3));
                    #endregion

                    #region D.Recommendation
                    Range     keyInvestment      = app.ActiveDocument.Bookmarks["KeyInvestment"].Range;
                    Paragraph paragkeyInvestment = doc.Content.Paragraphs.Add(keyInvestment);
                    paragkeyInvestment.Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].KeyInvestmentRecommendation));
                    paragkeyInvestment.Range.Font.Name = "Roboto Light";
                    paragkeyInvestment.Range.Font.Size = 10;

                    Range     recommendation      = app.ActiveDocument.Bookmarks["Recommendation"].Range;
                    Paragraph paragRecommendation = doc.Content.Paragraphs.Add(recommendation);
                    paragRecommendation.Range.InsertFile(ConvertHtmlAndFile.SaveToHtml(dataResult[0].Recommendation));
                    paragRecommendation.Range.Font.Name = "Roboto Light";
                    paragRecommendation.Range.Font.Size = 10;

                    Range accountResponsible    = app.ActiveDocument.Bookmarks["AccountRespon"].Range;
                    Table tblAccountResponsible = app.ActiveDocument.Tables.Add(accountResponsible, 1, 3, WdDefaultTableBehavior.wdWord9TableBehavior);
                    tblAccountResponsible.Range.Font.Name = "Roboto Light";
                    tblAccountResponsible.Range.Font.Size = 10;
                    tblAccountResponsible.set_Style("Table Grid");
                    tblAccountResponsible.Columns[1].SetWidth(130, WdRulerStyle.wdAdjustFirstColumn);
                    tblAccountResponsible.AutoFitBehavior(WdAutoFitBehavior.wdAutoFitWindow);

                    tblAccountResponsible.Cell(1, 1).Range.Text = "Account Responsible";
                    tblAccountResponsible.Cell(1, 2).Range.Text = "Deal Team";
                    tblAccountResponsible.Cell(1, 2).Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblAccountResponsible.Cell(1, 2).Range.Shading.BackgroundPatternColor = WdColor.wdColorGray10;
                    tblAccountResponsible.Cell(1, 3).Range.Text = "CIO";
                    tblAccountResponsible.Cell(1, 3).Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphCenter;
                    tblAccountResponsible.Cell(1, 3).Range.Shading.BackgroundPatternColor = WdColor.wdColorGray10;

                    int rowCountDealTeam = 1;
                    foreach (DataRow item in listDealTeam.Rows)
                    {
                        rowCountDealTeam++;
                        tblAccountResponsible.Rows.Add(ref missing);
                        tblAccountResponsible.Rows[rowCountDealTeam].Range.Font.Name = "Roboto Light";
                        tblAccountResponsible.Cell(rowCountDealTeam, 1).Borders[WdBorderType.wdBorderTop].LineStyle    = WdLineStyle.wdLineStyleNone;
                        tblAccountResponsible.Cell(rowCountDealTeam, 1).Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleNone;
                        tblAccountResponsible.Rows[rowCountDealTeam].Cells[2].Shading.BackgroundPatternColor           = WdColor.wdColorWhite;
                        tblAccountResponsible.Rows[rowCountDealTeam].Cells[2].Range.ParagraphFormat.Alignment          = WdParagraphAlignment.wdAlignParagraphLeft;
                        tblAccountResponsible.Rows[rowCountDealTeam].Cells[3].Shading.BackgroundPatternColor           = WdColor.wdColorWhite;
                        tblAccountResponsible.Rows[rowCountDealTeam].Cells[3].Range.ParagraphFormat.Alignment          = WdParagraphAlignment.wdAlignParagraphLeft;
                        tblAccountResponsible.Rows[rowCountDealTeam].Cells[2].Range.Text = item[0].ToString();
                        if (rowCountDealTeam <= 2)
                        {
                            tblAccountResponsible.Rows[rowCountDealTeam].Cells[3].Range.Text      = dataResult[0].AccountResponsibleCIOName;
                            tblAccountResponsible.Rows[rowCountDealTeam].Cells[3].Range.Font.Name = "Roboto Light";
                        }
                    }
                    tblAccountResponsible.Cell(rowCountDealTeam, 1).Borders[WdBorderType.wdBorderBottom].LineStyle = WdLineStyle.wdLineStyleSingle;
                    #endregion

                    #region Attachment
                    this.FillBookmarkWithPAMAttachmentType1(app, con, "ProjectAnalysis", AppConstants.TableName.PAM_ProjectAnalysis, pamId);
                    this.FillBookmarkWithPAMAttachmentType1(app, con, "HistoricalFinancial", AppConstants.TableName.PAM_HistoricalFinancial, pamId);
                    this.FillBookmarkWithPAMAttachmentType1(app, con, "SupplementalProcurement", AppConstants.TableName.PAM_Supplemental, pamId);
                    this.FillBookmarkWithPAMAttachmentType1(app, con, "SocialEnvironmental", AppConstants.TableName.PAM_Social, pamId);

                    this.FillBookmarkWithPAMAttachmentType1(app, con, "TermSheet", AppConstants.TableName.PAM_TermSheet, pamId);
                    this.FillBookmarkWithPAMAttachmentType1(app, con, "RiskRating", AppConstants.TableName.PAM_RiskRating, pamId);
                    this.FillBookmarkWithPAMAttachmentType1(app, con, "KYCchecklists", AppConstants.TableName.PAM_KYCChecklists, pamId);
                    this.FillBookmarkWithPAMAttachmentType1(app, con, "OtherBanks", AppConstants.TableName.PAM_OtherBanksFacilities, pamId);

                    this.FillBookmarkWithPAMAttachmentType2(app, con, "LegalDueDiligence", AppConstants.TableName.PAM_LegalDueDiligenceReport, pamId);
                    this.FillBookmarkWithPAMAttachmentType2(app, con, "SAndEDueDiligence", AppConstants.TableName.PAM_SAndEDueDiligence, pamId);
                    this.FillBookmarkWithPAMAttachmentType2(app, con, "OtherReports", AppConstants.TableName.PAM_OtherReports, pamId);
                    #endregion

                    doc.PageSetup.PaperSize = WdPaperSize.wdPaperA4;
                    doc.SaveAs2(Path.Combine(temporaryFolderLocation, fileNamePDF), WdExportFormat.wdExportFormatPDF);
                }
                finally
                {
                    doc.Close(WdSaveOptions.wdDoNotSaveChanges);
                }
            }
            finally
            {
                app.Quit();
            }

            File.Delete(destFile);
            string destFilePDF = Path.Combine(temporaryFolderLocation, fileNamePDF);
            byte[] fileContent = File.ReadAllBytes(destFilePDF);

            FileMergeResult result = new FileMergeResult();
            result.FileContent = fileContent;
            result.FileName    = fileNamePDF;
            return(result);
        }
Esempio n. 5
0
        public FileMergeResult MergeCMCorporateFinance(SqlConnection con, long cmId, string foldertemplate, string temporaryFolderLocation)
        {
            DBHelper db = new DBHelper();

            //foldertemplate = ConfigurationManager.AppSettings["CM_TEMPLATE_FOLDER_LOCATION"];
            //temporaryFolderLocation = ConfigurationManager.AppSettings["CM_MERGE_FOLDER_LOCATION"];

            List <CMData> dataResult = db.ExecToModel <CMData>(con, "dbo.Generate_Document_CM_Data_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, cmId)
            });

            System.Data.DataTable listBorrower = db.ExecToDataTable(con, "Generate_Document_CM_Borrower_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, cmId)
            });
            System.Data.DataTable listBorrowerCover = db.ExecToDataTable(con, "Generate_Document_CM_Borrower_Cover_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, cmId)
            });

            System.Data.DataTable listFacility = db.ExecToDataTable(con, "Generate_Document_CM_ProposalFacility_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, cmId)
            });

            System.Data.DataTable listDealTeam = db.ExecToDataTable(con, "Generate_Document_CM_DealTeam_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, cmId)
            });

            System.Data.DataTable listDocVersion = db.ExecToDataTable(con, "Generate_Document_CM_Version_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                this.NewSqlParameter("@Id", SqlDbType.BigInt, cmId)
            });

            string fileName    = "CM-" + dataResult[0].ProductType + "-" + dataResult[0].CompanyName + "-" + dataResult[0].ProjectCode + ".docx";
            string fileNamePDF = "CM-" + dataResult[0].ProductType + "-" + dataResult[0].CompanyName + "-" + dataResult[0].ProjectCode + ".pdf";

            string fileTemplateName     = "CM Corporate Finance Template.docx";
            string fileTemplateFullName = foldertemplate.AppendPath("\\", fileTemplateName);

            string getfileName = Path.GetFileName(fileTemplateFullName);
            string destFile    = Path.Combine(temporaryFolderLocation, fileName);

            IIFCommon.copyFromNetwork(fileTemplateFullName, destFile, foldertemplate, temporaryFolderLocation);

            object      missing  = System.Reflection.Missing.Value;
            object      readOnly = (object)false;
            Application app      = new Application();

            string currFontFamily = "Roboto Light";
            float  currFontSize   = 10;

            try
            {
                Document doc = app.Documents.Open(destFile, ref missing, ref readOnly);
                app.Visible = false;
                try
                {
                    #region Cover
                    app.ActiveDocument.Bookmarks["Review"].Range.Text = dataResult[0].ReviewMemo;

                    //app.ActiveDocument.Bookmarks["CompanyName"].Range.Text = dataResult[0].CompanyName;

                    int           countBorrower    = 0;
                    int           countSetBorrower = 0;
                    string        prevBorrower     = "";
                    string        currentBorrower  = "";
                    List <String> lsBorrower       = new List <string>();

                    foreach (DataRow item in listBorrowerCover.Rows)
                    {
                        countBorrower++;
                        prevBorrower = item[0].ToString().Trim().ToLower();

                        if (!lsBorrower.Contains(prevBorrower))
                        {
                            if (countBorrower > 5)
                            {
                                continue;
                            }
                            countSetBorrower++;
                            app.ActiveDocument.Bookmarks["CompanyName" + (countSetBorrower)].Range.Text = item[0].ToString();

                            currentBorrower = item[0].ToString().Trim().ToLower();

                            lsBorrower.Add(currentBorrower);
                        }
                    }

                    app.ActiveDocument.Bookmarks["ProjectName"].Range.Text = dataResult[0].ProjectName;

                    app.ActiveDocument.Bookmarks["CMNumber"].Range.Text = IIFCommon.generateCMNumber(
                        dataResult[0].ProjectCode
                        , Convert.ToInt32(dataResult[0].CMNumber).ToString("00")
                        , dataResult[0].ApprovalAuhority
                        , dataResult[0].CMDate.ToString("MMM")
                        , dataResult[0].CMDate.ToString("yyyy")
                        );

                    app.ActiveDocument.Bookmarks["ProjectCode"].Range.Text = dataResult[0].ProjectCode;
                    System.Globalization.CultureInfo cult = new System.Globalization.CultureInfo("en-us");
                    string dateToShow = string.Format(cult, "{0:dd-MMMM-yyyy}", dataResult[0].CMDate);
                    app.ActiveDocument.Bookmarks["ProjectDate"].Range.Text = dateToShow;

                    string footerDateToShow = string.Format(cult, "{0:MMM yyyy}", dataResult[0].CMDate);
                    //app.ActiveDocument.Bookmarks["FooterDate"].Range.Text = footerDateToShow;
                    #endregion

                    #region PROJECT
                    app.ActiveDocument.Bookmarks["AxPROJECTxProjectName"].Range.Text     = dataResult[0].ProjectName;
                    app.ActiveDocument.Bookmarks["AxPROJECTxSectorSubsector"].Range.Text = dataResult[0].SectorDesc + " - " + dataResult[0].SubSectorDesc;
                    this.FillBookmarkWithCMAttachmentABNormal(app, con, "AxPROJECTxFundingNeeds", AppConstants.TableName.CM_ProjectData, cmId, "FundingNeeds", "Id");
                    this.FillBookmarkWithCMAttachmentABNormal(app, con, "AxPROJECTxDealStrategy", AppConstants.TableName.CM_ProjectData, cmId, "DealStrategy", "Id");
                    #endregion

                    #region BORROWER
                    app.ActiveDocument.Bookmarks["BxBORROWERxBorrower"].Range.Text = dataResult[0].CompanyName;

                    Table tblShareholders = IIFCommon.createTable(app, "BxBORROWERxShareholders", 3, true);
                    //header
                    tblShareholders.Cell(1, 1).Range.Text = "Project Company";
                    tblShareholders.Cell(1, 2).Range.Text = "Shareholders";
                    tblShareholders.Cell(1, 3).Range.Text = "% ownership";

                    string prevkey    = "";
                    string cellText   = "";
                    int    rowCounter = 1;
                    int    rowTemp    = 0;
                    foreach (DataRow item in listBorrower.Rows)
                    {
                        tblShareholders.Rows.Add(ref missing);
                        rowCounter++;

                        prevkey = item[0].ToString().Trim().ToLower();
                        if (cellText.Trim().ToLower() != prevkey.Trim().ToLower())
                        {
                            //merge kolom kalo value nya beda, mulai row ke 3
                            if (rowCounter > 2 && (rowTemp != (rowCounter - 1)))
                            {
                                tblShareholders.Cell(rowTemp, 1).Merge(tblShareholders.Cell(rowCounter - 1, 1));
                            }

                            rowTemp = rowCounter;

                            tblShareholders.Cell(rowCounter, 1).Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                            tblShareholders.Cell(rowCounter, 1).Range.Text = item[0].ToString().Trim();
                            cellText = item[0].ToString().Trim().ToLower();
                            tblShareholders.Cell(rowCounter, 1).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;
                        }

                        tblShareholders.Cell(rowCounter, 2).Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                        tblShareholders.Cell(rowCounter, 2).Range.Text = item[1].ToString().Trim();
                        tblShareholders.Cell(rowCounter, 2).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;

                        tblShareholders.Cell(rowCounter, 3).Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                        tblShareholders.Cell(rowCounter, 3).Range.Text = item[2].ToString().Trim();
                        tblShareholders.Cell(rowCounter, 3).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;
                    }

                    //merge kolom untuk value trakhir
                    if (rowCounter > 2 && (rowTemp != rowCounter))
                    {
                        tblShareholders.Cell(rowTemp, 1).Merge(tblShareholders.Cell(rowCounter, 1));
                    }

                    app.ActiveDocument.Bookmarks["BxBORROWERxUltimateBeneficialOwner"].Range.Text = dataResult[0].UltimateBeneficialOwner;
                    app.ActiveDocument.Bookmarks["BxBORROWERxRatingxRating"].Range.Text           = dataResult[0].IIFRate;
                    string ratingDateToShow = string.Format(cult, "{0:dd MMM yyyy}", dataResult[0].IIFRatingDate);
                    app.ActiveDocument.Bookmarks["BxBORROWERxRatingxRatingDate"].Range.Text    = ratingDateToShow;
                    app.ActiveDocument.Bookmarks["BxBORROWERxRatingxSP"].Range.Text            = dataResult[0].SAndPRate;
                    app.ActiveDocument.Bookmarks["BxBORROWERxRatingxMoodys"].Range.Text        = dataResult[0].MoodysRate;
                    app.ActiveDocument.Bookmarks["BxBORROWERxRatingxFitch"].Range.Text         = dataResult[0].FitchRate;
                    app.ActiveDocument.Bookmarks["BxBORROWERxRatingxPefindo"].Range.Text       = dataResult[0].PefindoRate;
                    app.ActiveDocument.Bookmarks["BxBORROWERxRatingxSAndECategory"].Range.Text = dataResult[0].SAndECategoryRate + "-" + dataResult[0].SAndECategoryType;
                    app.ActiveDocument.Bookmarks["BxBORROWERxRatingxLQCBIChecking"].Range.Text = dataResult[0].LQCOrBICheckingRate;

                    this.FillBookmarkWithCMAttachmentABNormal(app, con, "BxBORROWERxBusinessActivities", AppConstants.TableName.CM_BorrowerOrInvesteeCompanyData, cmId, "BusinessActivities", "Id");
                    this.FillBookmarkWithCMAttachmentABNormal(app, con, "BxBORROWERxOtherInformation", AppConstants.TableName.CM_BorrowerOrInvesteeCompanyData, cmId, "OtherInformation", "Id");
                    #endregion

                    #region PROPOSAL
                    this.FillBookmarkWithCMAttachmentABNormal(app, con, "CxPROPOSALxPurpose", AppConstants.TableName.CM_ProposalOrFacilityData, cmId, "Purpose", "Id");
                    app.ActiveDocument.Bookmarks["CxPROPOSALxApprovalAuthority"].Range.Text = dataResult[0].ApprovalAuhority;

                    Table tblFacility = IIFCommon.createTable(app, "CxPROPOSALxFacility", 4, true);
                    //header
                    tblFacility.Cell(1, 1).Range.Text = "Type";
                    tblFacility.Cell(1, 2).Range.Text = "Approved";
                    tblFacility.Cell(1, 3).Range.Text = "Proposed";
                    tblFacility.Cell(1, 4).Range.Text = "Outstanding";
                    rowCounter = 1;

                    foreach (DataRow item in listFacility.Rows)
                    {
                        tblFacility.Rows.Add(ref missing);
                        rowCounter++;

                        tblFacility.Cell(rowCounter, 1).Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                        tblFacility.Cell(rowCounter, 1).Range.Text = item[0].ToString();
                        tblFacility.Cell(rowCounter, 1).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;

                        tblFacility.Cell(rowCounter, 2).Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                        tblFacility.Cell(rowCounter, 2).Range.Text = item[1].ToString() + " " + item[2].ToString();
                        tblFacility.Cell(rowCounter, 2).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;

                        tblFacility.Cell(rowCounter, 3).Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                        tblFacility.Cell(rowCounter, 3).Range.Text = item[3].ToString() + " " + item[4].ToString();
                        tblFacility.Cell(rowCounter, 3).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;

                        tblFacility.Cell(rowCounter, 4).Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                        tblFacility.Cell(rowCounter, 4).Range.Text = item[5].ToString() + " " + item[6].ToString();
                        tblFacility.Cell(rowCounter, 4).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;
                    }

                    tblFacility.Rows.Add(ref missing);
                    tblFacility.Cell(rowCounter + 1, 1).Range.Text = "Remarks : " + dataResult[0].FacilityOrInvestmentRemarks;
                    tblFacility.Cell(rowCounter + 1, 1).Merge(tblFacility.Cell(rowCounter + 1, 4));
                    tblFacility.Cell(rowCounter + 1, 1).Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphLeft;

                    app.ActiveDocument.Bookmarks["CxPROPOSALxGroupExposure"].Range.Text = dataResult[0].GroupExposureCurr + " " + dataResult[0].GroupExposureAmount;
                    this.FillBookmarkWithCMAttachmentABNormal(app, con, "CxPROPOSALxRemarks", AppConstants.TableName.CM_ProposalOrFacilityData, cmId, "Remarks", "Id");
                    app.ActiveDocument.Bookmarks["CxPROPOSALxTenor"].Range.Text           = dataResult[0].TenorYear + " year(s)  " + dataResult[0].TenorMonth + " month(s)";
                    app.ActiveDocument.Bookmarks["CxPROPOSALxAverageLoanLife"].Range.Text = dataResult[0].AverageLoanLifeYear + " year(s)  " + dataResult[0].AverageLoanLifeMonth + " month(s)";

                    this.FillBookmarkWithCMAttachmentABNormal(app, con, "CxPROPOSALxPricingxInterestRate", AppConstants.TableName.CM_ProposalOrFacilityData, cmId, "PricingInterestRate", "Id");
                    app.ActiveDocument.Bookmarks["CxPROPOSALxPricingxCommitmentFee"].Range.Text  = dataResult[0].PricingCommitmentFee;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxPricingxFacility"].Range.Text       = dataResult[0].PricingUpfrontFacilityFee;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxPricingxStructuringFee"].Range.Text = dataResult[0].PricingStructuringFee;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxPricingxArrangerFee"].Range.Text    = dataResult[0].PricingArrangerFee;

                    this.FillBookmarkWithCMAttachmentABNormal(app, con, "CxPROPOSALxCollateral", AppConstants.TableName.CM_ProposalOrFacilityData, cmId, "PricingCollateral", "Id");
                    this.FillBookmarkWithCMAttachmentABNormal(app, con, "CxPROPOSALxOtherCondition", AppConstants.TableName.CM_ProposalOrFacilityData, cmId, "PricingOtherConditions", "Id");

                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexCurrency"].Range.Text = dataResult[0].LimitComplianceCurrency;
                    string asForDateToShow = string.Format(cult, "{0:MMM}", Convert.ToDateTime("1985-" + dataResult[0].FacilityLimitComplianceMonth.ToString() + "-01"));
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexAsFor"].Range.Text       = asForDateToShow + " " + dataResult[0].FacilityLimitComplianceYear.ToString();
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexRiskRating"].Range.Text  = dataResult[0].FacilityLimitComplianceIIFRate;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexSecExposure"].Range.Text = dataResult[0].SectorDesc;

                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexSPELxML"].Range.Text = dataResult[0].FacilityLimitComplianceSingleProjectExposureMaxLimit;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexSPELxML"].Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexSPELxP"].Range.Text = dataResult[0].FacilityLimitComplianceSingleProjectExposureProposed;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexSPELxP"].Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexSPELxR"].Range.Text = dataResult[0].SingleProjectExposureRemarks;

                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexPxML"].Range.Text = dataResult[0].FacilityLimitComplianceProductMaxLimit;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexPxML"].Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexPxP"].Range.Text = dataResult[0].FacilityLimitComplianceProductProposed;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexPxP"].Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexPxR"].Range.Text = dataResult[0].ProductRemarks;

                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexRRxML"].Range.Text = dataResult[0].FacilityLimitComplianceRiskRatingMaxLimit;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexRRxML"].Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexRRxP"].Range.Text = dataResult[0].FacilityLimitComplianceRiskRatingProposed;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexRRxP"].Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexRRxR"].Range.Text = dataResult[0].RiskRatingRemarks;

                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexGELxML"].Range.Text = dataResult[0].FacilityLimitComplianceGrupExposureMaxLimit;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexGELxML"].Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexGELxP"].Range.Text = dataResult[0].FacilityLimitComplianceGrupExposureProposed;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexGELxP"].Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexGELxR"].Range.Text = dataResult[0].GrupExposureRemarks;

                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexSExML"].Range.Text = dataResult[0].FacilityLimitComplianceSectorExposureMaxLimit;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexSExML"].Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexSExP"].Range.Text = dataResult[0].FacilityLimitComplianceSectorExposureProposed;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexSExP"].Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;
                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexSExR"].Range.Text = dataResult[0].SectorExposureRemarks;

                    app.ActiveDocument.Bookmarks["CxPROPOSALxLimitCompliancexNotes"].Range.Text = dataResult[0].notes;

                    this.FillBookmarkWithCMAttachmentABNormal(app, con, "CxPROPOSALxExceptionToIIFPolicy", AppConstants.TableName.CM_ProposalOrFacilityData, cmId, "PricingExceptionToIIFPolicy", "Id");
                    app.ActiveDocument.Bookmarks["CxPROPOSALxReviewPeriod"].Range.Text = dataResult[0].ProposalReviewPeriod;
                    #endregion

                    #region RECOMMENDATION
                    this.FillBookmarkWithCMAttachmentABNormal(app, con, "DxRECOMMENDATIONxKeyInvestment", AppConstants.TableName.CM_RecommendationData, cmId, "KeyInvestmentRecommendation", "Id");
                    this.FillBookmarkWithCMAttachmentABNormal(app, con, "DxRECOMMENDATION", AppConstants.TableName.CM_RecommendationData, cmId, "Recommendation", "Id");

                    Table tblDealTeam = IIFCommon.createTable(app, "DxRECOMMENDATIONxDealTeam", 1, false);
                    tblDealTeam.Borders.Enable = 0;
                    rowCounter = 0;
                    foreach (DataRow item in listDealTeam.Rows)
                    {
                        tblDealTeam.Rows.Add(ref missing);
                        rowCounter++;
                        tblDealTeam.Cell(rowCounter, 1).Range.Text = item[0].ToString();
                        tblDealTeam.Cell(rowCounter, 1).Range.Shading.BackgroundPatternColor = WdColor.wdColorWhite;
                        tblDealTeam.Cell(rowCounter, 1).Range.ParagraphFormat.Alignment      = WdParagraphAlignment.wdAlignParagraphLeft;
                    }

                    app.ActiveDocument.Bookmarks["DxRECOMMENDATIONxCIO"].Range.Text = dataResult[0].AccountResponsibleCIOName;
                    #endregion

                    #region Attachment
                    this.FillBookmarkWithCMAttachmentNormal(app, con, "PeriodicReview", AppConstants.TableName.CM_PeriodicReview, cmId);

                    System.Data.DataTable listPreviousApproval = db.ExecToDataTable(con, "Generate_Document_CM_PreviousApproval_SP", CommandType.StoredProcedure, new List <SqlParameter> {
                        this.NewSqlParameter("@ProjectCode", SqlDbType.VarChar, dataResult[0].ProjectCode)
                    });
                    IIFCommon.createPreviousApproval(app, listPreviousApproval, "PreviousApprovals", dataResult, currFontFamily, currFontSize);

                    this.FillBookmarkWithCMAttachmentNormal(app, con, "RiskRating", AppConstants.TableName.CM_RiskRating, cmId);
                    this.FillBookmarkWithCMAttachmentNormal(app, con, "KYCChecklists", AppConstants.TableName.CM_KYCChecklists, cmId);
                    this.FillBookmarkWithCMAttachmentNormal(app, con, "SandEReview", AppConstants.TableName.CM_SAndEReview, cmId);
                    this.FillBookmarkWithCMAttachmentNormal(app, con, "OtherBanksfacilities", AppConstants.TableName.CM_OtherBanksFacilities, cmId);
                    this.FillBookmarkWithCMAttachmentNormal(app, con, "OtherAttachment", AppConstants.TableName.CM_OtherAttachment, cmId);
                    #endregion

                    IIFCommon.finalizeDoc(doc);
                    IIFCommon.injectFooterCM(doc, footerDateToShow, "Corporate");

                    bool isPreview = false;
                    try
                    {
                        if (dataResult[0].MWorkflowStatusId != null && dataResult[0].MWorkflowStatusId == 7)
                        {
                            isPreview = true;
                        }
                    }
                    catch { }
                    fileNamePDF = IIFCommon.fileNameFormat(listDocVersion, fileNamePDF, isPreview);

                    doc.SaveAs2(Path.Combine(temporaryFolderLocation, fileNamePDF), WdExportFormat.wdExportFormatPDF);
                    //doc.SaveAs2(Path.Combine(temporaryFolderLocation, fileName));
                }
                finally
                {
                    doc.Close(WdSaveOptions.wdDoNotSaveChanges);
                }
            }
            finally
            {
                app.Quit();
            }

            File.Delete(destFile);
            string destFilePDF = Path.Combine(temporaryFolderLocation, fileNamePDF);
            byte[] fileContent = File.ReadAllBytes(destFilePDF);

            FileMergeResult result = new FileMergeResult();
            result.FileContent = fileContent;
            result.FileName    = fileNamePDF;
            return(result);
        }
Esempio n. 6
0
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="getParameter"></param>
        /// <param name="restartAppDomainOnChange"></param>
        /// <returns></returns>
        public override T GetConfig <T>(IConfigParameter getParameter, bool restartAppDomainOnChange)
        {
            Check.Argument.IsNotNull("getParameter", getParameter);
            Check.Argument.IsAssignableFrom("getParameter", getParameter, typeof(XmlConfigGetParameter));

            T config = GetConfigFromCache <T>(getParameter);

            if (config == null)
            {
                lock (this.SyncLock)
                {
                    config = GetConfigFromCache <T>(getParameter);
                    if (config == null)
                    {
                        XmlConfigGetParameter cp = getParameter as XmlConfigGetParameter;
                        if (cp.Files.Length > 0)
                        {
                            if (cp.Files.Length == 1)
                            {
                                try
                                {
                                    config = Serializer.XmlSerializer.FromFile <T>(cp.Files[0]);
                                }
                                catch (Exception ex)
                                {
                                    ConfigThrowHelper.ThrowConfigException(ex, R.ConfigFileNotResolved, cp.Files[0], typeof(T).FullName);
                                }
                            }
                            else
                            {
                                try
                                {
                                    FileMergeResult fileMergeResult = XmlUtils.MergeFiles(new List <string>(cp.Files));
                                    if (!fileMergeResult.AllFilesMerged)
                                    {
                                        //Logger.Warning("Framework.Configuration", "XMLConfigProvider", fileMergeResult.ToString());
                                    }

                                    if (fileMergeResult.HasFileMerged)
                                    {
                                        config = Serializer.XmlSerializer.FromSerializedString <T>(fileMergeResult.FileContentMerged);
                                    }
                                    else
                                    {
                                        //Logger.Error("Framework.Configuration", "XMLConfigProvider", fileMergeResult.ToString());
                                    }
                                }
                                catch (Exception ex)
                                {
                                    ConfigThrowHelper.ThrowConfigException(ex, R.ConfigFileNotResolved, cp.FilePaths, typeof(T).FullName);
                                }
                            }

                            AddConfigToCache(getParameter, config);
                            SetupWacher(new XmlConfigChangeWatcher(cp));
                        }
                    }
                }
            }

            return(config);
        }
Esempio n. 7
0
        public void MergePAMDocument(long id, string connectionString, string folderTemplateLocation, string temporaryFolderLocation, string mergeByFQN, string mergeBy)
        {
            log4net.Config.XmlConfigurator.Configure();
            this.Logger.Info("MergePAMDocument_" + version);

            using (SqlConnection con = new SqlConnection(connectionString))
            {
                con.Open();

                string query = string.Empty;
                query = query + "SELECT";
                query = query + " [MProductTypeId]";
                query = query + " FROM [dbo].[PAM]";
                query = query + " WHERE [Id] = @Id";
                int?productTypeId = null;
                using (SqlCommand cmd = con.CreateCommand())
                {
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = query;
                    cmd.Parameters.Add(this.NewSqlParameter("Id", SqlDbType.BigInt, id));

                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        int indexOf_MProductTypeId = dr.GetOrdinal("MProductTypeId");

                        while (dr.Read())
                        {
                            productTypeId = dr.GetInt32(indexOf_MProductTypeId);
                        }
                    }
                }
                if (productTypeId.HasValue)
                {
                    FileMergeResult fileMergeResult = null;
                    switch (productTypeId.Value)
                    {
                    case 1:
                        PAM_ProjectFinanceNEW svcPAMProjectFinance = new PAM_ProjectFinanceNEW();
                        fileMergeResult = svcPAMProjectFinance.MergePAMProjectFinance(con, id, folderTemplateLocation, temporaryFolderLocation);
                        break;

                    case 2:
                        PAM_CorporateFinanceNEW svcPAMCorporateFinance = new PAM_CorporateFinanceNEW();
                        fileMergeResult = svcPAMCorporateFinance.MergePAMCorporateFinance(con, id, folderTemplateLocation, temporaryFolderLocation);
                        break;

                    case 3:
                        PAM_EquityFinanceNEW svcEquityFinance = new PAM_EquityFinanceNEW();
                        fileMergeResult = svcEquityFinance.MergePAMEquityFinance(con, id, folderTemplateLocation, temporaryFolderLocation);
                        break;

                    default:
                        break;
                    }

                    string query1 = string.Empty;
                    query1 = query1 + "SELECT";
                    query1 = query1 + " [MWorkflowStatusId]";
                    query1 = query1 + " FROM [dbo].[PAM]";
                    query1 = query1 + " WHERE [Id] = @Id";
                    int?mWorkflowStatusId = null;
                    using (SqlCommand cmd = con.CreateCommand())
                    {
                        cmd.CommandType = CommandType.Text;
                        cmd.CommandText = query1;
                        cmd.Parameters.Add(this.NewSqlParameter("Id", SqlDbType.BigInt, id));

                        using (SqlDataReader dr = cmd.ExecuteReader())
                        {
                            int indexOf_mWorkflowStatusId = dr.GetOrdinal("MWorkflowStatusId");

                            while (dr.Read())
                            {
                                mWorkflowStatusId = dr.GetInt32(indexOf_mWorkflowStatusId);
                            }
                        }
                    }
                    bool isPreview = false;
                    try
                    {
                        if (mWorkflowStatusId != null && mWorkflowStatusId == 7)
                        {
                            isPreview = true;
                        }
                    }
                    catch { }

                    SaveMergeResultToDatabase svcSave = new SaveMergeResultToDatabase();
                    svcSave.SavePAMToDatabase(con, id, fileMergeResult.FileContent, mergeByFQN, mergeBy, fileMergeResult.FileName, isPreview);
                }
                con.Close();
            }
        }