private GroupedResult CalculateGroupedResultsForTestcase(int intTestcaseID, List <Result> results, DateTime?resultsSince) { //Don't show not supported state... results = results.Where(t => t.ResultCode != TestState.NotSupported).ToList(); if (!results.Any()) { return(null); } //If we have a date since filter, only use results if there are new ones... if (resultsSince.HasValue && results.Max(t => t.Testtime) + new TimeSpan(0, 0, 10) < resultsSince.Value) { return(null); } GroupedResult groupedResult = new GroupedResult { Testcase = intTestcaseID }; var groupedResultsByResultCode = results.GroupBy(result => result.ResultCode, result => result, (key, elements) => new { ResultCode = key, Results = elements.ToList() }); bool allResultsAreEqual = groupedResultsByResultCode.Count() == 1; foreach (var result in groupedResultsByResultCode) { GroupedResultPart groupedResultPart = new GroupedResultPart { ResultCode = result.ResultCode }; if (allResultsAreEqual) { groupedResultPart.ResultLabel = (result.ResultCode).ToString(); } else if (result.Results.Count == 1) { Result singleResult = result.Results[0]; groupedResultPart.ResultLabel = singleResult.Browser.Name + " " + singleResult.Language.Languagecode + " " + ((TestState)result.ResultCode); } else { groupedResultPart.ResultLabel = result.Results.Count + "x " + (result.ResultCode); } groupedResult.GroupedResultParts.Add(groupedResultPart); } return(groupedResult); }
private GroupedResult CalculateGroupedResultsForTestcase(int intTestcaseID, List<Result> results, DateTime? resultsSince) { //Don't show not supported state... results = results.Where(t => t.ResultCode !=TestState.NotSupported).ToList(); if (!results.Any()) return null; //If we have a date since filter, only use results if there are new ones... if (resultsSince.HasValue && results.Max(t => t.Testtime) + new TimeSpan(0, 0, 10) < resultsSince.Value) return null; GroupedResult groupedResult = new GroupedResult { Testcase = intTestcaseID }; var groupedResultsByResultCode = results.GroupBy(result => result.ResultCode, result => result, (key, elements) => new { ResultCode = key, Results = elements.ToList() }); bool allResultsAreEqual = groupedResultsByResultCode.Count() == 1; foreach (var result in groupedResultsByResultCode) { GroupedResultPart groupedResultPart = new GroupedResultPart { ResultCode = result.ResultCode }; if (allResultsAreEqual) { groupedResultPart.ResultLabel = (result.ResultCode).ToString(); } else if (result.Results.Count == 1) { Result singleResult = result.Results[0]; groupedResultPart.ResultLabel = singleResult.Browser.Name + " " + singleResult.Language.Languagecode + " " + ((TestState)result.ResultCode); } else { groupedResultPart.ResultLabel = result.Results.Count + "x " + (result.ResultCode); } groupedResult.GroupedResultParts.Add(groupedResultPart); } return groupedResult; }