1: public string GetAvailableFriends(int memberId)
2: {
3: var list = _repo.List<Member>().Where(m => m.MemberContact.Equals(true))
4: .OrderBy(m => m.FirstName).ToList();
5: var memberFriends = _repo.List<MemberFriend>()
6: .Where(m => m.Member.Id.Equals(memberId)).ToList();
7:
8: var currentFriends = memberFriends.Select(f => f.Friend).ToList();
9:
10: var availableFriendList = (from friend in list
11: where !currentFriends.Contains(friend)
12: select new MemberFriends
13: {
14: FirstName = friend.FirstName,
15: LastName = friend.LastName,
16: FriendId = friend.Id,
17: FullName = friend.FirstName + " " + friend.LastName,
18: Avatar = friend.Avatar
19: }).ToList();
20:
21: decimal listCount = availableFriendList.Count;
22: var listLimit = Math.Floor(listCount / 4) + 2;
23: if (listLimit == 0) listLimit = 1;
24: var addedFriends = 0;
25:
26: var friendTable = new StringBuilder("<div class='availFriends'>");
27:
28: for (var i = 0; i < listLimit; i++)
29: {
30: if (addedFriends >= listCount) continue; // we're all done, no need to continue
31:
32: friendTable.Append(i < listLimit - 1 ? "<div class='row availFriendRow'>" : "<div class='row last'>");
33:
34: //first column
35: if (addedFriends < listCount)
36: {
37: var friend1 = availableFriendList.ElementAt(addedFriends);
38: var avatarSource = _photoHelpers.GetAvatarThumbSource(friend1);
39: FriendTableAppend(friendTable, friend1, avatarSource);
40: addedFriends++;
41: }
42:
43: //second column
44: if (addedFriends < listCount)
45: {
46: var friend2 = availableFriendList.ElementAt(addedFriends);
47: var avatarSource = _photoHelpers.GetAvatarThumbSource(friend2);
48: FriendTableAppend(friendTable, friend2, avatarSource);
49: addedFriends++;
50: }
51:
52: //third column
53: if (addedFriends < listCount)
54: {
55: var friend3 = availableFriendList.ElementAt(addedFriends);
56: var avatarSource = _photoHelpers.GetAvatarThumbSource(friend3);
57: FriendTableAppend(friendTable, friend3, avatarSource);
58: addedFriends++;
59: }
60:
61: //fourth column
62: if (addedFriends < listCount)
63: {
64: var friend4 = availableFriendList.ElementAt(addedFriends);
65: var avatarSource = _photoHelpers.GetAvatarThumbSource(friend4);
66: FriendTableAppend(friendTable, friend4, avatarSource);
67: addedFriends++;
68: }
69:
70: friendTable.Append("</div>");
71: }
72: friendTable.Append("<div class='sendFriendRequest sendFriendRequestDisabled'>Send Friend Request</div>");
73: friendTable.Append("</div>");
74: return friendTable.ToString();
75: }
76:
77: private void FriendTableAppend(StringBuilder friendTable, MemberFriends friend, string avatarSource)
78: {
79: friendTable.Append("<div class='col col225'>");
80: friendTable.Append("<div class='availFriendHolder'>");
81: friendTable.Append("<div class='availFriendCheckBox chkGraphic chkUnChecked' fxn='");
82: friendTable.Append(friend.FriendId + "'><input type='hidden' name='");
83: friendTable.Append(friend.FriendId + "'/></div>");
84: friendTable.Append("<div class='availFriendAvatar'><img src='" + avatarSource + "' /></div>");
85: friendTable.Append("<div class='availFriendName'>" + friend.FullName + "</div>");
86: if(FriendRequestPending(friend.FriendId))
87: {
88: friendTable.Append("<div class='friendRequestPending'>Friend Request Pending</div>");
89: }
90: friendTable.Append("</div>");
91: friendTable.Append("</div>");
92: }
93:
94: public bool FriendRequestPending(int friendId)
95: {
96: var approved = false;
97: var memberFriend = _repo.List<MemberFriend>()
98: .Where(m => m.FriendId.Equals(friendId))
99: .ToList().FirstOrDefault();
100: if (memberFriend != null)
101: approved = memberFriend.Approved;
102: return approved;
103: }