public ActionResult FindMatches() { List <ClassMate> classMates = db.ClassMates.ToList(); foreach (ClassMate classMate in classMates) { int score = 0; foreach (ClassMate classmateToFind in classMates) { if (!isScoreAlreadyAdded(classMate.ClassMateId, classmateToFind.ClassMateId)) { if (classMate.ClassMateVacations.Count > 0 && classmateToFind.ClassMateVacations.Count > 0) { if (classMate.ClassMateVacations.ToList().First().VacationId == classmateToFind.ClassMateVacations.ToList().First().VacationId) { score += vacationMatch; } } if (classMate.IdealSaturdayClassMates.Count > 0 && classmateToFind.IdealSaturdayClassMates.Count > 0) { if (classMate.IdealSaturdayClassMates.First().IdealSaturdayId == classmateToFind.IdealSaturdayClassMates.First().IdealSaturdayId) { score += idealSaturdayMatch; } } if (classMate.ClassMateFoods.Count > 0 && classmateToFind.ClassMateFoods.Count > 0) { if (classMate.ClassMateFoods.First().FoodId == classmateToFind.ClassMateFoods.First().FoodId) { score += foodMatch; } } List <SongGenre> songsClassmates1 = classMate.SongGenres.ToList(); List <SongGenre> songsClassmates2 = classmateToFind.SongGenres.ToList(); foreach (SongGenre genre1 in songsClassmates1) { foreach (SongGenre genre2 in songsClassmates2) { if (genre1.genre.Equals(genre2.genre)) { score += genreMatch; } } } if (score > 0 && classMate.ClassMateId != classmateToFind.ClassMateId) { ClassMateResult mateMatch = new ClassMateResult(); mateMatch.classmateId1 = classMate.ClassMateId; mateMatch.classmateid2 = classmateToFind.ClassMateId; mateMatch.Id = getCountOnTable() + 1; mateMatch.score = score.ToString(); db.ClassMateResults.Add(mateMatch); db.SaveChanges(); } } } } return(View()); }
public Boolean isScoreAlreadyAdded(int classmateId1, int classmateId2) { var model = from r in db.ClassMateResults where r.classmateId1 == classmateId1 && r.classmateid2 == classmateId2 select r; ClassMateResult item1 = model.FirstOrDefault(); var modelAlternate = from r in db.ClassMateResults where r.classmateid2 == classmateId1 && r.classmateId1 == classmateId2 select r; ClassMateResult item2 = modelAlternate.FirstOrDefault(); if (item1 != null || item2 != null) { return(true); } return(false); }