public static void AddRankedCity(int rankingId, int cityId) { using (var db = new DatabaseContext()) { if (db.RankingMembers.Any(r => r.CityInfoId == cityId && r.RankingId == rankingId)) { // City is already being ranked. return; } CityInfo city = getCity(cityId, db); RankingMember newRankingMember = new RankingMember { RankingId = rankingId, CityInfoId = cityId, Score = 0.0, User = city.User }; db.RankingMembers.Add(newRankingMember); db.SaveChanges(); } }
private static RankingMember scoreCity(RankingMember rankingMember, CityInfo city, string formula, DatabaseContext db) { FormulaScore.FormulaScore scorer = new FormulaScore.FormulaScore(); scorer.ScoringFormula = formula; // Load scoring values into scorer. List<string> scoringIdentifiers = FormulaScore.FormulaScore.FetchScoringIDs(formula); double value; foreach (string scoringId in scoringIdentifiers) { if (GetCityValue.IsValueIdentifier(scoringId, db)) { value = GetCityValue.GetValue(scoringId, city, db); scorer.AddScoringValue(scoringId, value); } } rankingMember.Score = Math.Round(scorer.CalculateScore(), 0); rankingMember.DetailedScoring = scorer.GetFormulaWithValues(); return rankingMember; }