internal static WorkItemVerificationResult VerifyEstimatePresence(WorkItem workItem) { double? estimate = workItem.Estimate(); if (estimate != null) return new WorkItemVerificationResult { Result = VerificationResult.Ok }; return new WorkItemVerificationResult { Result = VerificationResult.Error, Messages = new List<string>(1) { Messages.NoEstimate() }, }; }
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; }
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); }
internal static int AddDatesProposed( ViewColumnsIndexes viewColumnsIndexes, FreeDaysCalculator freeDaysCalculator, FocusFactorCalculator focusFactorCalculator, WorkItem task, DataGridViewRow taskRow, int startInd, string user, string userMark, bool shouldCheckEstimate) { var verificationResult = WorkItemVerifier.VerifyEstimatePresence(task); if (verificationResult.Result != VerificationResult.Ok) { if (shouldCheckEstimate) { var estimateCell = taskRow.Cells[viewColumnsIndexes.FirstDateColumnIndex - 1]; estimateCell.SetColorByVerification(verificationResult.Result); estimateCell.ToolTipText = verificationResult.AllMessagesString; } return viewColumnsIndexes.FirstDateColumnIndex; } double? estimate = task.Estimate(); var length = focusFactorCalculator.CalculateDaysByTime(estimate.Value, user); DateTime? finish = task.FinishDate(); if (finish != null) { verificationResult = WorkItemVerifier.VerifyFinishDate(task); var estimateCell = taskRow.Cells[viewColumnsIndexes.FirstDateColumnIndex - 1]; estimateCell.SetColorByVerification(verificationResult.Result); estimateCell.ToolTipText = verificationResult.AllMessagesString; estimateCell.Value = finish.Value.ToString("dd.MM"); int finishShift = length - 1; DateTime startDate = finish.Value.Date; DateTime today = DateTime.Now.Date; while (finishShift > 0 && startDate >= today) { startDate = startDate.AddDays(-1); if (freeDaysCalculator.GetDayType(startDate, user) == DayType.WorkDay) --finishShift; } if (finishShift == 0) { var startShift = (int) startDate.Subtract(today).TotalDays; startInd = Math.Max(startInd, startShift + viewColumnsIndexes.FirstDateColumnIndex); } else { length -= finishShift; } } return AddDates( viewColumnsIndexes, freeDaysCalculator, taskRow, startInd, length, false, user, userMark); }
private static double GetWork(WorkItem workItem) { if (workItem.State == WorkItemState.Active) return workItem.Remaining().Value; return workItem.Estimate() ?? 0; }