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); }
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"] })); }
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"] })); }