public IActionResult Get()
        {
            try
            {
                UserTeamJoinList userTeamJoinList = new UserTeamJoinList();

                userTeamJoinList.UserTeamJoins = _mapper.Map <List <UserTeam>, List <UserTeamJoin> >(_unitOfWork.UserTeams.GetAll(true).ToList());

                //foreach (var currentUserTeam in _unitOfWork.UserTeams.GetAll(true))
                //{
                //    userTeamJoinList.UserTeamJoins.Add(_mapper.Map<UserTeamJoin>(currentUserTeam));
                //}

                if (userTeamJoinList.UserTeamJoins.Count() > 0)
                {
                    return(Ok(userTeamJoinList));
                }
            }
            catch (Exception e)
            {
                string message = e.Message;
            }

            return(NotFound());
        }
        public IActionResult GetUserTeamsForUser(string id)
        {
            try
            {
                if (Guid.TryParse(id, out Guid parsedId))
                {
                    UserTeamJoinList userTeamJoinList = new UserTeamJoinList();

                    userTeamJoinList.UserTeamJoins = _mapper.Map <List <UserTeam>, List <UserTeamJoin> >(_unitOfWork.UserTeams.GetUserTeamsForUser(parsedId, true));

                    if (userTeamJoinList.UserTeamJoins.Count() > 0)
                    {
                        return(Ok(userTeamJoinList));
                    }

                    return(NotFound());
                }
            }
            catch (Exception e)
            {
                string message = e.Message;
            }

            return(BadRequest());
        }
        public UserTeamJoinList GetUserTeamListForTeam(Guid teamHeadId)
        {
            UserTeamJoinList userTeamJoinList = new UserTeamJoinList();

            userTeamJoinList.UserTeamJoins = _mapper.Map <List <UserTeamJoin> >(_unitOfWork.UserTeams.GetUserTeamsForTeam(teamHeadId, true));

            return(userTeamJoinList);
        }
        private async Task <bool> CreateOrUpdateUserTeamJoins(string accessToken)
        {
            var response = await _apiHelper.MakeAPICallAsync(accessToken, HttpMethod.Get, APITypes.TEAM, $"UserTeam/GetUserTeamsForUser/{userProfileModel.userModel.Id.ToString()}");

            if (response.StatusCode == System.Net.HttpStatusCode.OK || response.StatusCode == System.Net.HttpStatusCode.NotFound)
            {
                UserTeamJoinList userTeamJoinList = response.ContentAsType <UserTeamJoinList>();

                if (userTeamJoinList != null)
                {
                    foreach (var userTeamJoin in userProfileModel.userTeamJoins)
                    {
                        var foundUserTeamJoin = userTeamJoinList.UserTeamJoins.FirstOrDefault(utj => utj.Id == userTeamJoin.Id);

                        if (foundUserTeamJoin != null)
                        {
                            if (!await _modelHelper.ProcessPatch(foundUserTeamJoin, userTeamJoin, foundUserTeamJoin.Id, accessToken, APITypes.IDENTITY, "UserTeam"))
                            {
                                return(false);
                            }
                        }
                        else
                        {
                            HttpContent contentPost = new StringContent(JsonConvert.SerializeObject(userTeamJoin), Encoding.UTF8, "application/json");

                            try
                            {
                                response = await _apiHelper.MakeAPICallAsync(accessToken, HttpMethod.Post, APITypes.TEAM, $"UserTeam", contentPost);

                                if (response.StatusCode != System.Net.HttpStatusCode.Created)
                                {
                                    return(false);
                                }
                            }
                            catch (Exception ex)
                            {
                                var responseString = $"Error calling API: {ex.Message}";
                                return(false);
                            }
                        }
                    }
                }
            }

            return(true);
        }
        public IActionResult GetUserTeamsForTeam(string id)
        {
            UserTeamJoinList userTeamJoinList = new UserTeamJoinList();

            if (Guid.TryParse(id, out Guid parsedId))
            {
                userTeamJoinList = _userTeamManager.GetUserTeamListForTeam(parsedId);
            }
            else
            {
                userTeamJoinList = _userTeamManager.GetUserTeamListForTeam(id);
            }

            if (userTeamJoinList.UserTeamJoins.Any())
            {
                return(Ok(userTeamJoinList));
            }

            return(NotFound());
        }
        private async Task <bool> CreateUserTeamModelList(string accessToken)
        {
            var response = await _apiHelper.MakeAPICallAsync(accessToken, HttpMethod.Get, APITypes.TEAM, $"UserTeam/GetUserTeamsForUser/{userProfileModel.userModel.Id}");

            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                UserTeamJoinList userTeamJoinList = response.ContentAsType <UserTeamJoinList>();

                foreach (var userTeamJoin in userTeamJoinList.UserTeamJoins)
                {
                    var match = userProfileModel.userTeamJoins.Where(t => t.Id == userTeamJoin.Id).FirstOrDefault();

                    if (match == null)
                    {
                        userProfileModel.userTeamJoins.Add(userTeamJoin);
                    }
                }
            }

            return(true);
        }