예제 #1
0
        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);
            }
        }
예제 #2
0
 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
     };
 }