Example #1
0
        public int GenerateMatchScoreByStatus(User userA, User userB)
        {
            var statusA = userA.Status;
            var statusB = userB.Status;

            if (userA.Preferences == null)
            {
                userA.Preferences = new Preferences();
            }

            if (userB.Preferences == null)
            {
                userB.Preferences = new Preferences();
            }

            var score = 0;

            if((statusA == Status.HasVacancy) && (statusB == Status.NeedsHousingAndRoommate))
            {
                score = GenerateMatchScoreOfFillingVacancy(userA, userB);
            }
            else if ( (statusA == Status.NeedsHousingAndRoommate) && (statusB == Status.HasVacancy) )
            {
                score = GenerateMatchScoreOfMovingIn(userA, userB);
            }
            else if ( (statusA == Status.NeedsRoommateOnly) && (statusB == Status.NeedsRoommateOnly) )
            {
                score = GenerateMatchScoreOfPreferences(userA, userB);
            }

            if(score < 0)
            {
                return 0;
            }
            else
            {
                return score/100;
            }

            return 0;
        }
Example #2
0
        // User A wants to live with user B
        public int GenerateMatchScoreOfPreferences(User userA, User userB)
        {
            if ((userA == null) || (userB == null) || (userA.Status == Status.Inactive) || (userB.Status == Status.Inactive))
            {
                return 0;
            }

            if (userA.Preferences == null)
            {
                userA.Preferences = new Preferences();
            }

            if (userB.Preferences == null)
            {
                userB.Preferences = new Preferences();
            }

            var score = 0;

            score += GenerateMatchScoreForAge(userA.Preferences.Age, userB.Age);

            score += GenerateMatchScoreForGender(userA.Preferences.Gender, userB.Gender);

            score += GenerateMatchScoreForPriceRange(userA.Preferences.LowerPriceLimit, userA.Preferences.UpperPriceLimit, userB.Preferences.LowerPriceLimit, userB.Preferences.UpperPriceLimit);

            var matchingHousing = GetMatchingHousings(userA.Preferences.Housings, new List<Housing> { userB.Housing });

            if (matchingHousing.Count > 0)
            {
                score += 1000;
            }

            if((userA.Preferences != null) && (userB.Preferences != null))
            {
                var matchingTags = GetMatchingTags(userA.Preferences.Tags, userB.Preferences.Tags);

                score += 100 * matchingTags.Count;

                var matchingLocationScore = GenerateHousingLocationScore(userB.Housing, userA.Preferences.Locations);

                score += matchingLocationScore;
            }

            return score;
        }
Example #3
0
        // User A is trying to fill a vacancy with user B
        public int GenerateMatchScoreOfFillingVacancy(User userA, User userB)
        {
            if ((userA == null) || (userB == null) || (userA.Status == Status.Inactive) || (userB.Status == Status.Inactive))
            {
                return 0;
            }

            if(userA.Preferences == null)
            {
                userA.Preferences = new Preferences();
            }

            if(userB.Preferences == null)
            {
                userB.Preferences = new Preferences();
            }

            var score = 0;

            if((userA.Tags != null) && (userB.Preferences.Tags != null))
            {
                var matchingTags = GetMatchingTags(userA.Tags, userB.Preferences.Tags);

                score += 100 * matchingTags.Count;

            }

            score += GenerateMatchScoreForAge(userA.Preferences.Age, userB.Age);

            score += GenerateMatchScoreForGender(userA.Preferences.Gender, userB.Gender);

            return score;
        }