internal static void SetColorByState(this DataGridViewCell cell, WorkItem workItem)
 {
     switch (workItem.State)
     {
         case WorkItemState.Proposed:
         case WorkItemState.ToDo:
             cell.Style.BackColor = CellsPalette.StateProposed;
             break;
         case WorkItemState.Active:
             cell.Style.BackColor = workItem.IsDevCompleted()
                 ? CellsPalette.StateDevCompleted
                 : CellsPalette.StateActive;
             break;
         case WorkItemState.Resolved:
         case WorkItemState.Done:
             cell.Style.BackColor = CellsPalette.StateResolved;
             break;
     }
 }
        internal bool FillLeadTaskInfo(
			ViewFiltersBuilder viewFiltersBuilder,
			WorkItem leadTask,
			DataGridViewRow leadTaskRow,
			DataContainer data,
			List<int> blockersIds)
        {
            var priorityCell = leadTaskRow.Cells[m_viewColumnsIndexes.PriorityColumnIndex];
            priorityCell.Value = leadTask.Priority();
            priorityCell.SetColorByState(leadTask);
            priorityCell.ToolTipText = leadTask.IsDevCompleted() ? WorkItemState.DevCompleted : leadTask.State;

            var iterationCell = leadTaskRow.Cells[m_viewColumnsIndexes.IterationColumnIndex];
            string iteration = leadTask.IterationPath;
            int ind = iteration.IndexOf(m_iterationSeparator);
            if (ind != -1)
                iteration = iteration.Substring(ind + 1);
            iterationCell.Value = iteration;

            var sprintCell = leadTaskRow.Cells[m_viewColumnsIndexes.SprintColumnIndex];
            sprintCell.Value = leadTask.Sprint();

            var idCell = leadTaskRow.Cells[m_viewColumnsIndexes.IdColumnIndex];
            idCell.Value = leadTask.Id;
            idCell.ToolTipText = leadTask.IterationPath;
            idCell.Style.BackColor = priorityCell.Style.BackColor;
            var verificationResult = WorkItemVerifier.VerifyChildrenExistance(leadTask, data);
            if (verificationResult.Result != VerificationResult.Ok)
            {
                idCell.SetColorByVerification(verificationResult.Result);
                idCell.ToolTipText += Environment.NewLine + verificationResult.AllMessagesString;
            }

            var docsCell = leadTaskRow.Cells[m_viewColumnsIndexes.DocsColumnIndex];
            bool result;
            verificationResult = WorkItemVerifier.VerifyDocumentsAgreement(leadTask);
            if (verificationResult.Result == VerificationResult.Ok)
            {
                docsCell.Style.BackColor = priorityCell.Style.BackColor;
                result = true;
            }
            else
            {
                docsCell.Value = verificationResult.AddidtionalData;
                docsCell.SetColorByVerification(verificationResult.Result);
                docsCell.ToolTipText = verificationResult.AllMessagesString;
                result = false;
            }

            var titleCell = leadTaskRow.Cells[m_viewColumnsIndexes.TitleColumnIndex];
            titleCell.Value = leadTask.Title;
            titleCell.Style.Font = new Font(
                titleCell.Style.Font
                    ?? titleCell.OwningColumn.DefaultCellStyle.Font
                    ?? m_dataGridView.ColumnHeadersDefaultCellStyle.Font,
                FontStyle.Underline);
            titleCell.Style.BackColor = priorityCell.Style.BackColor;

            verificationResult = WorkItemVerifier.VerifyNoProposedChildTask(leadTask, data);
            if (verificationResult.Result != VerificationResult.Ok)
            {
                priorityCell.SetColorByVerification(verificationResult.Result);
                priorityCell.ToolTipText = verificationResult.AllMessagesString;
            }

            var blockersCell = leadTaskRow.Cells[m_viewColumnsIndexes.BlockersColumnIndex];
            verificationResult = WorkItemVerifier.VerifyBlockersExistance(blockersIds);
            if (verificationResult.Result != VerificationResult.Ok)
            {
                blockersCell.SetColorByVerification(verificationResult.Result);
                blockersCell.Value = verificationResult.AllMessagesString;
            }
            if (!string.IsNullOrEmpty(leadTask.BlockingReason()))
            {
                if (!string.IsNullOrEmpty(leadTaskRow.Cells[4].ToolTipText))
                    blockersCell.ToolTipText += Environment.NewLine;
                else
                    blockersCell.Value = leadTask.BlockingReason();
                blockersCell.ToolTipText += "Blocking Reason: " + leadTask.BlockingReason();
            }

            leadTaskRow.Cells[m_viewColumnsIndexes.AssignedToColumnIndex].Value = leadTask.AssignedTo();

            return result;
        }