private void CreateUpComingSlides(TaskGroupData taskData, int lowestSLideIndex, ref int createdCount, PresentationPart oPPart) { Repository.Utility.WriteLog("CreateupComingSlides started", System.Diagnostics.EventLogEntryType.Information); try { if (UpComingSlidePart == null) return; #region upComingSlides if (taskData.UpComingTaskGroups == null || taskData.UpComingTaskGroups.Count == 0) { createdCount++; return; } foreach (TaskItemGroup upComingTaskgroup in taskData.UpComingTaskGroups) { try { SlidePart upComingSlidePart = oPPart.GetSlidePartsInOrder().ToList()[lowestSLideIndex + createdCount]; var table = upComingSlidePart.Slide.Descendants<DocumentFormat.OpenXml.Drawing.Table>().FirstOrDefault(); if (table != null && upComingTaskgroup.TaskItems.Count > 0) { TableUtilities.PopulateLateOrUpComingTasksTable(table, upComingTaskgroup.TaskItems, taskData.FiscalPeriod); } createdCount++; } catch { continue; } } #endregion } catch (Exception ex) { Repository.Utility.WriteLog(string.Format("CreateupComingSlides had an error and the error message={0}", ex.Message), System.Diagnostics.EventLogEntryType.Information); } Repository.Utility.WriteLog("CreateupComingSlides completed", System.Diagnostics.EventLogEntryType.Information); }
private void CreateSPDLToBLSlides(TaskGroupData taskData, int lowestSLideIndex, ref int createdCount, PresentationPart oPPart, ChartType chartType) { Repository.Utility.WriteLog("CreateLateSlides started", System.Diagnostics.EventLogEntryType.Information); try { #region LateSlides if (chartType == ChartType.SPBaseLineStart && SPDSSlidePart == null) return; if (chartType == ChartType.SPBaseLineFinish && SPDFSlidePart == null) return; if (chartType == ChartType.SPBEI && SPBEISlidePart == null) return; SlidePart chartSlidePart = oPPart.GetSlidePartsInOrder().ToList()[lowestSLideIndex + createdCount]; if (chartSlidePart.ChartParts.ToList().Count > 0) { var chartPart = chartSlidePart.ChartParts.ToList()[0]; foreach (IdPartPair part in chartPart.Parts) { var spreadsheet = chartPart.GetPartById(part.RelationshipId) as EmbeddedPackagePart; if (spreadsheet != null) { using (var oSDoc = SpreadsheetDocument.Open(spreadsheet.GetStream(FileMode.OpenOrCreate, FileAccess.ReadWrite), true)) { var workSheetPart = oSDoc.WorkbookPart.GetPartsOfType<WorksheetPart>().FirstOrDefault(); var sheetData = workSheetPart.Worksheet.Elements<SheetData>().FirstOrDefault(); switch (chartType) { case ChartType.SPBaseLineStart: if (taskData.SPDLSTartToBL != null && taskData.SPDLSTartToBL.Count > 0 && taskData.SPDLSTartToBL[0].Data != null) { WorkbookUtilities.ReplicateRow(sheetData, 2, taskData.SPDLSTartToBL[0].Data.Count - 1); WorkbookUtilities.LoadGraphSheetData(sheetData, taskData.SPDLSTartToBL, 1, 0); BarChartUtilities.LoadChartData(chartPart, taskData.SPDLSTartToBL); } break; case ChartType.SPBaseLineFinish: if (taskData.SPDLFinishToBL != null && taskData.SPDLFinishToBL.Count > 0 && taskData.SPDLFinishToBL[0].Data != null) { WorkbookUtilities.ReplicateRow(sheetData, 2, taskData.SPDLFinishToBL[0].Data.Count - 1); WorkbookUtilities.LoadGraphSheetData(sheetData, taskData.SPDLFinishToBL, 1, 0); BarChartUtilities.LoadChartData(chartPart, taskData.SPDLFinishToBL); } break; case ChartType.SPBEI: if (taskData.BEIData != null && taskData.BEIData.Count > 0 && taskData.BEIData[0].Data != null) { WorkbookUtilities.ReplicateRow(sheetData, 2, taskData.BEIData[0].Data.Count - 1); WorkbookUtilities.LoadGraphSheetData(sheetData, taskData.BEIData, 1, 0); BarChartUtilities.LoadChartData(chartPart, taskData.BEIData); } break; } } break; } } } #endregion } catch (Exception ex) { Repository.Utility.WriteLog(string.Format("CreateLateSlides had an error and the error message={0}", ex.Message), System.Diagnostics.EventLogEntryType.Information); } createdCount++; Repository.Utility.WriteLog("CreateLateSlides completed", System.Diagnostics.EventLogEntryType.Information); }
private void CreateFixedSlidesData(TaskGroupData taskData, int[] fixedSlideIndices, int lateSlideIndex,int upcomingSlideIndex, int chartSlideIndex, int lowestSLideIndex, int SPDLSTartToBLSlideIndex, int SPDLFinishToBLSlideIndex,int BEISlideIndex,ref int createdCount, PresentationPart oPPart) { Repository.Utility.WriteLog("CreateFixedSlidesData started", System.Diagnostics.EventLogEntryType.Information); foreach (int slideIndex in fixedSlideIndices) { if (slideIndex == lateSlideIndex) { CreateLateSlides(taskData, lowestSLideIndex, ref createdCount, oPPart); } if (slideIndex == upcomingSlideIndex) { CreateUpComingSlides(taskData, lowestSLideIndex, ref createdCount, oPPart); } if (slideIndex == chartSlideIndex) { CreateChartSlides(taskData, lowestSLideIndex, ref createdCount, oPPart); } if (slideIndex == SPDLSTartToBLSlideIndex) { CreateSPDLToBLSlides(taskData, lowestSLideIndex, ref createdCount, oPPart,ChartType.SPBaseLineStart); } if (slideIndex == SPDLFinishToBLSlideIndex) { CreateSPDLToBLSlides(taskData, lowestSLideIndex, ref createdCount, oPPart, ChartType.SPBaseLineFinish); } if (slideIndex == BEISlideIndex) { CreateSPDLToBLSlides(taskData, lowestSLideIndex, ref createdCount, oPPart, ChartType.SPBEI); } } Repository.Utility.WriteLog("CreateFixedSlidesData completed successfully", System.Diagnostics.EventLogEntryType.Information); }
private void CreateFixedSlides(TaskGroupData taskData, int[] dynamicSlideIndices, int lateSlideIndex,int upComingSlideIndex, int chartSlideIndex, int SPDLSTartToBLSlideIndex, int SPDLFinishToBLSlideIndex,int BEISlideIndex, SlidePart lateSlidePart,SlidePart upComingSlidePart, SlidePart chartSlidePart, SlidePart SPDLSTartToBLSlidePart, SlidePart SPDLFinishToBLSlidePart,SlidePart BEISlidePart, PresentationPart oPPart) { Repository.Utility.WriteLog("CreateFixedSlides started", System.Diagnostics.EventLogEntryType.Information); foreach (int slideIndex in dynamicSlideIndices) { if (lateSlideIndex == slideIndex) { if (taskData.LateTaskGroups != null && taskData.LateTaskGroups.Count > 0) { if (lateSlidePart != null) { foreach (TaskItemGroup group in taskData.LateTaskGroups) { var newLateSlidePart = lateSlidePart.CloneSlide(SlideType.Late); oPPart.AppendSlide(newLateSlidePart); } } } else { if (lateSlidePart != null) { var newLateSlidePart = lateSlidePart.CloneSlide(SlideType.Late); oPPart.AppendSlide(newLateSlidePart); } } } if (upComingSlideIndex == slideIndex) { if (taskData.UpComingTaskGroups != null && taskData.UpComingTaskGroups.Count > 0) { if (upComingSlidePart != null) { foreach (TaskItemGroup group in taskData.UpComingTaskGroups) { var newupComingSlidePart = upComingSlidePart.CloneSlide(SlideType.Late); oPPart.AppendSlide(newupComingSlidePart); } } } else { if (upComingSlidePart != null) { var newupComingSlidePart = upComingSlidePart.CloneSlide(SlideType.Late); oPPart.AppendSlide(newupComingSlidePart); } } } if (SPDLSTartToBLSlideIndex == slideIndex) { if (SPDLSTartToBLSlidePart != null) { var newSPDLStartToBLSlidePart = SPDLSTartToBLSlidePart.CloneSlide(SlideType.Chart); oPPart.AppendSlide(newSPDLStartToBLSlidePart); } } if (SPDLFinishToBLSlideIndex == slideIndex) { if (SPDLFinishToBLSlidePart != null) { var newSPDLFinishToBLSlidePart = SPDLFinishToBLSlidePart.CloneSlide(SlideType.Chart); oPPart.AppendSlide(newSPDLFinishToBLSlidePart); } } if (BEISlideIndex == slideIndex) { if (BEISlidePart != null) { var newBEISlidePart = BEISlidePart.CloneSlide(SlideType.Chart); oPPart.AppendSlide(newBEISlidePart); } } if (chartSlideIndex == slideIndex) { if (taskData.ChartsData != null && taskData.ChartsData.Count > 0) { if (chartSlidePart != null && taskData.ChartsData.Keys.Any(t => t.StartsWith("Show On") == true)) { foreach (string chartType in taskData.ChartsData.Keys) { if (chartType.StartsWith("Show On")) { var newChartSlidePart = chartSlidePart.CloneSlide(SlideType.Chart); oPPart.AppendSlide(newChartSlidePart); } } } else { var newChartSlidePart = chartSlidePart.CloneSlide(SlideType.Chart); oPPart.AppendSlide(newChartSlidePart); } } } } Repository.Utility.WriteLog("CreateFixedSlides completed successfully", System.Diagnostics.EventLogEntryType.Information); }
private void CreateChartSlides(TaskGroupData taskData, int lowestSLideIndex, ref int createdCount, PresentationPart oPPart) { Repository.Utility.WriteLog("CreateChartSlides started", System.Diagnostics.EventLogEntryType.Information); try { if (ChartSlidePart == null) return; if (taskData.ChartsData == null || taskData.ChartsData.Keys.Count == 0 || !taskData.ChartsData.Keys.Any(t=>t.StartsWith("Show On"))) { createdCount++; return; } if (taskData.ChartsData != null) { foreach (string key in taskData.ChartsData.Keys) { try { if (key.StartsWith("Show On")) { //Get all Tasks related to Driving path TaskItemGroup newGroup = new TaskItemGroup() { ChartTaskItems = taskData.ChartsData[key] }; var chartDataTable = newGroup.GetChartDataTable(key); #region Charts if (chartDataTable != null) { SlidePart chartSlidePart = oPPart.GetSlidePartsInOrder().ToList()[lowestSLideIndex + createdCount]; if (chartSlidePart.ChartParts.ToList().Count > 0) { createdCount++; var chartPart = chartSlidePart.ChartParts.ToList()[0]; foreach (IdPartPair part in chartPart.Parts) { var spreadsheet = chartPart.GetPartById(part.RelationshipId) as EmbeddedPackagePart; if (spreadsheet != null) { OpenSettings settings = new OpenSettings(); settings.AutoSave = true; using (var oSDoc = SpreadsheetDocument.Open(spreadsheet.GetStream(FileMode.OpenOrCreate, FileAccess.ReadWrite), true,settings)) { var workSheetPart = oSDoc.WorkbookPart.GetPartsOfType<WorksheetPart>().FirstOrDefault(); var sheetData = workSheetPart.Worksheet.Elements<SheetData>().FirstOrDefault(); for (int i = sheetData.Elements().Count() - 1; i >= 2; i--) { sheetData.ElementAt(i).Remove(); } string reference = workSheetPart.TableDefinitionParts.ElementAt(0).Table.Reference.Value; string length = reference.Split(":".ToCharArray())[1].Replace("I",""); WorkbookUtilities.ReplicateRow(sheetData, 2, chartDataTable.Rows.Count - 1); WorkbookUtilities.LoadSheetData(sheetData, chartDataTable, 1, 0); workSheetPart.TableDefinitionParts.ElementAt(0).Table.Reference.Value = reference.Replace(length, (chartDataTable.Rows.Count + 1).ToString()); BarChartUtilities.LoadChartData(chartPart, chartDataTable); workSheetPart.TableDefinitionParts.ElementAt(0).Table.Save(); workSheetPart.Worksheet.Save(); } break; } } var titleShape = chartSlidePart.Slide.Descendants<DocumentFormat.OpenXml.Presentation.Shape>().ToList(); if (titleShape.Count > 0) { titleShape[0].TextBody = new DocumentFormat.OpenXml.Presentation.TextBody( new DocumentFormat.OpenXml.Drawing.BodyProperties(), new DocumentFormat.OpenXml.Drawing.ListStyle(), new DocumentFormat.OpenXml.Drawing.Paragraph( new DocumentFormat.OpenXml.Drawing.Run( new DocumentFormat.OpenXml.Drawing.RunProperties() { FontSize = 3600 }, new DocumentFormat.OpenXml.Drawing.Text { Text = key.Replace("Show On_", "") }))); } } #endregion } } } catch (Exception ex) { Repository.Utility.WriteLog(string.Format("CreateChartSlides had an error and the error message={0}", ex.Message), System.Diagnostics.EventLogEntryType.Information); continue; } } } } catch (Exception ex) { Repository.Utility.WriteLog(string.Format("CreateChartSlides had an error and the error message={0}", ex.Message), System.Diagnostics.EventLogEntryType.Information); } Repository.Utility.WriteLog("CreateChartSlides completed", System.Diagnostics.EventLogEntryType.Information); }
public static TaskGroupData GetTaskGroups(string projectUID) { Repository.Utility.WriteLog("GetTaskGroups started", System.Diagnostics.EventLogEntryType.Information); IList<TaskItemGroup> retVal = new List<TaskItemGroup>(); CustomFieldDataSet customFieldDataSet = DataRepository.ReadCustomFields(); DataAccess dataAccess = new Repository.DataAccess(new Guid(projectUID)); DataSet dataset = dataAccess.ReadProject(null); ProjectDataSet ds = DataRepository.ReadProject(new Guid(projectUID)); DataTable tasksDataTable = dataset.Tables["Task"]; Dictionary<string, IList<TaskItem>> ChartsData = GetChartsData(tasksDataTable, customFieldDataSet); TaskGroupData taskData = new TaskGroupData(); DateTime? projectStatusDate = GetProjectCurrentDate(new Guid(projectUID), ds); FiscalUnit fiscalPeriod = DataRepository.GetFiscalMonth(projectStatusDate); taskData.FiscalPeriod = fiscalPeriod; IList<TaskItemGroup> LateTasksData = GetLateTasksData(tasksDataTable, fiscalPeriod, customFieldDataSet); IList<TaskItemGroup> UpComingTasksData = GetupComingTasksData(tasksDataTable, fiscalPeriod, customFieldDataSet); taskData.TaskItemGroups = retVal; taskData.ChartsData = ChartsData; taskData.LateTaskGroups = LateTasksData; taskData.UpComingTaskGroups = UpComingTasksData; taskData.SPDLSTartToBL = GetSPDLSTartToBLData(new Guid(projectUID), ds); taskData.SPDLFinishToBL = GetSPDLFinishToBLData(new Guid(projectUID), ds); taskData.BEIData = GetBEIData(new Guid(projectUID), ds); if (tasksDataTable != null) { var dPaths = tasksDataTable.AsEnumerable().Where(t => !string.IsNullOrEmpty(t.Field<string>("TASK_DRIVINGPATH_ID"))).Select(t => t.Field<string>("TASK_DRIVINGPATH_ID")).Distinct(); var chartTypes = tasksDataTable.AsEnumerable().Select(t => t.Field<string>("CUSTOMFIELD_DESC")).Distinct(); ; foreach (string dPath in dPaths) { int taskCount = -1; var taskItemGroup = new TaskItemGroup { DrivingPath = dPath, TaskItems = new List<TaskItem>() }; string previousTitle = string.Empty; Dictionary<string, string> dictTitle = new Dictionary<string, string>(); int totalUnCompletedtaskCount = 0, totalCompletedTaskCount = 0; List<TaskItem> chartItems = new List<TaskItem>(); List<TaskItemGroup> completedTasks = new List<TaskItemGroup>(); EnumerableRowCollection<DataRow> collection = tasksDataTable.AsEnumerable().Where(t => t.Field<string>("TASK_DRIVINGPATH_ID") != null && t.Field<string>("TASK_DRIVINGPATH_ID").Split(",".ToCharArray()).Contains(dPath)); int completedTaskCount = -1; //DateTime? lastUpdate = GetLastUpdateDate(); TaskItemGroup completedTaskItemGroup = new TaskItemGroup { DrivingPath = dPath, TaskItems = new List<TaskItem>() }; foreach (DataRow item in collection) { if (item["TASK_DEADLINE"] != System.DBNull.Value && !string.IsNullOrEmpty(item["TASK_DEADLINE"].ToString())) { if (!dictTitle.ContainsKey(dPath.Split(",".ToCharArray())[0])) { dictTitle.Add(dPath.Split(",".ToCharArray())[0], item["TASK_NAME"].ToString()); } } if (item["CUSTOMFIELD_DESC"] != null) { chartItems.Add(BuildTaskItem(dPath, item, customFieldDataSet)); } if (!string.IsNullOrEmpty(item["TASK_ACT_FINISH"].ToString()) && (Convert.ToDateTime(item["TASK_ACT_FINISH"].ToString())).InCurrentFiscalMonth(fiscalPeriod)) { totalCompletedTaskCount++; completedTaskCount++; if (completedTaskCount == 10) { completedTasks.Add(completedTaskItemGroup); completedTaskItemGroup = new TaskItemGroup { DrivingPath = dPath, TaskItems = new List<TaskItem>() }; completedTaskCount = 0; completedTaskItemGroup.TaskItems.Add(BuildTaskItem(dPath, item, customFieldDataSet)); } else { completedTaskItemGroup.TaskItems.Add(BuildTaskItem(dPath, item, customFieldDataSet)); } } else { if (item["TASK_PCT_COMP"] != null && (Convert.ToInt32(item["TASK_PCT_COMP"].ToString().Trim().Trim("%".ToCharArray()).Trim()) < 100)) { totalUnCompletedtaskCount++; taskCount++; if (taskCount == 10) { retVal.Add(taskItemGroup); taskItemGroup = new TaskItemGroup { DrivingPath = dPath, TaskItems = new List<TaskItem>() }; taskItemGroup.Title = previousTitle; taskCount = 0; taskItemGroup.TaskItems.Add(BuildTaskItem(dPath, item, customFieldDataSet)); } else { taskItemGroup.TaskItems.Add(BuildTaskItem(dPath, item, customFieldDataSet)); } } } } if (totalUnCompletedtaskCount % 10 != 0) { retVal.Add(taskItemGroup); } if (totalCompletedTaskCount % 10 != 0) { completedTasks.Add(completedTaskItemGroup); if (totalUnCompletedtaskCount == 0) { retVal.Add(taskItemGroup); } } if (taskItemGroup.TaskItems.Count > 0 || (completedTasks.Count > 0 && completedTasks[0].TaskItems != null && completedTasks[0].TaskItems.Count > 0)) { taskItemGroup.CompletedTaskgroups = completedTasks; taskItemGroup.ChartTaskItems = chartItems; taskItemGroup.Charts = new string[chartTypes.Count()]; chartTypes.ToList().CopyTo(taskItemGroup.Charts, 0); taskItemGroup.Title = dictTitle.ContainsKey(dPath) ? dictTitle[dPath] : "Driving Path template"; } if (dPath != null && dictTitle.ContainsKey(dPath.Split(",".ToCharArray())[0])) { foreach (TaskItemGroup group in retVal) { if (group.DrivingPath == dPath) { group.Title = dictTitle[dPath.Split(",".ToCharArray())[0]]; } if (group.CompletedTaskgroups != null) { foreach (TaskItemGroup completedGroup in group.CompletedTaskgroups) { completedGroup.Title = dictTitle[dPath.Split(",".ToCharArray())[0]]; } } } } } } Repository.Utility.WriteLog("GetTaskGroups completed successfully", System.Diagnostics.EventLogEntryType.Information); return taskData; }