Esempio n. 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);
            }
        }
Esempio n. 2
0
        public ActionResult LoadResult(int id)
        {
            try
            {
                var workspace = db.Workspaces.Single(w => w.Id == id);
                if (workspace != null && !string.IsNullOrEmpty(workspace.OutputInterval))
                {
                    var resultModel  = new ResultModel
                        {
                            IsAggregated = false,
                            IsFullWorkspace = workspace.IsComplete,
                            IsSelectedForAggregation = false,
                            OutputInterval = workspace.OutputInterval,
                            OutputLinguistic = workspace.OutputLinguistic,
                            WorkspaceID = workspace.Id,
                            WorkspaceName = workspace.Name
                        };

                    return PartialView("_Result", resultModel);
                }
                else
                {
                    return null;
                }
            }
            catch (Exception ex)
            {
                return new HttpStatusCodeResult(HttpStatusCode.InternalServerError, ex.Message);
            }
        }