Example #1
0
        /// <summary>
        /// Get a collection of colleges and their associated users
        /// </summary>
        /// <param name="numberOfFriends"></param>
        /// <returns></returns>
        public IEnumerable<KeyValuePair<string, List<FacebookUser>>> GetFriendsCollegeEducationCollection(int numberOfFriends)
        {
            var friendsEducation = GetFriendsEducationCollection();
            var collegeEducatedFriends =
                friendsEducation.Data.Where(
                    e => e.Education.Exists(i => i.Type.ToLower() == "college" || i.Type.ToLower() == "graduate school"));

            var collegesDict = new Dictionary<string, List<FacebookUser>>();

            foreach (var friend in collegeEducatedFriends)
            {
                var facebookUser = new FacebookUser
                {
                    Name = friend.Name,
                    Pic_Square = friend.Pic_Square,
                    UID = friend.UID
                };

                foreach (var school in friend.Education.Where(i => i.Type != null && (i.Type.ToLower() == "college" || i.Type.ToLower() == "graduate school")))
                {
                    string schoolName = school.School.Name;

                    if (collegesDict.ContainsKey(schoolName))
                    {
                        if (!collegesDict[schoolName].Exists(x => x.UID == facebookUser.UID))
                        {
                            collegesDict[schoolName].Add(facebookUser);
                        }
                    }
                    else
                    {
                        collegesDict.Add(schoolName, new List<FacebookUser> { facebookUser });
                    }
                }
            }

            return collegesDict.OrderByDescending(x => x.Value.Count).Take(numberOfFriends).ToList();
        }
Example #2
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="numberOfColleges"></param>
        /// <returns>Collection of Sexes (male and female) with associated list of Majors and their associated users</returns>
        public List<KeyValuePair<string, List<KeyValuePair<string, List<FacebookUser>>>>> GetTopMajorsByGender(int numberOfColleges)
        {
            var friendsEducation = GetFriendsEducationCollection();
            var collegeEducatedFriends =
                friendsEducation.Data.Where(
                    e => e.Education.Exists(i => i.Type.ToLower() == "college" || i.Type.ToLower() == "graduate school"));

            var femaleMajorDict = new Dictionary<string, List<FacebookUser>>();
            var maleMajorDict = new Dictionary<string, List<FacebookUser>>();

            foreach (var friend in collegeEducatedFriends)
            {
                var sex = friend.Sex.ToLower();

                var facebookUser = new FacebookUser
                {
                    Name = friend.Name,
                    Pic_Square = friend.Pic_Square,
                    UID = friend.UID
                };

                foreach (var school in friend.Education.Where(i => i.Type != null && (i.Type.ToLower() == "college" || i.Type.ToLower() == "graduate school")))
                {
                    if (school.Concentration != null)
                    {
                        foreach (var concentration in school.Concentration)
                        {
                            string majorName = concentration.Name;

                            switch (sex)
                            {
                                case "female":
                                    if (femaleMajorDict.ContainsKey(majorName))
                                    {
                                        //femaleMajorDict[majorName].Add(facebookUser);
                                        if (!femaleMajorDict[majorName].Exists(x => x.UID == facebookUser.UID))
                                        {
                                            femaleMajorDict[majorName].Add(facebookUser);
                                        }
                                    }
                                    else
                                    {
                                        femaleMajorDict.Add(majorName, new List<FacebookUser> { facebookUser });
                                    }
                                    break;
                                case "male":
                                    if (maleMajorDict.ContainsKey(majorName))
                                    {
                                        //maleMajorDict[majorName].Add(facebookUser);
                                        if (!maleMajorDict[majorName].Exists(x => x.UID == facebookUser.UID))
                                        {
                                            maleMajorDict[majorName].Add(facebookUser);
                                        }
                                    }
                                    else
                                    {
                                        maleMajorDict.Add(majorName, new List<FacebookUser> { facebookUser });
                                    }
                                    break;
                            }
                        }
                    }
                }
            }

            var femaleTopMajors =
                femaleMajorDict.OrderByDescending(x => x.Value.Count).Take(numberOfColleges).ToList();

            var maleTopMajors = maleMajorDict.OrderByDescending(x => x.Value.Count).Take(numberOfColleges).ToList();

            var ret = new List<KeyValuePair<string, List<KeyValuePair<string, List<FacebookUser>>>>>
                          {
                              new KeyValuePair<string, List<KeyValuePair<string, List<FacebookUser>>>>("female",
                                                                                                       femaleTopMajors),
                              new KeyValuePair<string, List<KeyValuePair<string, List<FacebookUser>>>>("male",
                                                                                                       maleTopMajors)
                          };
            return ret;
        }
Example #3
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="numberOfMajors"></param>
        /// <returns>Collection of Majors with their associated users</returns>
        public IEnumerable<KeyValuePair<string, List<FacebookUser>>> GetFriendsTopCollegeMajors(int numberOfMajors)
        {
            var friendsEducation = GetFriendsEducationCollection();
            var collegeEducatedFriends =
                friendsEducation.Data.Where(
                    e => e.Education.Exists(i => i.Type.ToLower() == "college" || i.Type.ToLower() == "graduate school"));

            var majorsDict = new Dictionary<string, List<FacebookUser>>();

            foreach (var friend in collegeEducatedFriends)
            {
                var facebookUser = new FacebookUser
                {
                    Name = friend.Name,
                    Pic_Square = friend.Pic_Square,
                    UID = friend.UID
                };

                foreach (var school in friend.Education.Where(i => i.Type != null && (i.Type.ToLower() == "college" || i.Type.ToLower() == "graduate school")))
                {

                    if (school.Concentration != null)
                    {
                        foreach (var concentration in school.Concentration)
                        {
                            string majorName = concentration.Name;

                            if (majorsDict.ContainsKey(majorName))
                            {

                                if (majorsDict[majorName] == null)
                                {
                                    majorsDict[majorName] = new List<FacebookUser>
                                                                {
                                                                    facebookUser
                                                                };
                                }
                                else
                                {
                                    //majorsDict[majorName].Add(facebookUser);
                                    if (!majorsDict[majorName].Exists(x => x.UID == facebookUser.UID))
                                    {
                                        majorsDict[majorName].Add(facebookUser);
                                    }
                                }

                            }
                            else
                            {
                                majorsDict.Add(majorName, new List<FacebookUser> { facebookUser });
                            }
                        }
                    }
                }
            }

            return majorsDict.OrderByDescending(x => x.Value.Count).Take(numberOfMajors).ToList();
        }