public static void PrepareDashboardClientGoals(this PowerPointProcessor target, IClientGoalsOutputData outputData, string fileName)
 {
     target.PreparePresentation(fileName, presentation => target.AppendDashboardClientGoals(outputData, presentation));
 }
        public static void AppendWebPackage(this PowerPointProcessor target, IWebPackageOutput digitalPackage, Presentation destinationPresentation = null)
        {
            try
            {
                var thread = new Thread(delegate()
                {
                    MessageFilter.Register();
                    var slidesCount = digitalPackage.OutputReplacementsLists.Count;
                    var rowsCount   = digitalPackage.RowsPerSlide;
                    for (var k = 0; k < slidesCount; k++)
                    {
                        var presentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetOnlinePackageFile(rowsCount, digitalPackage.PackageSettings.ShowScreenshot);
                        if (!File.Exists(presentationTemplatePath))
                        {
                            continue;
                        }
                        var presentation = target.PowerPointObject.Presentations.Open(FileName: presentationTemplatePath, WithWindow: MsoTriState.msoFalse);
                        foreach (Slide slide in presentation.Slides)
                        {
                            foreach (Shape shape in slide.Shapes)
                            {
                                if (shape.HasTable != MsoTriState.msoTrue)
                                {
                                    continue;
                                }
                                var table             = shape.Table;
                                var tableRowsCount    = table.Rows.Count;
                                var tableColumnsCount = table.Columns.Count;
                                for (var i = 1; i <= tableRowsCount; i++)
                                {
                                    for (var j = 1; j <= tableColumnsCount; j++)
                                    {
                                        var tableShape = table.Cell(i, j).Shape;
                                        if (tableShape.HasTextFrame != MsoTriState.msoTrue)
                                        {
                                            continue;
                                        }
                                        var cellText = tableShape.TextFrame.TextRange.Text.Trim();
                                        if (!digitalPackage.OutputReplacementsLists[k].ContainsKey(cellText))
                                        {
                                            continue;
                                        }
                                        tableShape.TextFrame.TextRange.Text = digitalPackage.OutputReplacementsLists[k][cellText];
                                        digitalPackage.OutputReplacementsLists[k].Remove(cellText);
                                    }
                                }

                                var deletedRows = 0;
                                for (var i = 1; i <= tableRowsCount; i++)
                                {
                                    var tableShape = table.Cell(i - deletedRows, 1).Shape;
                                    if (tableShape.HasTextFrame != MsoTriState.msoTrue)
                                    {
                                        continue;
                                    }
                                    var cellText = tableShape.TextFrame.TextRange.Text.Trim();
                                    if (!cellText.Equals("DeleteRow"))
                                    {
                                        continue;
                                    }
                                    table.Rows[i - deletedRows].Delete();
                                    deletedRows++;
                                }

                                var deletedColumns = 0;
                                tableRowsCount     = table.Rows.Count;
                                tableColumnsCount  = table.Columns.Count;
                                for (var i = 1; i <= tableColumnsCount; i++)
                                {
                                    for (var j = 1; j <= tableRowsCount; j++)
                                    {
                                        var tableShape = table.Cell(j, i - deletedColumns).Shape;
                                        if (tableShape.HasTextFrame != MsoTriState.msoTrue)
                                        {
                                            continue;
                                        }
                                        var cellText = tableShape.TextFrame.TextRange.Text.Trim();
                                        if (!cellText.Equals("DeleteColumn"))
                                        {
                                            continue;
                                        }
                                        table.Columns[i - deletedColumns].Delete();
                                        deletedColumns++;
                                        break;
                                    }
                                }
                            }
                        }
                        var selectedTheme = digitalPackage.SelectedTheme;
                        if (selectedTheme != null)
                        {
                            presentation.ApplyTheme(selectedTheme.GetThemePath());
                        }
                        target.AppendSlide(presentation, -1, destinationPresentation);
                        presentation.Close();
                    }
                });
                thread.Start();

                while (thread.IsAlive)
                {
                    System.Windows.Forms.Application.DoEvents();
                }
            }
            catch { }
            finally
            {
                MessageFilter.Revoke();
            }
        }
        public static void AppendDashboardClientGoals(this PowerPointProcessor target, IClientGoalsOutputData outputData, Presentation destinationPresentation = null)
        {
            var presentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetClientGoalsFile(String.Format(MasterWizardManager.ClientGoalsSlideTemplate, outputData.GoalsCount));

            if (!File.Exists(presentationTemplatePath))
            {
                return;
            }
            try
            {
                var thread = new Thread(delegate()
                {
                    MessageFilter.Register();
                    var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse);
                    foreach (Slide slide in presentation.Slides)
                    {
                        foreach (Shape shape in slide.Shapes)
                        {
                            for (int i = 1; i <= shape.Tags.Count; i++)
                            {
                                switch (shape.Tags.Name(i))
                                {
                                case "HEADER":
                                    shape.TextFrame.TextRange.Text = outputData.Title;
                                    break;

                                case "TEXTBOX0":
                                    shape.TextFrame.TextRange.Text = outputData.SelectedGoals[0];
                                    break;

                                case "TEXTBOX1":
                                    shape.TextFrame.TextRange.Text = outputData.SelectedGoals[1];
                                    break;

                                case "TEXTBOX2":
                                    shape.TextFrame.TextRange.Text = outputData.SelectedGoals[2];
                                    break;

                                case "TEXTBOX3":
                                    shape.TextFrame.TextRange.Text = outputData.SelectedGoals[3];
                                    break;

                                case "TEXTBOX4":
                                    shape.TextFrame.TextRange.Text = outputData.SelectedGoals[4];
                                    break;
                                }
                            }
                        }
                    }
                    var selectedTheme = outputData.SelectedTheme;
                    if (selectedTheme != null)
                    {
                        presentation.ApplyTheme(selectedTheme.GetThemePath());
                    }
                    target.AppendSlide(presentation, -1, destinationPresentation);
                    presentation.Close();
                });
                thread.Start();
                while (thread.IsAlive)
                {
                    Application.DoEvents();
                }
            }
            catch { }
            finally
            {
                MessageFilter.Revoke();
            }
        }
Ejemplo n.º 4
0
        public static void AppendOneSheet(this PowerPointProcessor target, DigitalProduct source, Theme theme, Presentation destinationPresentation = null)
        {
            try
            {
                var thread = new Thread(delegate()
                {
                    var presentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetOnlineOneSheetFile(source.OutputData.GetSlideSource());
                    if (string.IsNullOrEmpty(presentationTemplatePath))
                    {
                        return;
                    }
                    if (!File.Exists(presentationTemplatePath))
                    {
                        return;
                    }

                    MessageFilter.Register();
                    var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse);
                    foreach (Slide slide in presentation.Slides)
                    {
                        foreach (Shape shape in slide.Shapes)
                        {
                            for (int i = 1; i <= shape.Tags.Count; i++)
                            {
                                switch (shape.Tags.Name(i))
                                {
                                    #region Top Part
                                case "HEADER":
                                    shape.TextFrame.TextRange.Text = String.Format(source.OutputData.Header, shape.TextFrame.TextRange.Text);
                                    break;

                                case "WEBSITEURL":
                                    shape.TextFrame.TextRange.Text = source.OutputData.Websites;
                                    break;

                                case "DATETAG":
                                    shape.TextFrame.TextRange.Text = source.OutputData.PresentationDate;
                                    break;

                                case "ADVERTISER":
                                    shape.TextFrame.TextRange.Text = source.OutputData.BusinessName;
                                    break;

                                case "DECMKR":
                                    shape.TextFrame.TextRange.Text = source.OutputData.DecisionMaker;
                                    break;

                                case "CAMPVALUE":
                                    shape.TextFrame.TextRange.Text = source.OutputData.FlightDates;
                                    break;

                                case "WEBPRODUCT":
                                    shape.TextFrame.TextRange.Text = source.OutputData.ProductName;
                                    break;

                                case "WEBDESCRIPT":
                                    shape.TextFrame.TextRange.Text = source.OutputData.Description;
                                    break;
                                    #endregion

                                case "MTHIMPLABEL":
                                    shape.TextFrame.TextRange.Text = source.OutputData.MonthlyData.Any() ? source.OutputData.MonthlyData.ElementAt(0).Name : String.Empty;
                                    break;

                                case "MONTHLYIMPVALUE":
                                    shape.TextFrame.TextRange.Text = source.OutputData.MonthlyData.Any() ? source.OutputData.MonthlyData.ElementAt(0).Code : String.Empty;
                                    break;

                                case "MONTHINVLBL":
                                    shape.TextFrame.TextRange.Text = source.OutputData.MonthlyData.Count() > 1 ? source.OutputData.MonthlyData.ElementAt(1).Name : String.Empty;
                                    break;

                                case "MONTHINVVALUE":
                                    shape.TextFrame.TextRange.Text = source.OutputData.MonthlyData.Count() > 1 ? source.OutputData.MonthlyData.ElementAt(1).Code : String.Empty;
                                    break;

                                case "MCPM":
                                    shape.TextFrame.TextRange.Text = source.OutputData.MonthlyData.Count() > 2 ? source.OutputData.MonthlyData.ElementAt(2).Name : String.Empty;
                                    break;

                                case "MCPMVALUE":
                                    shape.TextFrame.TextRange.Text = source.OutputData.MonthlyData.Count() > 2 ? source.OutputData.MonthlyData.ElementAt(2).Code : String.Empty;
                                    break;

                                case "TTLIMPLABEL":
                                    shape.TextFrame.TextRange.Text = source.OutputData.TotalData.Any() ? source.OutputData.TotalData.ElementAt(0).Name : String.Empty;
                                    break;

                                case "TOTALIMPVALUE":
                                    shape.TextFrame.TextRange.Text = source.OutputData.TotalData.Any() ? source.OutputData.TotalData.ElementAt(0).Code : String.Empty;
                                    break;

                                case "TOTINVLBL":
                                    shape.TextFrame.TextRange.Text = source.OutputData.TotalData.Count() > 1 ? source.OutputData.TotalData.ElementAt(1).Name : String.Empty;
                                    break;

                                case "TOTINVVALUE":
                                    shape.TextFrame.TextRange.Text = source.OutputData.TotalData.Count() > 1 ? source.OutputData.TotalData.ElementAt(1).Code : String.Empty;
                                    break;

                                case "TCPM":
                                    shape.TextFrame.TextRange.Text = source.OutputData.TotalData.Count() > 2 ? source.OutputData.TotalData.ElementAt(2).Name : String.Empty;
                                    break;

                                case "TCPMVALUE":
                                    shape.TextFrame.TextRange.Text = source.OutputData.TotalData.Count() > 2 ? source.OutputData.TotalData.ElementAt(2).Code : String.Empty;
                                    break;

                                case "INVDET":
                                    shape.TextFrame.TextRange.Text = source.OutputData.InvestmentDetails;;
                                    break;

                                case "CMNTVALUE":
                                    shape.TextFrame.TextRange.Text = source.OutputData.Comment;;
                                    break;
                                }
                            }
                        }
                    }
                    if (theme != null)
                    {
                        presentation.ApplyTheme(theme.GetThemePath());
                    }
                    target.AppendSlide(presentation, -1, destinationPresentation);
                    presentation.Close();
                });
                thread.Start();

                while (thread.IsAlive)
                {
                    Application.DoEvents();
                }
            }
            catch
            {
            }
            finally
            {
                MessageFilter.Revoke();
            }
        }
 public static void PrepareWebPackageEmail(this PowerPointProcessor target, string fileName, IWebPackageOutput digitalPackage)
 {
     target.PreparePresentation(fileName, presentation => target.AppendWebPackage(digitalPackage, presentation));
 }
 public static void PrepareSummaryEmail(this PowerPointProcessor target, string fileName, ISummaryControl summary, bool tabelOutput)
 {
     target.PreparePresentation(fileName, presentation => target.AppendSummary(summary, tabelOutput, presentation));
 }
Ejemplo n.º 7
0
 public static void PrepareScheduleEmail(this PowerPointProcessor target, string fileName, DigitalProduct product, Theme theme)
 {
     target.PreparePresentation(fileName, presentation => target.AppendOneSheet(product, theme, presentation));
 }
        private static void AppendSlideSummary(this PowerPointProcessor target, ISummaryControl summary, Presentation destinationPresentation = null)
        {
            var itemsCount            = summary.ItemsCount;
            var mainFileTemplateIndex = itemsCount >= SummaryConstants.MaxOneSheetItems ? SummaryConstants.MaxOneSheetItems : itemsCount;

            var additionalFileTemplateIndex = itemsCount > SummaryConstants.MaxOneSheetItems ? itemsCount % SummaryConstants.MaxOneSheetItems : 0;

            var mainFilesCount = itemsCount / SummaryConstants.MaxOneSheetItems;

            if (mainFilesCount == 0 && itemsCount > 0)
            {
                mainFilesCount++;
            }

            try
            {
                var thread = new Thread(delegate()
                {
                    var mainPresentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetSimpleSummaryTemlateFile(String.Format(MasterWizardManager.SimpleSummarySlideTemplate, mainFileTemplateIndex));
                    MessageFilter.Register();
                    var presentation = target.PowerPointObject.Presentations.Open(mainPresentationTemplatePath, WithWindow: MsoTriState.msoFalse);
                    for (int j = 0; j < (itemsCount - additionalFileTemplateIndex); j += mainFileTemplateIndex)
                    {
                        foreach (Slide slide in presentation.Slides)
                        {
                            foreach (Shape shape in slide.Shapes)
                            {
                                for (int i = 1; i <= shape.Tags.Count; i++)
                                {
                                    switch (shape.Tags.Name(i))
                                    {
                                    case "HEADER":
                                        shape.TextFrame.TextRange.Text = summary.Title;
                                        break;

                                    case "SUMMARYDATA":
                                        shape.TextFrame.TextRange.Text = summary.SummaryData;
                                        break;

                                    case "MNTHLY1":
                                        shape.Visible = summary.ShowMonthlyHeader && summary.ShowTotalHeader ? MsoTriState.msoTrue : MsoTriState.msoFalse;
                                        shape.TextFrame.TextRange.Text = String.Format("Monthly{0}Investment", (char)13);
                                        break;

                                    case "TOTAL2":
                                        if ((summary.ShowMonthlyHeader && summary.ShowTotalHeader) || summary.ShowTotalHeader)
                                        {
                                            shape.TextFrame.TextRange.Text = "Total Investment";
                                        }
                                        else if (summary.ShowMonthlyHeader)
                                        {
                                            shape.TextFrame.TextRange.Text = "Monthly Investment";
                                        }
                                        else
                                        {
                                            shape.Visible = MsoTriState.msoFalse;
                                        }
                                        break;

                                    default:
                                        for (int k = 0; k < mainFileTemplateIndex; k++)
                                        {
                                            if (shape.Tags.Name(i).Equals(string.Format("SHAPE{0}", k)))
                                            {
                                                shape.Visible = MsoTriState.msoFalse;
                                                if (summary.ItemTitles == null)
                                                {
                                                    continue;
                                                }
                                                if ((j + k) < itemsCount)
                                                {
                                                    if (!string.IsNullOrEmpty(summary.ItemTitles[j + k]))
                                                    {
                                                        shape.Visible = MsoTriState.msoTrue;
                                                    }
                                                }
                                            }
                                            else if (shape.Tags.Name(i).Equals(string.Format("SUBHEADER{0}", k)))
                                            {
                                                shape.Visible = MsoTriState.msoFalse;
                                                if (summary.ItemTitles == null)
                                                {
                                                    continue;
                                                }
                                                if ((j + k) >= itemsCount)
                                                {
                                                    continue;
                                                }
                                                shape.TextFrame.TextRange.Text = summary.ItemTitles[j + k];
                                                shape.Visible = MsoTriState.msoTrue;
                                            }
                                            else if (shape.Tags.Name(i).Equals(string.Format("SELECT{0}", k)))
                                            {
                                                shape.Visible = MsoTriState.msoFalse;
                                                if (summary.ItemDetails == null)
                                                {
                                                    continue;
                                                }
                                                if ((j + k) >= itemsCount)
                                                {
                                                    continue;
                                                }
                                                shape.TextFrame.TextRange.Text = summary.ItemDetails[j + k];
                                                shape.Visible = MsoTriState.msoTrue;
                                            }
                                            else if (shape.Tags.Name(i).Equals(string.Format("TINVEST{0}", k)))
                                            {
                                                shape.Visible = MsoTriState.msoFalse;
                                                if (summary.MonthlyValues == null)
                                                {
                                                    continue;
                                                }
                                                if ((j + k) >= itemsCount)
                                                {
                                                    continue;
                                                }
                                                shape.TextFrame.TextRange.Text = summary.MonthlyValues[j + k];
                                                shape.Visible = MsoTriState.msoTrue;
                                            }
                                            else if (shape.Tags.Name(i).Equals(string.Format("MWINVEST{0}", k)))
                                            {
                                                shape.Visible = MsoTriState.msoFalse;
                                                if (summary.TotalValues == null)
                                                {
                                                    continue;
                                                }
                                                if ((j + k) >= itemsCount)
                                                {
                                                    continue;
                                                }
                                                shape.TextFrame.TextRange.Text = summary.TotalValues[j + k];
                                                shape.Visible = MsoTriState.msoTrue;
                                            }
                                        }
                                        break;
                                    }
                                }
                            }

                            if (summary.ContractSettings.IsConfigured &&
                                summary.ContractTemplateFolder != null &&
                                summary.ContractTemplateFolder.ExistsLocal())
                            {
                                target.FillContractInfo(slide, summary.ContractSettings, summary.ContractTemplateFolder);
                            }
                        }
                        var selectedTheme = summary.SelectedTheme;
                        if (selectedTheme != null)
                        {
                            presentation.ApplyTheme(selectedTheme.GetThemePath());
                        }
                        target.AppendSlide(presentation, -1, destinationPresentation);
                    }
                    presentation.Close();
                });
                thread.Start();

                while (thread.IsAlive)
                {
                    System.Windows.Forms.Application.DoEvents();
                }
            }
            finally
            {
                MessageFilter.Revoke();
            }

            if (additionalFileTemplateIndex == 0)
            {
                return;
            }
            try
            {
                var thread = new Thread(delegate()
                {
                    var additionalPresentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetSimpleSummaryTemlateFile(String.Format(MasterWizardManager.SimpleSummarySlideTemplate, (additionalFileTemplateIndex + mainFileTemplateIndex)));

                    MessageFilter.Register();
                    var presentation = target.PowerPointObject.Presentations.Open(additionalPresentationTemplatePath, WithWindow: MsoTriState.msoFalse);
                    foreach (Slide slide in presentation.Slides)
                    {
                        foreach (Shape shape in slide.Shapes)
                        {
                            for (int i = 1; i <= shape.Tags.Count; i++)
                            {
                                switch (shape.Tags.Name(i))
                                {
                                case "HEADER":
                                    shape.TextFrame.TextRange.Text = summary.Title;
                                    break;

                                case "SUMMARYDATA":
                                    shape.TextFrame.TextRange.Text = summary.SummaryData;
                                    break;

                                case "MNTHLY1":
                                    shape.Visible = summary.ShowMonthlyHeader && summary.ShowTotalHeader ? MsoTriState.msoTrue : MsoTriState.msoFalse;
                                    shape.TextFrame.TextRange.Text = String.Format("Monthly{0}Investment", (char)13);
                                    break;

                                case "TOTAL2":
                                    if ((summary.ShowMonthlyHeader && summary.ShowTotalHeader) || summary.ShowTotalHeader)
                                    {
                                        shape.TextFrame.TextRange.Text = "Total Investment";
                                    }
                                    else if (summary.ShowMonthlyHeader)
                                    {
                                        shape.TextFrame.TextRange.Text = "Monthly Investment";
                                    }
                                    else
                                    {
                                        shape.Visible = MsoTriState.msoFalse;
                                    }
                                    break;

                                default:
                                    int j = mainFileTemplateIndex * mainFilesCount;
                                    for (int k = 0; k < additionalFileTemplateIndex; k++)
                                    {
                                        if (shape.Tags.Name(i).Equals(string.Format("SHAPE{0}", k)))
                                        {
                                            shape.Visible = MsoTriState.msoFalse;
                                            if (summary.ItemTitles == null)
                                            {
                                                continue;
                                            }
                                            if ((j + k) < itemsCount)
                                            {
                                                if (!string.IsNullOrEmpty(summary.ItemTitles[j + k]))
                                                {
                                                    shape.Visible = MsoTriState.msoTrue;
                                                }
                                            }
                                        }
                                        else if (shape.Tags.Name(i).Equals(string.Format("SUBHEADER{0}", k)))
                                        {
                                            shape.Visible = MsoTriState.msoFalse;
                                            if (summary.ItemTitles == null)
                                            {
                                                continue;
                                            }
                                            if ((j + k) >= itemsCount)
                                            {
                                                continue;
                                            }
                                            shape.TextFrame.TextRange.Text = summary.ItemTitles[j + k];
                                            shape.Visible = MsoTriState.msoTrue;
                                        }
                                        else if (shape.Tags.Name(i).Equals(string.Format("SELECT{0}", k)))
                                        {
                                            shape.Visible = MsoTriState.msoFalse;
                                            if (summary.ItemDetails == null)
                                            {
                                                continue;
                                            }
                                            if ((j + k) >= itemsCount)
                                            {
                                                continue;
                                            }
                                            shape.TextFrame.TextRange.Text = summary.ItemDetails[j + k];
                                            shape.Visible = MsoTriState.msoTrue;
                                        }
                                        else if (shape.Tags.Name(i).Equals(string.Format("TINVEST{0}", k)))
                                        {
                                            shape.Visible = MsoTriState.msoFalse;
                                            if (summary.MonthlyValues == null)
                                            {
                                                continue;
                                            }
                                            if ((j + k) >= itemsCount)
                                            {
                                                continue;
                                            }
                                            shape.TextFrame.TextRange.Text = summary.MonthlyValues[j + k];
                                            shape.Visible = MsoTriState.msoTrue;
                                        }
                                        else if (shape.Tags.Name(i).Equals(string.Format("MWINVEST{0}", k)))
                                        {
                                            shape.Visible = MsoTriState.msoFalse;
                                            if (summary.TotalValues == null)
                                            {
                                                continue;
                                            }
                                            if ((j + k) >= itemsCount)
                                            {
                                                continue;
                                            }
                                            shape.TextFrame.TextRange.Text = summary.TotalValues[j + k];
                                            shape.Visible = MsoTriState.msoTrue;
                                        }
                                    }
                                    break;
                                }
                            }
                        }

                        if (summary.ContractSettings.IsConfigured &&
                            summary.ContractTemplateFolder != null &&
                            summary.ContractTemplateFolder.ExistsLocal())
                        {
                            target.FillContractInfo(slide, summary.ContractSettings, summary.ContractTemplateFolder);
                        }
                    }
                    var selectedTheme = summary.SelectedTheme;
                    if (selectedTheme != null)
                    {
                        presentation.ApplyTheme(selectedTheme.GetThemePath());
                    }
                    target.AppendSlide(presentation, -1, destinationPresentation);
                    presentation.Close();
                });
                thread.Start();

                while (thread.IsAlive)
                {
                    System.Windows.Forms.Application.DoEvents();
                }
            }
            finally
            {
                MessageFilter.Revoke();
            }
        }
        private static void AppendTableSummary(this PowerPointProcessor target, ISummaryControl summary, Presentation destinationPresentation = null)
        {
            try
            {
                var thread = new Thread(delegate()
                {
                    MessageFilter.Register();
                    var slidesCount = summary.OutputReplacementsLists.Count;
                    for (var k = 0; k < slidesCount; k++)
                    {
                        var presentationTemplatePath = MasterWizardManager.Instance.SelectedWizard.GetSimpleSummaryTableFile(String.Format(MasterWizardManager.SimpleSummaryTableTemplate, summary.ItemsPerTable));
                        if (!File.Exists(presentationTemplatePath))
                        {
                            continue;
                        }
                        var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse);
                        foreach (Slide slide in presentation.Slides)
                        {
                            foreach (Shape shape in slide.Shapes)
                            {
                                for (var i = 1; i <= shape.Tags.Count; i++)
                                {
                                    switch (shape.Tags.Name(i))
                                    {
                                    case "HEADER":
                                        shape.TextFrame.TextRange.Text = summary.Title;
                                        break;

                                    case "SUMMARYDATA":
                                        shape.TextFrame.TextRange.Text = summary.SummaryData;
                                        break;

                                    default:
                                        var startIndex = k * summary.ItemsPerTable;
                                        for (var j = 0; j < summary.ItemsPerTable; j++)
                                        {
                                            if (shape.Tags.Name(i).Equals(String.Format("ICON{0}", j + 1)))
                                            {
                                                if (summary.ShowIcons &&
                                                    (j + startIndex) < summary.ItemsCount &&
                                                    !String.IsNullOrEmpty(summary.TableIcons[j + startIndex]))
                                                {
                                                    var filePath    = MasterWizardManager.Instance.SelectedWizard.GetSimpleSummaryIconFile(summary.TableIcons[j + startIndex]);
                                                    var newShape    = slide.Shapes.AddPicture(filePath, MsoTriState.msoFalse, MsoTriState.msoCTrue, shape.Left, shape.Top, shape.Width, shape.Height);
                                                    newShape.Top    = shape.Top;
                                                    newShape.Left   = shape.Left;
                                                    newShape.Width  = shape.Width;
                                                    newShape.Height = shape.Height;
                                                }
                                                shape.Visible = MsoTriState.msoFalse;
                                            }
                                        }
                                        break;
                                    }
                                }
                                if (shape.HasTable != MsoTriState.msoTrue)
                                {
                                    continue;
                                }
                                var table             = shape.Table;
                                var tableRowsCount    = table.Rows.Count;
                                var tableColumnsCount = table.Columns.Count;
                                for (var i = 1; i <= tableRowsCount; i++)
                                {
                                    for (var j = 1; j <= tableColumnsCount; j++)
                                    {
                                        if (j > table.Columns.Count)
                                        {
                                            continue;
                                        }
                                        var tableShape = table.Cell(i, j).Shape;
                                        if (tableShape.HasTextFrame != MsoTriState.msoTrue)
                                        {
                                            continue;
                                        }
                                        var cellText = tableShape.TextFrame.TextRange.Text.Trim();
                                        if (!cellText.Contains("Product") || summary.ShowIcons)
                                        {
                                            continue;
                                        }
                                        var prevColumnIndex = j - 1;
                                        if (prevColumnIndex < 1)
                                        {
                                            continue;
                                        }
                                        table.Cell(i, j).Merge(table.Cell(i, prevColumnIndex));
                                    }
                                }

                                tableRowsCount    = table.Rows.Count;
                                tableColumnsCount = table.Columns.Count;
                                for (var i = 1; i <= tableRowsCount; i++)
                                {
                                    for (var j = 1; j <= tableColumnsCount; j++)
                                    {
                                        var tableShape = table.Cell(i, j).Shape;
                                        if (tableShape.HasTextFrame != MsoTriState.msoTrue)
                                        {
                                            continue;
                                        }
                                        var cellText = tableShape.TextFrame.TextRange.Text.Trim();
                                        if (!summary.OutputReplacementsLists[k].ContainsKey(cellText))
                                        {
                                            continue;
                                        }
                                        tableShape.TextFrame.TextRange.Text = summary.OutputReplacementsLists[k][cellText];
                                        summary.OutputReplacementsLists[k].Remove(cellText);
                                    }
                                }

                                for (var i = tableRowsCount; i >= 1; i--)
                                {
                                    var tableShape = table.Cell(i, 1).Shape;
                                    if (tableShape.HasTextFrame != MsoTriState.msoTrue)
                                    {
                                        continue;
                                    }
                                    var cellText = tableShape.TextFrame.TextRange.Text.Trim();
                                    if (!cellText.Equals("DeleteRow"))
                                    {
                                        continue;
                                    }
                                    try { table.Rows[i].Delete(); }
                                    catch { shape.Visible = MsoTriState.msoFalse; }
                                }
                            }
                        }
                        var selectedTheme = summary.SelectedTheme;
                        if (selectedTheme != null)
                        {
                            presentation.ApplyTheme(selectedTheme.GetThemePath());
                        }
                        target.AppendSlide(presentation, -1, destinationPresentation);
                        presentation.Close();
                    }
                });
                thread.Start();

                while (thread.IsAlive)
                {
                    System.Windows.Forms.Application.DoEvents();
                }
            }
            catch { }
            finally
            {
                MessageFilter.Revoke();
            }
        }
 public static void PrepareStrategyEmail(this PowerPointProcessor target, string fileName, DigitalInfoStrategyOutputModel dataModel, Theme selectedTheme)
 {
     target.PreparePresentation(fileName, presentation => target.AppendStrategy(dataModel, selectedTheme, presentation));
 }
        public static void AppendStrategy(this PowerPointProcessor target, DigitalInfoStrategyOutputModel source, Theme theme, Presentation destinationPresentation = null)
        {
            try
            {
                var thread = new Thread(delegate()
                {
                    var presentationTemplatePath = source.TemplatePath;
                    if (string.IsNullOrEmpty(presentationTemplatePath))
                    {
                        return;
                    }
                    if (!File.Exists(presentationTemplatePath))
                    {
                        return;
                    }

                    MessageFilter.Register();
                    var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse);
                    foreach (Slide slide in presentation.Slides)
                    {
                        foreach (Shape shape in slide.Shapes)
                        {
                            for (int i = 1; i <= shape.Tags.Count; i++)
                            {
                                var shapeTagName = shape.Tags.Name(i);
                                switch (shapeTagName)
                                {
                                case "MONTHDIGINV":
                                    shape.TextFrame.TextRange.Text = source.Total2;
                                    break;

                                case "TOTALDIGINV":
                                    shape.TextFrame.TextRange.Text = source.Total1;
                                    break;

                                default:
                                    for (var j = 0; j < BaseDigitalInfoOneSheetOutputModel.MaxRecords; j++)
                                    {
                                        if (shapeTagName.Equals(String.Format("DIGITAL_GRAPHIC{0}", j + 1)))
                                        {
                                            var fileName = source.Logos.Length > j ? source.Logos[j] : String.Empty;
                                            if (!String.IsNullOrEmpty(fileName) && File.Exists(fileName))
                                            {
                                                var newShape = slide.Shapes.AddPicture(fileName, MsoTriState.msoFalse, MsoTriState.msoCTrue, shape.Left, shape.Top,
                                                                                       shape.Width, shape.Height);
                                                newShape.Top    = shape.Top;
                                                newShape.Left   = shape.Left;
                                                newShape.Width  = shape.Width;
                                                newShape.Height = shape.Height;
                                            }
                                            shape.Visible = MsoTriState.msoFalse;
                                        }
                                        if (shapeTagName.Equals(String.Format("DIGITAL_TAG{0}", j + 1)))
                                        {
                                            shape.TextFrame.TextRange.Text = source.Records.Count > j ? source.Records[j].Text1 : String.Empty;
                                        }
                                        if (shapeTagName.Equals(String.Format("DIGITAL_DETAILS{0}", j + 1)))
                                        {
                                            shape.TextFrame.TextRange.Text = source.Records.Count > j ? source.Records[j].Text2 : String.Empty;
                                        }
                                    }
                                    break;
                                }
                            }
                        }
                    }
                    if (theme != null)
                    {
                        presentation.ApplyTheme(theme.GetThemePath());
                    }
                    target.AppendSlide(presentation, -1, destinationPresentation);
                    presentation.Close();
                });
                thread.Start();

                while (thread.IsAlive)
                {
                    Application.DoEvents();
                }
            }
            catch
            {
            }
            finally
            {
                MessageFilter.Revoke();
            }
        }
        public static void AppendDigitalOneSheet(this PowerPointProcessor target, StandaloneDigitalInfoOneSheetOutputModel dataModel, Theme selectedTheme, bool pasteToSlideMaster, Presentation destinationPresentation = null)
        {
            try
            {
                var thread = new Thread(delegate()
                {
                    MessageFilter.Register();
                    var copyOfReplacementList    = new Dictionary <string, string>(dataModel.ReplacementsList);
                    var presentationTemplatePath = dataModel.TemplateFilePath;
                    if (!File.Exists(presentationTemplatePath))
                    {
                        return;
                    }
                    var presentation = target.PowerPointObject.Presentations.Open(presentationTemplatePath, WithWindow: MsoTriState.msoFalse);
                    var taggedSlide  = presentation.Slides.Count > 0 ? presentation.Slides[1] : null;

                    var logoShapes = new List <Shape>();
                    foreach (var shape in taggedSlide.Shapes.OfType <Shape>().Where(s => s.HasTable != MsoTriState.msoTrue))
                    {
                        for (var i = 1; i <= shape.Tags.Count; i++)
                        {
                            var shapeTagName = shape.Tags.Name(i);
                            for (var j = 0; j < BaseDigitalInfoOneSheetOutputModel.MaxRecords; j++)
                            {
                                if (shapeTagName.Equals(String.Format("DIGLOGO{0}", j + 1)))
                                {
                                    var fileName = dataModel.Logos.Length > j ? dataModel.Logos[j] : String.Empty;
                                    if (!String.IsNullOrEmpty(fileName) && File.Exists(fileName))
                                    {
                                        var newShape = taggedSlide.Shapes.AddPicture(fileName, MsoTriState.msoFalse, MsoTriState.msoCTrue, shape.Left,
                                                                                     shape.Top, shape.Width, shape.Height);
                                        newShape.Top    = shape.Top;
                                        newShape.Left   = shape.Left;
                                        newShape.Width  = shape.Width;
                                        newShape.Height = shape.Height;
                                        logoShapes.Add(newShape);
                                    }
                                    shape.Visible = MsoTriState.msoFalse;
                                }
                            }
                        }
                    }

                    var tableContainer = taggedSlide.Shapes.Cast <Shape>().FirstOrDefault(s => s.HasTable == MsoTriState.msoTrue);
                    if (tableContainer == null)
                    {
                        return;
                    }
                    var table             = tableContainer.Table;
                    var tableRowsCount    = table.Rows.Count;
                    var tableColumnsCount = table.Columns.Count;
                    for (var i = 1; i <= tableRowsCount; i++)
                    {
                        for (var j = 1; j <= tableColumnsCount; j++)
                        {
                            var tableShape = table.Cell(i, j).Shape;
                            if (tableShape.HasTextFrame != MsoTriState.msoTrue)
                            {
                                continue;
                            }
                            var cellText = tableShape.TextFrame.TextRange.Text.Replace(" ", "");
                            var key      = copyOfReplacementList.Keys.FirstOrDefault(k => k.Replace(" ", "").ToLower().Equals(cellText.ToLower()));
                            if (String.IsNullOrEmpty(key))
                            {
                                continue;
                            }
                            tableShape.TextFrame.TextRange.Text = copyOfReplacementList[key];
                            copyOfReplacementList.Remove(cellText);
                        }
                    }
                    tableColumnsCount = table.Columns.Count;
                    for (var i = tableColumnsCount; i >= 1; i--)
                    {
                        var tableShape = table.Cell(3, i).Shape;
                        if (tableShape.HasTextFrame != MsoTriState.msoTrue)
                        {
                            continue;
                        }
                        var cellText = tableShape.TextFrame.TextRange.Text.Trim();
                        if (!cellText.Equals("Delete Column"))
                        {
                            continue;
                        }
                        table.Columns[i].Delete();
                    }
                    tableRowsCount = table.Rows.Count;
                    for (var i = tableRowsCount; i >= 1; i--)
                    {
                        for (var j = 1; j < 3; j++)
                        {
                            var tableShape = table.Cell(i, j).Shape;
                            if (tableShape.HasTextFrame != MsoTriState.msoTrue)
                            {
                                continue;
                            }
                            var cellText = tableShape.TextFrame.TextRange.Text.Trim();
                            if (!cellText.Equals("Delete Row"))
                            {
                                continue;
                            }
                            table.Rows[i].Delete();
                            break;
                        }
                    }
                    if (pasteToSlideMaster)
                    {
                        var newSlide = presentation.Slides.Add(1, PpSlideLayout.ppLayoutBlank);
                        Design design;
                        if (selectedTheme != null)
                        {
                            presentation.ApplyTheme(selectedTheme.GetThemePath());
                            design      = presentation.Designs[presentation.Designs.Count];
                            design.Name = DateTime.Now.ToString("MMddyy-hhmmsstt");
                        }
                        else
                        {
                            design = presentation.Designs.Add(DateTime.Now.ToString("MMddyy-hhmmsstt"));
                        }
                        tableContainer.Copy();
                        design.SlideMaster.Shapes.Paste();
                        foreach (var logoShape in logoShapes)
                        {
                            logoShape.Copy();
                            design.SlideMaster.Shapes.Paste();
                        }

                        if (dataModel.ContractSettings.IsConfigured)
                        {
                            target.FillContractInfo(design, dataModel.ContractSettings, BusinessObjects.Instance.OutputManager.ContractTemplateFolder);
                        }

                        newSlide.Design = design;
                    }
                    else
                    {
                        if (selectedTheme != null)
                        {
                            presentation.ApplyTheme(selectedTheme.GetThemePath());
                        }

                        if (dataModel.ContractSettings.IsConfigured)
                        {
                            target.FillContractInfo(taggedSlide, dataModel.ContractSettings, BusinessObjects.Instance.OutputManager.ContractTemplateFolder);
                        }
                    }
                    target.AppendSlide(presentation, 1, destinationPresentation);
                    presentation.Close();
                });
                thread.Start();
                while (thread.IsAlive)
                {
                    Application.DoEvents();
                }
            }
            catch
            {
            }
            finally
            {
                MessageFilter.Revoke();
            }
        }
 public static void PrepareDigitalOneSheetEmail(this PowerPointProcessor target, string fileName, StandaloneDigitalInfoOneSheetOutputModel page, Theme selectedTheme, bool pasteToSlideMaster)
 {
     target.PreparePresentation(fileName, presentation => target.AppendDigitalOneSheet(page, selectedTheme, pasteToSlideMaster, presentation));
 }
Ejemplo n.º 14
0
 public static void PrepareMediaOneSheetEmail(this PowerPointProcessor target, string fileName, IEnumerable <ProgramScheduleOutputModel> pages, Theme selectedTheme, bool pasteToSlideMaster)
 {
     target.PreparePresentation(fileName, presentation => target.AppendMediaOneSheet(pages, selectedTheme, pasteToSlideMaster, presentation));
 }