public ClubMemberSummary AddClubMember(CreateClubMemberDto member, string email)
 {
     try
     {
         if (string.IsNullOrEmpty(member.Nickname))
         {
             throw new ArgumentException("Nickname cannot be empty");
         }
         var club = _unitOfWork.Clubs.GetAsQueryable(y => y.Id == member.ClubId).Include(t => t.Administrators).Include(t => t.Players).FirstOrDefault();
         if (club == null)
         {
             throw new ArgumentException("Club not found");
         }
         var currentMember = _unitOfWork.Users.Get(t => t.Email == email).FirstOrDefault();
         if (currentMember == null)
         {
             throw new ArgumentException("Error while authorization");
         }
         if (club.Administrators.All(t => t.UserId != currentMember.Id))
         {
             throw new ArgumentException("Operation not allowed");
         }
         var alreadyExists = club.Players.Any(t => string.Equals(t.Nickname, member.Nickname, StringComparison.CurrentCultureIgnoreCase));
         if (alreadyExists)
         {
             throw new ArgumentException("Member with that nickname already exists");
         }
         var newPlayer = new Player
         {
             ClubId      = member.ClubId,
             Guid        = Guid.NewGuid(),
             IsActive    = true,
             Registered  = DateTimeOffset.UtcNow,
             LastChanged = DateTimeOffset.UtcNow,
             Nickname    = member.Nickname
         };
         club.Players.Add(newPlayer);
         _unitOfWork.Save();
         return(new ClubMemberSummary
         {
             Nickname = member.Nickname,
             IsActive = newPlayer.IsActive,
             PlayerId = newPlayer.Id
         });
     }
     catch (ArgumentException)
     {
         throw;
     }
     catch (Exception e)
     {
         _logger.LogError(e.Message);
         throw new Exception("Error while adding club members. Please try a bit later");
     }
 }
 public IActionResult AddClubMember([FromBody] CreateClubMemberDto dto)
 {
     try
     {
         var email = User.Claims.SingleOrDefault(c => c.Type == "email")?.Value;
         if (string.IsNullOrEmpty(email))
         {
             return(BadRequest("Authorization failed."));
         }
         return(Ok(_service.AddClubMember(dto, email)));
     }
     catch (Exception e)
     {
         return(BadRequest(e.Message));
     }
 }