internal void FillTaskInfo( ViewFiltersBuilder viewFiltersBuilder, WorkItem task, List<WorkItem> siblings, WorkItem leadTask, DataGridViewRow taskRow, DataContainer data, Dictionary<int, string> planningAssignments, List<string> allUsers, List<int> blockerIds) { var priorityCell = taskRow.Cells[m_viewColumnsIndexes.PriorityColumnIndex]; priorityCell.Value = task.Priority(); priorityCell.SetColorByState(task); priorityCell.ToolTipText = task.State; var idCell = taskRow.Cells[m_viewColumnsIndexes.IdColumnIndex]; idCell.Value = task.Id; var verificationResult = WorkItemVerifier.VerifyTaskPriority(task, leadTask.Priority()); if (verificationResult.Result != VerificationResult.Ok) { idCell.SetColorByVerification(verificationResult.Result); idCell.ToolTipText = verificationResult.AllMessagesString; } else { verificationResult = WorkItemVerifier.VerifyTaskWithParentOnSameIteration(task, leadTask); if (verificationResult.Result != VerificationResult.Ok) { idCell.SetColorByVerification(verificationResult.Result); idCell.ToolTipText = verificationResult.AllMessagesString; } } var titleCell = taskRow.Cells[m_viewColumnsIndexes.TitleColumnIndex]; titleCell.Value = task.Title; titleCell.ToolTipText = task.Discipline() + " " + task.Title; titleCell.Style.BackColor = priorityCell.Style.BackColor; var blockersCell = taskRow.Cells[m_viewColumnsIndexes.BlockersColumnIndex]; if (blockerIds != null) { string blockerIdsStr = string.Join(",", blockerIds); blockersCell.Value = blockerIdsStr; verificationResult = WorkItemVerifier.VerifyNonChildBlockerExistance(blockerIds, siblings); if (verificationResult.Result == VerificationResult.Ok) verificationResult = WorkItemVerifier.VerifyActiveTaskBlocking(task, blockerIds); if (verificationResult.Result == VerificationResult.Ok) { blockerIdsStr = string.Join(Environment.NewLine, blockerIds.Select(b => data.WiDict[b].Title)); blockersCell.ToolTipText = blockerIdsStr; } else { blockersCell.SetColorByVerification(verificationResult.Result); blockersCell.ToolTipText = verificationResult.AllMessagesString; } } if (!string.IsNullOrEmpty(task.BlockingReason())) { if (!string.IsNullOrEmpty(blockersCell.ToolTipText)) blockersCell.ToolTipText += Environment.NewLine; else blockersCell.Value = task.BlockingReason(); blockersCell.ToolTipText += "Blocking Reason: " + task.BlockingReason(); } var assignedCell = taskRow.Cells[m_viewColumnsIndexes.AssignedToColumnIndex]; var comboBoxCell = assignedCell as DataGridViewComboBoxCell; if (comboBoxCell != null) comboBoxCell.DataSource = allUsers; assignedCell.Value = planningAssignments.GetAssignee(task); verificationResult = WorkItemVerifier.VerifyAssignation(task); if (verificationResult.Result != VerificationResult.Ok) { assignedCell.SetColorByVerification(verificationResult.Result); assignedCell.ToolTipText = verificationResult.AllMessagesString; } var workCell = taskRow.Cells[m_viewColumnsIndexes.WorkColumnIndex]; workCell.Value = task.IsActive() ? task.Remaining() : task.Estimate(); workCell.Style.BackColor = priorityCell.Style.BackColor; }
private static int? GetFinishDay( WorkItem task, Dictionary<int, string> planningAssignments, FocusFactorCalculator focusFactorCalculator, Dictionary<int, Tuple<int?, int>> scheduledTasksDict) { int? result = null; if (scheduledTasksDict.ContainsKey(task.Id)) { var blockerSchedule = scheduledTasksDict[task.Id]; if (blockerSchedule.Item1 != null) result = blockerSchedule.Item1.Value + blockerSchedule.Item2; } else { double? remaining = task.IsProposed() ? task.Estimate() : task.Remaining(); if (remaining != null) result = focusFactorCalculator.CalculateDaysByTime( remaining.Value, planningAssignments.GetAssignee(task)); } return result; }
internal static int AddDatesActive( ViewColumnsIndexes viewColumnsIndexes, FreeDaysCalculator freeDaysCalculator, FocusFactorCalculator focusFactorCalculator, WorkItem workItem, DataGridViewRow row, int startInd, string user, string userMark) { var taskStart = workItem.StartDate(); var taskFinish = workItem.FinishDate(); DateTime today = DateTime.Now.Date; if (taskFinish == null || taskFinish.Value.Date < today) { if (taskFinish != null) row.Cells[viewColumnsIndexes.FirstDateColumnIndex - 1].Value = taskFinish.Value.ToString("dd.MM"); var verificationResult = WorkItemVerifier.VerifyFinishDate(workItem); row.Cells[viewColumnsIndexes.FirstDateColumnIndex - 1].SetColorByVerification(verificationResult.Result); row.Cells[viewColumnsIndexes.FirstDateColumnIndex - 1].ToolTipText = verificationResult.AllMessagesString; double? remaining = workItem.Remaining(); if (remaining != null) { var length = focusFactorCalculator.CalculateDaysByTime(remaining.Value, user); return AddDates( viewColumnsIndexes, freeDaysCalculator, row, startInd, length, false, user, userMark); } } else if (taskStart.HasValue) { int maxInd = row.Cells.Count - viewColumnsIndexes.FirstDateColumnIndex - 1; var indStart = (int)taskStart.Value.Date.Subtract(today).TotalDays; if (indStart < 0) row.Cells[viewColumnsIndexes.FirstDateColumnIndex - 1].Value = taskStart.Value.ToString("dd.MM"); indStart = Math.Min(Math.Max(1, indStart), maxInd) + viewColumnsIndexes.FirstDateColumnIndex; var indFinish = (int)taskFinish.Value.Date.Subtract(today).TotalDays; indFinish = Math.Min(Math.Max(1, indFinish), maxInd) + viewColumnsIndexes.FirstDateColumnIndex; AddDates( viewColumnsIndexes, freeDaysCalculator, row, indStart, indFinish - indStart + 1, true, user, userMark); return indFinish + 1; } return viewColumnsIndexes.FirstDateColumnIndex; }
private static int GetDaysCount( WorkItem task, string user, Dictionary<int, Tuple<int?, int>> scheduledTasksDict, FreeDaysCalculator freeDaysCalculator, FocusFactorCalculator focusFactorCalculator) { if (task.IsActive()) { DateTime? finishDate = task.FinishDate(); int finish = scheduledTasksDict.ContainsKey(task.Id) ? scheduledTasksDict[task.Id].Item2 : (finishDate == null ? 0 : freeDaysCalculator.GetDaysCount(finishDate.Value, user)); double? remaining = task.Remaining(); if (remaining != null && remaining > 0) { int finishByRemaining = focusFactorCalculator.CalculateDaysByTime(remaining.Value, user); if (finish < finishByRemaining) finish = finishByRemaining; } return finish; } double? estimate = task.Estimate(); return estimate == null ? 0 : focusFactorCalculator.CalculateDaysByTime(estimate.Value, user); }
private static double GetWork(WorkItem workItem) { if (workItem.State == WorkItemState.Active) return workItem.Remaining().Value; return workItem.Estimate() ?? 0; }