Example #1
0
        public ICriterionModel Add(ICriterionModel criterion)
        {
            Guid critID       = criterion.CriteriaID;
            var  prevCriteria = _context.Criteria.Where(c => c.ChoiceID == criterion.ChoiceID).ToList();
            List <ICriteriaComparisonModel> ccs = new List <ICriteriaComparisonModel>();

            foreach (var item in prevCriteria)
            {
                ICriteriaComparisonModel c = new CriteriaComparisonModel {
                    CriteriaID1 = critID, CriteriaID2 = item.CriteriaID, DateCreated = DateTime.Now, DateUpdated = DateTime.Now, CriteriaRatio = 0
                };
                ccs.Add(c);
            }
            _context.CriteriaComparisons.AddRange(_mapper.Map <List <ICriteriaComparisonModel>, List <CriteriaComparison> >(ccs));
            var prevAlternatives = _context.Alternatives.Where(c => c.ChoiceID == criterion.ChoiceID).OrderByDescending(x => x.DateCreated).ToArray();
            List <IAlternativeComparisonModel> acs = new List <IAlternativeComparisonModel>();
            int n = prevAlternatives.Length;

            for (int i = 0; i < n; i++)
            {
                for (int j = i + 1; j < n; j++)
                {
                    IAlternativeComparisonModel a = new AlternativeComparisonModel {
                        CriteriaID = critID, AlternativeID1 = prevAlternatives[i].AlternativeID, AlternativeID2 = prevAlternatives[j].AlternativeID, DateCreated = DateTime.Now, DateUpdated = DateTime.Now, AlternativeRatio = 0
                    };
                    acs.Add(a);
                }
            }
            _context.AlternativeComparisons.AddRange(_mapper.Map <List <IAlternativeComparisonModel>, List <AlternativeComparison> >(acs));
            _context.Criteria.Add(_mapper.Map <ICriterionModel, Criterion>(criterion));
            return(criterion);
        }
Example #2
0
        public async Task <ActionResult> ListCriteriaComparisons(List <CriteriaComparisonMvcModel> comps)
        {
            var    Update = new List <ICriteriaComparisonModel>();
            double newratio;

            foreach (var item in comps)
            {
                if ((bool)item.Flipped)
                {
                    if (item.CriteriaRatio == 0)
                    {
                        newratio = 1;
                    }
                    else if (item.CriteriaRatio < 0)
                    {
                        newratio = -(item.CriteriaRatio - 1);
                    }
                    else
                    {
                        newratio = item.CriteriaRatio + 1;
                        newratio = 1 / newratio;
                    }
                    ICriteriaComparisonModel _cc = new CriteriaComparisonModel {
                        CriteriaID1 = item.CriterionID2, CriteriaID2 = item.CriterionID1, CriteriaRatio = newratio
                    };
                    Update.Add(_cc);
                }
                else
                {
                    if (item.CriteriaRatio == 0)
                    {
                        newratio = 1;
                    }
                    else if (item.CriteriaRatio < 0)
                    {
                        newratio = -(item.CriteriaRatio - 1);
                        newratio = 1 / newratio;
                    }
                    else
                    {
                        newratio = item.CriteriaRatio + 1;
                    }
                    ICriteriaComparisonModel _cc = new CriteriaComparisonModel {
                        CriteriaID2 = item.CriterionID2, CriteriaID1 = item.CriterionID1, CriteriaRatio = newratio
                    };
                    Update.Add(_cc);
                }
            }
            _ = await _criteriaComparisonService.UpdateAsync(Update);

            return(RedirectToAction("ListCriteriaComparisons", "CriteriaComparison", new { page = Session["page"] }));
        }
Example #3
0
        public async Task <ActionResult> ListUnfilledCriteriaComparisons(List <CriteriaComparisonMvcModel> comps)
        {
            var    Update = new List <ICriteriaComparisonModel>();
            double newratio;

            foreach (var item in comps)
            {
                if (item.CriteriaRatio == 0)
                {
                    newratio = 1;
                }
                else if (item.CriteriaRatio < 0)
                {
                    newratio = -(item.CriteriaRatio - 1);
                    newratio = 1 / newratio;
                }
                else
                {
                    newratio = item.CriteriaRatio + 1;
                }
                ICriteriaComparisonModel _cc = new CriteriaComparisonModel {
                    CriteriaID1 = item.CriterionID1, CriteriaID2 = item.CriterionID2, CriteriaRatio = newratio
                };
                Update.Add(_cc);
            }
            _ = await _criteriaComparisonService.UpdateAsync(Update);

            var critcomps = await _criteriaComparisonService.GetUnfilledAsync((Guid)Session["ChoiceID"]);

            if (critcomps.Any())
            {
                return(RedirectToAction("ListUnfilledCriteriaComparisons", "CriteriaComparison", null));
            }
            else
            {
                Session["AnyUnfilledCrit"] = false;
            }


            return(RedirectToAction("ListCriteria", "Criterion", new { page = Session["Page"] }));
        }