public static bool UpdateGroup(Group group)
{
try
{
using (SqlConnection connection = ConnectionManager.GetConnection())
{
var data = new ActivEarthDataProvidersDataContext(connection);
int groupId = group.ID;
GroupDataProvider dbGroup = (from g in data.GroupDataProviders
where g.id == groupId
select g).FirstOrDefault();
if (dbGroup != null)
{
dbGroup.name = group.Name;
dbGroup.description = group.Description;
dbGroup.owner_id = group.Owner.UserID;
dbGroup.green_score = group.GreenScore;
dbGroup.badge_score = group.ActivityScore.BadgeScore;
dbGroup.challenge_score = group.ActivityScore.ChallengeScore;
dbGroup.contest_score = group.ActivityScore.ContestScore;
//Update group_hashtags table
List<GroupHashtagDataProvider> hashtags = (from h in data.GroupHashtagDataProviders
where h.group_id == groupId
select
h
).ToList();
foreach (GroupHashtagDataProvider hashtagData in hashtags)
{
if (!group.HashTags.Contains(hashtagData.hashtag)){
data.GroupHashtagDataProviders.DeleteOnSubmit(hashtagData);
}
}
foreach (string hashtag in group.HashTags)
{
bool found = false;
foreach (GroupHashtagDataProvider hashtagData in hashtags)
{
if (hashtagData.hashtag == hashtag)
{
found = true;
}
}
if (!found)
{
GroupHashtagDataProvider hashtagData = new GroupHashtagDataProvider
{
hashtag = hashtag,
group_id = groupId
};
data.GroupHashtagDataProviders.InsertOnSubmit(hashtagData);
}
}
//Update group_members table
List<GroupMemberDataProvider> members = (from u in data.GroupMemberDataProviders
where u.group_id == groupId
select
u
).ToList();
foreach (GroupMemberDataProvider memberData in members)
{
bool found = false;
foreach (User member in group.Members)
{
if (memberData.user_id == member.UserID)
{
found = true;
}
}
if (!found)
{
data.GroupMemberDataProviders.DeleteOnSubmit(memberData);
}
}
foreach (User member in group.Members)
{
bool found = false;
foreach (GroupMemberDataProvider memberData in members)
{
if (memberData.user_id == member.UserID)
{
found = true;
}
}
if (!found)
{
GroupMemberDataProvider memberData = new GroupMemberDataProvider
{
user_id = member.UserID,
group_id = groupId
};
data.GroupMemberDataProviders.InsertOnSubmit(memberData);
}
}
//Update Teams table
List<TeamDataProvider> contests = (from c in data.TeamDataProviders
where c.group_id == groupId
select
c
).ToList();
foreach (TeamDataProvider contestData in contests)
{
bool found = false;
foreach (Contest contest in group.Contests)
{
if (contestData.contest_id == contest.ID)
{
found = true;
}
}
if (!found)
{
data.TeamDataProviders.DeleteOnSubmit(contestData);
}
}
RecentActivityDAO.UpdateGroupRecentActivity(group);
data.SubmitChanges();
return true;
}
else
{
return false;
}
}
}
catch (Exception)
{
return false;
}
}