예제 #1
0
        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);
        }
예제 #2
0
        public bool CanUpdateRound(ClaimsPrincipal user)
        {
            var userId = user.GetUserId();

            if (!UsersInRound.Any(x => x.User.Id.ToString() == userId))
            {
                return(false);
            }

            return(true);
        }
예제 #3
0
 public void RemoveUserFromRound(RoundUser user)
 {
     UsersInRound.Remove(user);
 }
예제 #4
0
 public void AddUserToRound(RoundUser user)
 {
     user.Round = this;
     UsersInRound.Add(user);
 }