public ActionResult Aggregate(ResultsModel resultsModel) { try { // union double lower = 10, upper = 0; foreach (var result in resultsModel.AllResults) { if (!result.IsFullWorkspace) { var splitInterval = (from i in result.OutputInterval.Split(new[] {";", "[", "]"}, StringSplitOptions.RemoveEmptyEntries) select i.Trim()).ToList(); if (splitInterval.Count() == 2) { double parsedLower = double.Parse(splitInterval[0]); if (parsedLower < lower) { lower = parsedLower; } double parsedUpper = double.Parse(splitInterval[1]); if (parsedUpper > upper) { upper = parsedUpper; } } } } // intersection with full results foreach (var result in resultsModel.AllResults) { if (result.IsFullWorkspace) { var splitInterval = (from i in result.OutputInterval.Split(new[] { ";", "[", "]" }, StringSplitOptions.RemoveEmptyEntries) select i.Trim()).ToList(); if (splitInterval.Count() == 2) { double parsedLower = double.Parse(splitInterval[0]); if (parsedLower < upper) { lower = parsedLower; } double parsedUpper = double.Parse(splitInterval[1]); if (parsedUpper > lower) { upper = parsedUpper; } } } } var interval = new Interval(lower, upper); var aggregatedResult = new ResultModel { IsAggregated = true, OutputInterval = interval.ToString(), OutputLinguistic = string.Join( ", ", DecisionMakerType2.IntervalToLinguistic(interval)) }; return PartialView("_Result", aggregatedResult); } catch (Exception ex) { return new HttpStatusCodeResult(System.Net.HttpStatusCode.InternalServerError); } }
private ResultModel ResultToModel(Interval result, bool isFullWorkspace, int workspaceId, string workspaceName, string linguisticTerm) { return new ResultModel { IsAggregated = false, IsFullWorkspace = isFullWorkspace, IsSelectedForAggregation = false, WorkspaceID = workspaceId, WorkspaceName = workspaceName, OutputInterval = result.ToString(), OutputLinguistic = linguisticTerm }; }