private void InsertPageDetasils(SlidePart tempSlidepart, GanttChartAutomation.GanttReportObject objganttReport)
        {
            Xdr.Paragraph pageDetails    = _shpPageDetails.TextBody.Descendants <Xdr.Paragraph>().FirstOrDefault();
            Xdr.Run       pagedetails    = pageDetails.Descendants <Xdr.Run>().FirstOrDefault();
            Xdr.Paragraph ContactDetails = _shpContactDetails.TextBody.Descendants <Xdr.Paragraph>().FirstOrDefault();
            Xdr.Run       contactdetails = ContactDetails.Descendants <Xdr.Run>().FirstOrDefault();

            //Xdr.Paragraph StatDetails = _shpStatsDetail.TextBody.Descendants<Xdr.Paragraph>().FirstOrDefault();
            //Xdr.Run statDetails = StatDetails.Descendants<Xdr.Run>().FirstOrDefault();
            Xdr.Paragraph HeadingIntegrated = _shpHeadingIntegrated.TextBody.Descendants <Xdr.Paragraph>().FirstOrDefault();
            Xdr.Run       headingIntegrated = HeadingIntegrated.Descendants <Xdr.Run>().FirstOrDefault();

            Xdr.Paragraph TitleDetails   = _shpTitle.TextBody.Descendants <Xdr.Paragraph>().FirstOrDefault();
            Xdr.Run       titleDetails   = TitleDetails.Descendants <Xdr.Run>().FirstOrDefault();
            Xdr.Paragraph HeadingDetails = _shpHeading.TextBody.Descendants <Xdr.Paragraph>().FirstOrDefault();
            Xdr.Run       headingDetails = HeadingDetails.Descendants <Xdr.Run>().FirstOrDefault();


            Xdr.Paragraph FooterDetails = _shpFooterDetails.TextBody.Descendants <Xdr.Paragraph>().FirstOrDefault();
            Xdr.Run       footerDetails = FooterDetails.Descendants <Xdr.Run>().FirstOrDefault();

            pagedetails.Text.Text       = objganttReport.PageDetails;
            contactdetails.Text.Text    = objganttReport.RIdetails;
            headingIntegrated.Text.Text = objganttReport.Title2;
            titleDetails.Text.Text      = objganttReport.Title1;
            headingDetails.Text.Text    = objganttReport.Title3;
            //statDetails.Text.Text = objganttReport.StatusDate.ToString();
            footerDetails.Text.Text = objganttReport.FooterText;
        }
        public string  BuildPresentation(string parameterList, string UserId)
        {
            GanttChartAutomation.GanttChartDataHelper gantt           = new GanttChartAutomation.GanttChartDataHelper();
            GanttChartAutomation.GanttReportObject    ganttReportData = gantt.GenerateGanttChartReport(parameterList, UserId);

            DateTime startDate, endDate;

            startDate = ganttReportData.StatusDate.AddMonths(-2);
            endDate   = ganttReportData.StatusDate.AddMonths(3);
            ganttReportData.SetExplicitStartEndDate(startDate, endDate);
            _dtStatsDate = ganttReportData.StatusDate;

            IList <GanttChartAutomation.GanttReportObject> ganttChartPages = ganttReportData.PaginateDataWithWeightage(15);

            GanttChartAutomation.GanttReportObject testObject = ganttChartPages[0];


            byte[] fileBytes = PPTTemplate;
            using (MemoryStream stream = new MemoryStream())
            {
                stream.Write(fileBytes, 0, fileBytes.Length);

                using (PresentationDocument presentationDocument = PresentationDocument.Open(stream, true))
                {
                    PresentationPart presentationPart  = presentationDocument.PresentationPart;
                    SlidePart        templateSlidePart = presentationPart.SlideParts.LastOrDefault();
                    SlidePart        slidePart         = presentationPart.SlideParts.FirstOrDefault();


                    SlidePart newSlide;
                    _dtstartDate = ganttChartPages[0].StartDate;
                    _dtendDate   = ganttChartPages[0].EndDate;

                    for (int _intPageCount = 0; _intPageCount < ganttChartPages.Count; _intPageCount++)
                    {
                        bool lblnSlide = false;

                        GanttChartAutomation.GanttReportObject objganttReport = ganttChartPages[_intPageCount];

                        temp = templateSlidePart.Slide.CommonSlideData.ShapeTree.ChildElements.OfType <Shape>().Where(item => (item.NonVisualShapeProperties.NonVisualDrawingProperties.Description != null) && (item.NonVisualShapeProperties.NonVisualDrawingProperties.Description.Value.Equals("PositionBox", StringComparison.OrdinalIgnoreCase))).FirstOrDefault();
                        _shpNofillDiamond = templateSlidePart.Slide.CommonSlideData.ShapeTree.ChildElements.OfType <Shape>().Where(item => (item.NonVisualShapeProperties.NonVisualDrawingProperties.Description != null) && (item.NonVisualShapeProperties.NonVisualDrawingProperties.Description.Value.Equals("NoFillDiamond", StringComparison.OrdinalIgnoreCase))).FirstOrDefault();
                        _intCellWidth     = temp.ShapeProperties.Transform2D.Extents.Cx;
                        getheight(temp.ShapeProperties.Transform2D.Extents.Cy, 15);
                        _intSymbolWidth = _shpNofillDiamond.ShapeProperties.Transform2D.Extents.Cx;
                        newSlide        = CloneSlidePart(presentationPart, templateSlidePart);
                        InitializePosition(newSlide);


                        for (int i = 1; i <= objganttReport.RowCollection.Count; i++)
                        {
                            IList <Xdr.TableCell> cells = rows[i].ChildElements.OfType <Xdr.TableCell>().ToList();
                            _intTaskhaving += objganttReport.RowCollection[i - 1].Weightage;
                            SetCellText(cells[2], objganttReport.RowCollection[i - 1].TaskName.ToString(), objganttReport.RowCollection[i - 1].Weightage, rows[i]);
                            InsertTrend(objganttReport.RowCollection[i - 1].Trend, newSlide, i - 1, objganttReport.RowCollection[i - 1].Weightage);
                            SetCellText(cells[1], objganttReport.RowCollection[i - 1].CpValue == null ? "" : objganttReport.RowCollection[i - 1].CpValue.ToString(), objganttReport.RowCollection[i - 1].Weightage, rows[i]);

                            SetCellText(cells[3], objganttReport.RowCollection[i - 1].RaaValue == null ? "" : objganttReport.RowCollection[i - 1].RaaValue.ToString(), objganttReport.RowCollection[i - 1].Weightage, rows[i]);
                            SetCellText(cells[4], objganttReport.RowCollection[i - 1].BacValue == null ? "" : objganttReport.RowCollection[i - 1].BacValue.ToString(), objganttReport.RowCollection[i - 1].Weightage, rows[i]);
                            SetCellText(cells[5], objganttReport.RowCollection[i - 1].SvValue == null ? "" : objganttReport.RowCollection[i - 1].SvValue.ToString(), objganttReport.RowCollection[i - 1].Weightage, rows[i]);
                            SetShapeCe(cells[6], "", newSlide, objganttReport.RowCollection[i - 1].rowImageDetails, i - 1, objganttReport.RowCollection[i - 1].Weightage);
                            InsertPageDetasils(newSlide, objganttReport);
                            //InsertstatusLine(newSlide);
                        }
                        if (objganttReport.RowCollection.Count < 15)
                        {
                            //_cshpStatsLine.ShapeProperties.Transform2D.Extents.Cx = (_intTaskhaving + 1) * _intcellHeight;
                            //_cshpStatsLine.ShapeProperties.Transform2D.Offset.Y = 3848497;

                            for (int i = objganttReport.RowCollection.Count + 1; i <= 15; i++)
                            {
                                rows[i].Remove();
                            }
                        }
                        _intTaskhaving = -1;

                        RemoveShapePosition(newSlide, presentationPart);
                    }

                    DeleteTemplateSlide(presentationPart, templateSlidePart);


                    xVal.OpenXmlValidator validator = new xVal.OpenXmlValidator();
                    var errors = validator.Validate(presentationDocument).ToList();



                    if (errors.Count == 0)
                    {
                        presentationPart.Presentation.Save();
                    }
                    else
                    {
                        throw new ApplicationException("Error in document.");
                    }
                }

                byte[] presentationFile = stream.ToArray();
                string outputFolder     = @"C:\\ReMICS\\OpenXMLPpt\\";
                if (!System.IO.Directory.Exists(outputFolder))
                {
                    System.IO.Directory.CreateDirectory(outputFolder);
                }

                string newPresentation = outputFolder + "OpenXML-PPT-" + Guid.NewGuid().ToString() + ".pptx";
                File.WriteAllBytes(newPresentation, presentationFile);

                return(newPresentation);
            }
        }