예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }
예제 #6
0
        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;
        }