public async Task <ResultData <Team> > CreateTeamAsync(string name, string ownerId)
        {
            if (string.IsNullOrEmpty(name))
            {
                return(new ResultData <Team>(TeamNullMessage, false));
            }

            if (string.IsNullOrEmpty(ownerId))
            {
                return(new ResultData <Team>(OwnerIdNullMessage, false));
            }

            Team newTeam = new Team()
            {
                Name         = name,
                OwnerId      = ownerId,
                CreationDate = DateTime.Now
            };

            if (!_userRepository.UserExists(ownerId))
            {
                string errorMessage = string.Format(UserDoesntExistMessage, ownerId);
                return(new ResultData <Team>(errorMessage, false, newTeam));
            }

            if (_teamRepository.TeamNameAlreadyExists(newTeam.Name))
            {
                string errorMessage = string.Format(TeamNameExistsMessage, newTeam.Name);
                return(new ResultData <Team>(errorMessage, false, newTeam));
            }

            Team team = await _teamRepository.CreateTeamAsync(newTeam);

            TeamUser teamUser = new TeamUser
            {
                TeamId = team.Id,
                UserId = ownerId
            };

            await _userRepository.AddUserToTeamAsync(teamUser);

            string successMessage = string.Format(TeamCreateSuccessMessage, team.Id);

            return(new ResultData <Team>(successMessage, true, team));
        }
        public async Task <ResultData <RetrospectorUser> > AddUserToTeamAsync(string email, int teamId)
        {
            if (string.IsNullOrEmpty(email))
            {
                return(new ResultData <RetrospectorUser>(EmailNullMessage, false));
            }

            RetrospectorUser user = await _userRepository.GetUserByEmailAsync(email);

            if (user == null)
            {
                return(new ResultData <RetrospectorUser>(UserEmailDoesntExistMessage, false));
            }

            Team team = await _teamsRepository.GetTeamByIdAsync(teamId);

            if (team == null)
            {
                return(new ResultData <RetrospectorUser>(TeamDoesntExistMessage, false));
            }

            TeamUser teamUser = await _teamsRepository.GetTeamUserAsync(user.Id, teamId);

            if (teamUser != null)
            {
                return(new ResultData <RetrospectorUser>(UserAlreadyInTeamMessage, false));
            }

            teamUser = new TeamUser
            {
                TeamId = teamId,
                UserId = user.Id
            };

            await _userRepository.AddUserToTeamAsync(teamUser);

            return(new ResultData <RetrospectorUser>(UsersAddedToTeamMessage, true, user));
        }