public ActionResult Search(YourMatchSearchAdd itemTobeSearched) { ViewBag.MyProfilePictureId = m.getProfilePictureIdByCurrentUser(User.Identity.Name); ViewBag.CurrentUserFullName = m.GetUserFullName(User.Identity.Name); if (ModelState.IsValid) { // reseting filter user this.Session["searchItems"] = itemTobeSearched; this.Session["filterUsersSession"] = m.FindYourMatch(itemTobeSearched, User.Identity.Name); var filterUsers = this.Session["filterUsersSession"] as IEnumerable <UserProfileFull>; if (filterUsers == null) { return(RedirectToAction("index")); } else { return(RedirectToAction("MyFoundResults")); } } else { var form = m.mapper.Map <YourMatchSearchForm>(itemTobeSearched); form.GenderList = new SelectList(selectListClass.GetGenderAsList()); form.CountryOfBornList = new SelectList(selectListClass.GetCountriesName()); return(View(form)); } }
public IEnumerable <UserProfileFull> FindYourMatch(YourMatchSearchAdd itemTobeSearched, string email) { var currentUser = ds.UserProfile.Include("Friends").Include("ApplicationUser").SingleOrDefault(i => i.ApplicationUser.UserName == email); var allUsers = ds.UserProfile.Include("Friends").Include("ApplicationUser"); ICollection <UserProfile> allUsersWithoutFirends = new List <UserProfile>(); ICollection <int> idsOfFriends = new List <int>(); ICollection <int> idsOfUsersExcludingFriends = new List <int>(); // filter users first based on the items to be filtered var filteredUsers = ds.UserProfile.Include("ApplicationUser").Include("UserPhotos").Where(u => u.Gender.ToLower() == itemTobeSearched.Gender.ToLower()); filteredUsers = filteredUsers.Where(u => (DateTime.Now.Year - u.DateOfBirth.Year) >= itemTobeSearched.MinAge && (DateTime.Now.Year - u.DateOfBirth.Year) <= itemTobeSearched.MaxAge); filteredUsers = filteredUsers.Where(u => u.Weight >= itemTobeSearched.MinWeight && u.Weight <= itemTobeSearched.MaxWeight); filteredUsers = filteredUsers.Where(u => u.Height >= itemTobeSearched.MinHeight && u.Height <= itemTobeSearched.MaxHeight); filteredUsers = filteredUsers.Where(u => u.CountryOfBorn == itemTobeSearched.CountryOfBorn); filteredUsers = filteredUsers.Where(u => u.AnnualIncome >= itemTobeSearched.MinAnnualIncome && u.AnnualIncome <= itemTobeSearched.MaxAnnualIncome); //// separate string by comma //var eachJobTitel = new List<string>(itemTobeSearched.JobTitle.Split(',').ToList<string>()); //var filterTempList = new List<UserProfile>(); //foreach (var item in eachJobTitel) //{ // var filterTemp = ds.UserProfile.Include("ApplicationUser").Include("UserPhotos").Where(u => u.JobTitle.Contains(item)); // filterTempList.Add(filterTemp); //} ////filteredUsers = filteredUsers.Where(u => u.JobTitle.Contains(itemTobeSearched.JobTitle)); // adding Ids if friendlist to the list foreach (var item in currentUser.Friends) { idsOfFriends.Add(item.Id); } //adding the id of Admin and current user to the idsOfUsersExcludingFriends to dismiss them idsOfFriends.Add(1); idsOfFriends.Add(currentUser.Id); var fetchObject = ds.FriendshipRequests.Where(i => i.UserProfileIdFrom == currentUser.Id || i.UserProfileIdTo == currentUser.Id); foreach (var item in fetchObject) { if (item.UserProfileIdFrom != currentUser.Id) { idsOfFriends.Add(item.UserProfileIdFrom); } if (item.UserProfileIdTo != currentUser.Id) { idsOfFriends.Add(item.UserProfileIdTo); } } bool check = false; foreach (var okUsers in filteredUsers) { check = true; foreach (var bannedIds in idsOfFriends) { if (okUsers.Id == bannedIds) { check = false; } } if (check) { idsOfUsersExcludingFriends.Add(okUsers.Id); } } foreach (var item in idsOfUsersExcludingFriends) { var temp = ds.UserProfile.SingleOrDefault(i => i.Id == item); allUsersWithoutFirends.Add(temp); } var found = mapper.Map <IEnumerable <UserProfileFull> >(allUsersWithoutFirends); return(found); }