コード例 #1
0
ファイル: Matcher.cs プロジェクト: Ziv3r/Facebookapp
        internal List <KeyValuePair <int, User> > GetMatch(User.eGender i_GenderOfInterest)
        {
            ICollection <User> userBestMatches;

            //// this line should be applied for better match, facebook API doesnt provide friends gender though.
            //// userBestMatches = FaceBookUser.Friends.Where(friend => friend.Gender == i_GenderOfInterest).ToList<User>();

            userBestMatches = FaceBookUser.Friends;

            foreach (User friend in userBestMatches)
            {
                int friendScore = 0;

                if (friend.Hometown != null &&
                    friend.Hometown.Equals(FaceBookUser.Hometown))
                {
                    friendScore += k_SameCity;
                }

                friendScore += addToScore(friend.Events, FaceBookUser.Events, k_AttendigToSameEvent);
                friendScore += addToScore(friend.Checkins, FaceBookUser.Checkins, k_samePlaceCheckedIn);
                FriendsMatch.Add(new KeyValuePair <int, User>(friendScore, friend));
            }

            return(FriendsMatch.OrderByDescending(x => x.Key).ToList());
        }
コード例 #2
0
        public IEnumerable <User> MatchWithAge(User.eGender i_gender, string i_single = "false", int i_minAge = 18, int i_maxAge = 70)
        {
            DateTime bornBefore  = DateTime.Now.AddYears(-i_minAge);
            DateTime bornAfter   = DateTime.Now.AddYears(-i_maxAge);
            bool     forceSingle = false;
            bool     single      = false;

            switch (i_single)
            {
            case "false":
                single = false;
                break;

            case "true":
                single = true;
                break;

            case "force":
                single      = true;
                forceSingle = true;
                break;
            }

            UserTest headTest = new UserTest((i_user) => m_logic.GenderFilter(i_user, i_gender));

            headTest.Add((i_user) => m_logic.AgeFilter(i_user, bornBefore, bornAfter));
            headTest.Add((i_user) => single ? m_logic.Single(i_user, forceSingle) : true);
            return(m_logic.ChainFilter(headTest));
        }
コード例 #3
0
        public LinkedList <UserProxy> MatchMe(string i_HomeTownFilter, User.eGender i_GenderFilter)
        {
            LinkedList <UserProxy> filteredFriendsList;

            filteredFriendsList = m_DatingFeature.GenerateFilteredFriendsList(i_HomeTownFilter, i_GenderFilter);

            return(filteredFriendsList);
        }
コード例 #4
0
ファイル: Engine.cs プロジェクト: Orans94/FacebookFeatures
        public FacebookUserProxyCollection MatchMe(string i_HomeTownFilter, User.eGender i_GenderFilter)
        {
            FacebookUserProxyCollection filteredFriendsList;

            filteredFriendsList = m_DatingFeature.GenerateFilteredFriendsList(i_HomeTownFilter, i_GenderFilter);

            return(filteredFriendsList);
        }
コード例 #5
0
        private bool isGenderMatch(User.eGender i_GenderFilter, User i_Friend)
        {
            // this method recieve gender filter and a friend
            // and return true if the friend is interested in the logged in user gender
            // and if the friend's gender matches the gender filter.
            bool isGenderAMatch;

            isGenderAMatch = i_Friend.InterestedIn.Equals(m_LoggedInUser.Gender) && i_GenderFilter.Equals(i_Friend.Gender);

            return(isGenderAMatch);
        }
コード例 #6
0
        private bool isFriendAMatch(User i_Friend, string i_HomeTownFilter, User.eGender i_GenderFilter)
        {
            // this method recieve a friend and return true if he mathces the filters.
            bool isFriendMatchingFilter;

            isFriendMatchingFilter = isOpenToDating(i_Friend) &&
                                     isCityMatch(i_HomeTownFilter, i_Friend.Hometown) &&
                                     isGenderMatch(i_GenderFilter, i_Friend);

            return(isFriendMatchingFilter);
        }
コード例 #7
0
        private void buttonSearchMatch_Click(object sender, EventArgs e)
        {
            listBoxMatches.Items.Clear();
            User.eGender       gender  = (User.eGender)comboBoxGender.SelectedItem;
            bool               single  = (bool)checkBoxSinglesOnly.Checked;
            IEnumerable <User> matches = m_matchFinder.Match(gender, single.ToString());

            foreach (User friend in matches)
            {
                listBoxMatches.Items.Add(friend);
            }
        }
コード例 #8
0
        public bool FindMatchWithStrategy(int i_FromAge, int i_ToAge, User.eGender i_WantedGender)
        {
            bool result = false;

            if ((UserAge >= i_FromAge && UserAge <= i_ToAge) &&
                CheckedUser.Gender == i_WantedGender &&
                (CheckedUser.RelationshipStatus == User.eRelationshipStatus.Single ||
                 CheckedUser.RelationshipStatus == null))
            {
                result = true;
            }

            return(result);
        }
コード例 #9
0
        public FacebookObjectCollection <User> FilterByGender(User.eGender i_Gender)
        {
            FacebookObjectCollection <User> resCollection = new FacebookObjectCollection <User>();

            if (LoggedUser != null)
            {
                foreach (User friend in LoggedUser.Friends)
                {
                    if (friend.Gender == i_Gender)
                    {
                        resCollection.Add(friend);
                    }
                }
            }

            return(resCollection);
        }
コード例 #10
0
        public bool FindMatchWithStrategy(int i_FromAge, int i_ToAge, User.eGender i_WantedGender)
        {
            bool   result           = false;
            string loggedInUserCity = LoggedInUser.Location.Name.Split(',').First();
            string friendUserCity   = CheckedUser.Location.Name.Split(',').First();

            if (loggedInUserCity.Equals(friendUserCity) &&
                (UserAge >= i_FromAge && UserAge <= i_ToAge) &&
                CheckedUser.Gender == i_WantedGender &&
                (CheckedUser.RelationshipStatus == User.eRelationshipStatus.Single ||
                 CheckedUser.RelationshipStatus == null))
            {
                result = true;
            }

            return(result);
        }
コード例 #11
0
        public KeyValuePair <int, User> InitFindLove(User.eGender i_GenderOfInterest)
        {
            Matcher = new Matcher(FacebookUser);
            if (Matcher.FriendsMatch != null)
            {
                throw new ArgumentException("find love feature already initiated");
            }

            Matcher.InitMatches(i_GenderOfInterest);

            if (Matcher.FriendsMatch.Count == 0)
            {
                throw new NotSupportedException("feature doesnt support empty friend list");
            }

            return(GetMatch("right"));
        }
コード例 #12
0
        public IEnumerable <User> Match(User.eGender i_gender, string i_single = "False")
        {
            bool single = false;

            switch (i_single)
            {
            case "False":
                single = false;
                break;

            case "True":
                single = true;
                break;

            case "Force":
                single = true;
                break;
            }

            ITestHandler <User> tester = new UserTest((i_user) => m_logic.GenderFilter(i_user, i_gender));

            tester.Add((i_user) => single ? m_logic.GenderFilter(i_user, i_gender) : true);
            return(m_logic.ChainFilter(tester));
        }
コード例 #13
0
        public LinkedList <UserProxy> GenerateFilteredFriendsList(string i_HomeTownFilter, User.eGender i_GenderFilter)
        {
            // show a dialog which the user can choose which gender he wants to date
            // and also the user will enter a city which he wants to find the date/all cities.
            LinkedList <UserProxy> filteredFriendsList = new LinkedList <UserProxy>();

            foreach (User friend in m_LoggedInUser.Friends)
            {
                if (isFriendAMatch(friend, i_HomeTownFilter, i_GenderFilter))
                {
                    filteredFriendsList.AddLast(new UserProxy(friend));
                }
            }

            // now show filteredUsers list in listBox -and when the user choose one of them -
            // their profile picture and email to contact will appear.
            return(filteredFriendsList);
        }
コード例 #14
0
        public FacebookUserProxyCollection GenerateFilteredFriendsList(string i_HomeTownFilter, User.eGender i_GenderFilter)
        {
            // show a dialog which the user can choose which gender he wants to date
            // and also the user will enter a city which he wants to find the date/all cities.
            LinkedList <UserProxy> filteredFriendsList = new LinkedList <UserProxy>();

            foreach (User friend in m_LoggedInUser.Friends)
            {
                if (isFriendAMatch(friend, i_HomeTownFilter, i_GenderFilter))
                {
                    filteredFriendsList.AddLast(new UserProxy(friend));
                }
            }

            // sort the list according to user demand
            FacebookUserProxyCollection facebookUserProxyCollection = new FacebookUserProxyCollection(sort(filteredFriendsList));

            return(facebookUserProxyCollection);
        }
コード例 #15
0
 private void addFriendsByGender(User.eGender i_Gender)
 {
     listBoxFilteredFriends.Items.Clear();
     m_FilteredFriends = r_AppLogic.FriendsFilter.FilterByGender(i_Gender);
     displayOnEmptyList("No one from the friends stated this gender :(");
 }
コード例 #16
0
 public FacebookObjectCollection <User> FilterByGender(User.eGender i_Gender)
 {
     Filter.Gender    = i_Gender;
     m_FilterStrategy = new FilterByGender();
     return(m_FilterStrategy.FilterFriends(Filter));
 }
コード例 #17
0
 public FacebookObjectCollection <User> FilterByGender(User.eGender i_Gender)
 {
     return(this.m_Filter.FilterByGender(i_Gender));
 }
コード例 #18
0
 public bool GenderFilter(User i_user, User.eGender i_gender)
 {
     return(i_gender == i_user.Gender);
 }
コード例 #19
0
        internal GenderFilter(string i_GenderType)
        {
            const string k_MaleString = "male";

            m_GenderType = i_GenderType.ToLower().Equals(k_MaleString) ? User.eGender.male : User.eGender.female;
        }
コード例 #20
0
ファイル: Matcher.cs プロジェクト: Ziv3r/Facebookapp
 public void InitMatches(User.eGender i_GenderOfInterest)
 {
     FriendsMatch           = new List <KeyValuePair <int, User> >();
     FriendsMatch           = GetMatch(i_GenderOfInterest);
     IndexInMatchCollection = -1;  // for first increament
 }