private UsersViewModel GetUsers(SearchViewModel model,int page = 1) { var users = repository.ApplicationUsers; var currentUser = manager.FindById(User.Identity.GetUserId()); if (model.FirstName != null) users = users.Where(u => u.FirstName == model.FirstName); if (model.LastName != null) users = users.Where(u => u.LastName == model.LastName); if (model.Age != null) users = users.Where(u => u.Age == model.Age); if (model.Country != null) users = users.Where(u => u.Country == model.Country); if (model.City != null) users = users.Where(u => u.City == model.City); var friendsId = repository.UserFriends.Where(u => u.UserId == currentUser.Id) .Select(f => f.FriendId); var friends = repository.ApplicationUsers.Where(u => friendsId.Contains(u.Id) || u.Id == currentUser.Id).Select(u => u); users = users.Except(friends).OrderBy(u => u.Id); var foundUsers = new UsersViewModel { Users = users.Skip((page - 1) * UsersPerPage).Take(UsersPerPage), SearchModel=model, PagingInfo = new PagingInfo { TotalPages = (int)Math.Ceiling((decimal)users.Count() / UsersPerPage), TotalItems = users.Count(), } }; TempData["InfoMessage"] = "Users " + foundUsers.PagingInfo.TotalItems; return foundUsers; }
private UsersViewModel GetSuggestedFriends(int page=1) { var currentUser = manager.FindById(User.Identity.GetUserId()); var user = repository.ApplicationUsers.Where(u => u.Id == currentUser.Id).Select(u => u); var friendsId = currentUser.Friends.Select(f => f.FriendId); var suggFriendsId = repository.UserFriends.Where(u => friendsId.Contains(u.UserId)).Select(sf => sf.FriendId); suggFriendsId = suggFriendsId.Except(friendsId); var suggFriends = repository.ApplicationUsers.Where(u => suggFriendsId.Contains(u.Id)).Except(user).Select(u => u); var model = new UsersViewModel { Users = suggFriends.OrderBy(u=>u.Id).Skip((page - 1) * FriendsPerPage).Take(FriendsPerPage), PagingInfo = new PagingInfo { TotalPages = (int)Math.Ceiling((decimal)suggFriends.Count() / FriendsPerPage), TotalItems = suggFriends.Count(), } }; TempData["InfoMessage"] = currentUser.FirstName + "'s " + "Suggested friends" + " - " + model.PagingInfo.TotalItems; return model; }