Пример #1
0
        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;
        }