private List<PreCheckHostRow> ExecuteCheck(Check check)
{
var rows = new List<PreCheckHostRow>();
var problems = check.RunAllChecks();
if (problems.Count == 0)
{
rows.Add(new PreCheckHostRow(check));
return rows;
}
foreach (var pr in problems)
{
var problem = pr; // we need this line because we sometimes reassign it below
if (problem is HostNotLive)
{
// this host is no longer live -> remove all previous problems regarding this host
Problem curProblem = problem;
ProblemsResolvedPreCheck.RemoveAll(p => p.Check.Host == curProblem.Check.Host);
}
if (ProblemsResolvedPreCheck.Contains(problem))
{
Problem curProblem = problem;
problem = ProblemsResolvedPreCheck.Find(p => p.Equals(curProblem));
}
else
ProblemsResolvedPreCheck.Add(problem);
rows.Add(new PreCheckHostRow(problem));
}
return rows;
}