public void GenerateReport(int id)
        {
            EntityDTO dto = entityData.GetOneEntity(id);
            dto.ExtractProperties();

            FileDTO file = filesData.GetFile(dto.DGXFileName);

            byte[] diagram = file.Data;
            //Save the raw .wmf file
            int poolCount = entityData.GetPoolCount(dto.ID);

            this.imageManager = new WmfImageManager(dto, diagram, dto.DGXFileName, dto.Type, poolCount, true );

            string resizedDiagram = imageManager.SaveAndResizeImage(diagram, dto.DGXFileName, dto.Type,
                                    poolCount, true);

            string[] images = new string[] { PathResolver.MapPath(resizedDiagram) };

            if (poolCount > 1 && dto.Type == 142)
            {
                //slice the wmf
                SubProcessSlicer slicer = new SubProcessSlicer(resizedDiagram);
                images = slicer.Slice();
            }

            List<PdfContentParameter> contents = ReportBuilder.BuildReport(dto);
            byte[] pdfBytes = PDFBuilder.CreatePDF(contents, images, dto.Type);
            this.view.RenderReport(pdfBytes);
        }
        public void LoadSampleData(int id, bool showImage)
        {
            this.showimage = showImage;
            //BC-040-000 Approve Document
            //int id = 106571;

            //CE-010-000 Define Consulting Need
            //int id = 170160;

            //IS-121-000 Develop / Revise / Cancel Mission Plan
            //int id = 160843;

            //SM-010-000 Raise/Change/Cancel Service Request
            //int id = 194205;

            //RC-010-000 Initiate/Raise Change Request
            //int id = 188719;

            //Get all the "succeeding" event type
            //from the sub process
            var events = spData.GetAllSucceedingEvent(id);
            EndToEndDTO main = CreateMainDTO(id, events);
            //This builds the remaining sub item
            //till there is no more succeeding
            //to handle
            foreach (var item in main.SubItems)
            {
                BuildSubItems(item);
            }

            StringBuilder html = new StringBuilder();
            html.Append("<table border='1' cellpadding='8'>");
            html.Append("<tr>");
            main.AssociatedEventDTO.ExtractProperties();

            //Slicing
            string imagePath = BuildDiagramImageReturningPath(main.AssociatedEventDTO);

            SubProcessSlicer slicer = new SubProcessSlicer(imagePath);
            string[] sliced = slicer.Slice();

            StringBuilder sb = new StringBuilder();
            foreach (var item in sliced)
            {
                string vPath = ExtractVirtualPath(item);
                sb.AppendFormat("<td valign='top'><div class=\"diagram-image-holder\"><img id=\"diagram\" class=\"diagram\" src={0} /></div></td>", vPath);
            }

            html.AppendFormat("<td  valign='top'><h3>{0}</h3></td>{1}", main.AssociatedEventDTO.Name, this.showimage ?  sb.ToString() : string.Empty);
            html.Append("<td>");

            BuildSequence(html, main);

            html.Append("</td>");
            html.Append("</tr>");
            html.Append("</table>");

            this.view.RenderFullCycle(html.ToString());
        }