public static Group GetGroupFromGroupId(int groupId)
{
using (SqlConnection connection = ConnectionManager.GetConnection())
{
var data = new ActivEarthDataProvidersDataContext(connection);
List<string> hashtags = (from h in data.GroupHashtagDataProviders
where h.group_id == groupId
select
h.hashtag
).ToList();
List<int> member_ids = (from u in data.GroupMemberDataProviders
where u.group_id == groupId
select
u.user_id
).ToList();
List<User> members = new List<User>();
foreach (int id in member_ids) {
members.Add(UserDAO.GetUserFromUserId(id));
}
List<int> contest_ids = ContestDAO.GetContestIdsFromGroupId(groupId);
List<Contest> contests = new List<Contest>();
foreach (int id in contest_ids)
{
contests.Add(ContestDAO.GetContestFromContestId(id, true, true));
}
Group toReturn = (from g in data.GroupDataProviders
where g.id == groupId
select
new Group
{
ID = g.id,
Name = g.name,
Description = g.description,
GreenScore = g.green_score,
ActivityScore = new ActivityScore(g.badge_score, g.challenge_score, g.contest_score),
Members = members,
HashTags = hashtags,
Contests = contests
}).FirstOrDefault();
if (toReturn == null)
{
return null;
}
toReturn.Owner = UserDAO.GetUserFromUserId(((from g in data.GroupDataProviders
where g.id == groupId
select
g.owner_id).FirstOrDefault()));
RecentActivityDAO.GetGroupRecentActivity(toReturn);
return toReturn;
}
}