/// <summary> /// returns true if comparison was saved an consistency check OK /// </summary> /// <param name="pccmList"></param> /// <param name="userId"></param> /// <param name="userName">name of user</param> /// <returns></returns> public List <CriterionWeightModel> SavePCCriteria(List <PairwiseComparisonCriterionModel> pccmList, int userId, string userName) { PairwiseComparisonCC pcc; List <PairwiseComparisonCC> pccList = new List <PairwiseComparisonCC>(); Dictionary <double, string> values = PairwiseComparisonOp.Values; foreach (PairwiseComparisonCriterionModel pccm in pccmList) { pcc = new PairwiseComparisonCC(); pcc.CriterionLeft = pccm.LeftCritId; pcc.CriterionRight = pccm.RightCritId; pcc.UserId = userId; pcc.Value = values.Where(x => x.Value == pccm.Value).FirstOrDefault().Key; pccList.Add(pcc); } CriterionWeightModel cwm = new CriterionWeightModel(); List <CriterionWeightModel> cwList = cwm.ToModelList(PairwiseComparisonOp.SaveWeightComparison(pccList), cwm); foreach (var model in cwList) { model.Name = userName; } return(cwList); }
/// <summary> /// saves ratings for setting AHP /// </summary> /// <param name="list">list of user pairweise ratings</param> /// <param name="issueId">issue id</param> /// <param name="userId">user who is performing operation</param> /// <returns>returns success if save was corrent, else detaild consistency error message for user</returns> public string SaveAHPAlternativeEvaluation(List <PairwiseComparisonRatingModel> list, int issueId, int userId) { PairwiseComparisonRatingModel pcrm = new PairwiseComparisonRatingModel(); List <PairwiseComparisonAC> entityList = pcrm.ToEntityList(list); return(PairwiseComparisonOp.SaveAlternativeComparison(issueId, userId, entityList)); }
/// <summary> /// returns list of pairwise comparisons /// if user has not made any comparisons yet then this method will construct empty comparisons /// else return is the comparisons made /// </summary> /// <param name="issueId">issue id</param> /// <param name="userId">user who is perfomring operation</param> /// <returns>list of pairwise comparisons</returns> public List <PairwiseComparisonRatingModel> GetPairwiseAlternativeRatings(int issueId, int userId) { PairwiseComparisonRatingModel pcacm = new PairwiseComparisonRatingModel(); List <PairwiseComparisonRatingModel> modelList = pcacm.ToModelList(PairwiseComparisonOp.GetAlternativeComparison(issueId, userId), pcacm); List <Criterion> cList = CriterionOp.GetIssueCriterions(issueId, userId); List <Alternative> aList = AlternativeOp.GetIssueAlternatives(issueId, userId); //if user already compared alternatives then return him that if (modelList != null && modelList.Count > 0) { foreach (PairwiseComparisonRatingModel model in modelList) { model.CriterionName = cList.Find(x => x.Id == model.CriterionId).Name; model.LeftAltName = aList.Find(x => x.Id == model.LeftAltId).Name; model.RightAltName = aList.Find(x => x.Id == model.RightAltId).Name; model.Value = model.Value.Replace("important", "preferred"); } return(modelList); } else // else construct the comparisons { modelList = new List <PairwiseComparisonRatingModel>(); foreach (Criterion crit in cList) { for (int i = 0; i < aList.Count; i++) { for (int j = i + 1; j < aList.Count; j++) { pcacm = new PairwiseComparisonRatingModel(); pcacm.CriterionId = crit.Id; pcacm.CriterionName = crit.Name; pcacm.LeftAltId = aList[i].Id; pcacm.LeftAltName = aList[i].Name; pcacm.RightAltId = aList[j].Id; pcacm.RightAltName = aList[j].Name; pcacm.Value = "Equally preferred"; pcacm.UserId = userId; modelList.Add(pcacm); } } } return(modelList); } }
/// <summary> /// if user has not compared this method calculates the needed comparisons and returns it /// else it will return a list of already compared criterias /// </summary> /// <param name="issueId"></param> /// <param name="userId"></param> /// <returns>list of criteria pairwise comparison</returns> public List <PairwiseComparisonCriterionModel> GetPCCriteria(int issueId, int userId) { List <Criterion> cList = CriterionOp.GetIssueCriterions(issueId, userId); PairwiseComparisonCriterionModel pccm = new PairwiseComparisonCriterionModel(); List <PairwiseComparisonCriterionModel> list = pccm.ToModelList(PairwiseComparisonOp.GetWeightComparison(issueId, userId), pccm); //if user has compared criteria //construct empty weights if (list.Count() == 0) { list = new List <PairwiseComparisonCriterionModel>(); for (int i = 0; i < cList.Count; i++) { for (int j = i + 1; j < cList.Count; j++) { pccm = new PairwiseComparisonCriterionModel(); pccm.LeftCritId = cList[i].Id; pccm.LeftCritName = cList[i].Name; pccm.RightCritId = cList[j].Id; pccm.RightCritName = cList[j].Name; pccm.Value = "Equally important"; list.Add(pccm); } } } else { foreach (var model in list) { model.LeftCritName = cList.Find(x => x.Id == model.LeftCritId).Name; model.RightCritName = cList.Find(x => x.Id == model.RightCritId).Name; } } return(list); }