public async Task <string> JoinGroup(Interfaces.IDataRepo repo, string u, string g) { string msg = ""; string groupId = g; var group = await repo.GetGroupAsync(groupId); if (group == null) { msg = "error: group does not exist"; return(msg); } UserModel user = await repo.GetUser(u); if (user == null) { msg = "error: user does not exist"; return(msg); } if (group.MemberCount >= CoreEngineSettings.MAX_GROUP_MEMBERS_COUNT) { msg = "error: " + group.Name + " reached maximum number of members"; } else { // join group user.Groups.Add(groupId); await repo.UpdateUserAsync(user); group.MemberCount++; msg = u + " joined group " + group.Name; await repo.UpdateGroupAsync(group); } return(msg); }
public async Task <string> LeaveGroup(Interfaces.IDataRepo repo, string u, string g) { string msg = ""; string groupId = g; var group = await repo.GetGroupAsync(groupId); if (group == null) { msg = "group does not exist"; return(msg); } UserModel user = await repo.GetUser(u); if (user == null) { msg = "user does not exist"; return(msg); } if (user.Groups.Contains(groupId)) { // leave group user.Groups.Remove(groupId); await repo.UpdateUserAsync(user); group.MemberCount--; msg = u + " left group " + group.Name; await repo.UpdateGroupAsync(group); } return(msg); }