public async Task <Round> UpdateRound(Round round, IDataStore dataStore) { if (!await(ValidateRound(dataStore))) { return(null); } var usersToRemove = round.UsersInRound.Where(p => UsersInRound.All(p2 => p2 != p.User.SimpleId)).ToList(); usersToRemove.ForEach(round.RemoveUserFromRound); var usersToAdd = UsersInRound.Where(u => round.UsersInRound.All(r => r.User.SimpleId != u)).ToList(); usersToAdd.ForEach(x => round.AddUserToRound(_domainUsersForRound.First(y => y.User.SimpleId == x))); if (!CheckUsersInRound(round.UsersInRound.Count)) { return(null); } round.RoundDescription = RoundDescription; round.RoundLocationName = RoundLocationName; round.UpdateEvents += $"|{DateTime.UtcNow} round updated"; return(round); }
public bool CanUpdateRound(ClaimsPrincipal user) { var userId = user.GetUserId(); if (!UsersInRound.Any(x => x.User.Id.ToString() == userId)) { return(false); } return(true); }
public void RemoveUserFromRound(RoundUser user) { UsersInRound.Remove(user); }
public void AddUserToRound(RoundUser user) { user.Round = this; UsersInRound.Add(user); }