private static void AddToGanttDataList(List <GanttData> ganttData, TaskGroupSummary taskGroupSummary, Guid?parentId) { ganttData.Add(new GanttData() { Id = taskGroupSummary.Id.ToString(), Text = taskGroupSummary.LongName, StartDate = (!taskGroupSummary.ChildTaskGroups.Any() && !taskGroupSummary.ChildTasks.Any()) ? taskGroupSummary.StartDate.ToString("yyyy-MM-dd HH:mm") : null, Duration = (!taskGroupSummary.ChildTaskGroups.Any() && !taskGroupSummary.ChildTasks.Any()) ? Convert.ToInt64((taskGroupSummary.CompletionDate - taskGroupSummary.StartDate).TotalDays) : 0, Parent = parentId != null ? parentId.ToString() : string.Empty, Progress = taskGroupSummary.PercentageComplete, Open = true }); foreach (var childTask in taskGroupSummary.ChildTasks) { ganttData.Add(new GanttData() { Id = childTask.Id.ToString(), Text = childTask.Title, StartDate = childTask.StartDate.ToString("yyyy-MM-dd HH:mm"), Duration = childTask.Completed ? Convert.ToInt64((childTask.CompletedOnDate - childTask.StartDate).TotalDays) : Convert.ToInt64((childTask.CompletionDate - childTask.StartDate).TotalDays), Parent = childTask.TaskGroupHeaderId.ToString(), Progress = childTask.Completed ? 1.0 : 0 }); } foreach (var childTaskGroup in taskGroupSummary.ChildTaskGroups) { AddToGanttDataList(ganttData, childTaskGroup, taskGroupSummary.Id); } }
public static GanttDataModel GenerateGanttDataModel(TaskGroupSummary taskGroupSummary) { var ganttDataModel = new GanttDataModel(); var ganttData = new List <GanttData>(); var ganttList = new List <GanttLink>(); AddToGanttDataList(ganttData, taskGroupSummary, null); ganttDataModel.Data = ganttData.ToArray(); ganttDataModel.Links = ganttList.ToArray(); return(ganttDataModel); }
private void UpdatePercentages(TaskGroupSummary taskSummary) { double childTaskCompletion = 0; double childTaskGroupCompletion = 0; if (taskSummary.ChildTasks.Any()) { childTaskCompletion = Convert.ToDouble(taskSummary.ChildTasks.Where(c => c.Completed).Count()) / Convert.ToDouble(taskSummary.ChildTasks.Count()); } if (taskSummary.ChildTaskGroups.Any()) { for (int iCount = 0; iCount < taskSummary.ChildTaskGroups.Count; iCount++) { UpdatePercentages(taskSummary.ChildTaskGroups[iCount]); childTaskGroupCompletion += taskSummary.ChildTaskGroups[iCount].PercentageComplete; } } if (taskSummary.ChildTasks.Any() && taskSummary.ChildTaskGroups.Any()) { taskSummary.PercentageComplete = (childTaskCompletion + childTaskGroupCompletion) / (taskSummary.ChildTaskGroups.Count + 1); } else if (taskSummary.ChildTasks.Any()) { taskSummary.PercentageComplete = childTaskCompletion; } else { taskSummary.PercentageComplete = childTaskGroupCompletion / taskSummary.ChildTaskGroups.Count; } if (Double.IsNaN(taskSummary.PercentageComplete)) { taskSummary.PercentageComplete = 0.0; } }
public async Task <IActionResult> OnGetAsync() { var accessToken = await HttpContext.GetTokenAsync("access_token"); await PageConstructor(SaveStates.IGNORE, accessToken); if (!await _apiHelper.AuthCheck(accessToken, User.FindFirst("sub").Value)) { return(RedirectToPage("/Logout")); } taskGroupSummary = new TaskGroupSummary(); clientSummary = new ClientSummary(); if (!string.IsNullOrWhiteSpace(Id)) { var response = await _apiHelper.MakeAPICallAsync(accessToken, HttpMethod.Get, APITypes.TASK, $"TaskGroup/GetTaskGroupSummary/{Id}"); if (response.StatusCode == System.Net.HttpStatusCode.OK) { taskGroupSummary = response.ContentAsType <TaskGroupSummary>(); } else { return(RedirectToPage("/TaskGroup/TaskGroups")); } } else { return(RedirectToPage("/TaskGroup/TaskGroups")); } if (taskGroupSummary != null) { await GetFileLinks(accessToken); var response = await _apiHelper.MakeAPICallAsync(accessToken, HttpMethod.Get, APITypes.CLIENT, $"Client/GetClientSummary/{taskGroupSummary.ClientHeaderId}"); if (response.StatusCode == System.Net.HttpStatusCode.OK) { clientSummary = response.ContentAsType <ClientSummary>(); } GanttDataModel = GanttHelper.GenerateGanttDataModel(taskGroupSummary); } else { GanttDataModel = new GanttDataModel() { Data = new GanttData[0], Links = new GanttLink[0] }; } var userList = await GetUsernames(accessToken); //Temporary fix for adding language code data to partial pages. taskGroupSummary.langQueryList = taskGroupSummarylangQueryList; taskGroupSummary.MainUserName = userList.Users.Where(u => u.Id == taskGroupSummary.MainUserId).FirstOrDefault().FullName; foreach (var childTaskGroupSummary in taskGroupSummary.ChildTaskGroups) { childTaskGroupSummary.langQueryList = taskGroupSummarylangQueryList; childTaskGroupSummary.MainUserName = userList.Users.Where(u => u.Id == childTaskGroupSummary.MainUserId).FirstOrDefault().FullName; foreach (var childTaskSummary in childTaskGroupSummary.ChildTasks) { childTaskSummary.langQueryList = taskSummarylangQueryList; childTaskSummary.MainUserName = userList.Users.Where(u => u.Id == childTaskSummary.MainUserId).FirstOrDefault().FullName; } } foreach (var childTaskSummary in taskGroupSummary.ChildTasks) { childTaskSummary.langQueryList = taskGroupSummarylangQueryList; childTaskSummary.MainUserName = userList.Users.Where(u => u.Id == childTaskSummary.MainUserId).FirstOrDefault().FullName; } GanttJSON = JsonSerializer.Serialize(GanttDataModel); SaveMessageModel = await _apiHelper.GenerateSaveMessageModel(accessToken); return(Page()); }