//Remove Developers from a team
        public bool RemoveDeveloper(string name)
        {
            DevTeam previousInfo = GetTeam(name);
            int     count;

            if (previousInfo.TeamMembers.Count == 0)
            {
                Console.WriteLine("There are no members on the team to remove");
                return(false);
            }
            Console.WriteLine("How many developers would you like to remove?");
            string countString = Console.ReadLine();

            int.TryParse(countString, out count);
            if (count <= 0 || count > previousInfo.TeamMembers.Count)
            {
                Console.WriteLine("You must enter a valid number, not greater than the current developers on the team.  Start over");
                return(false);
            }
            //Find the team


            if (previousInfo == null)
            {
                return(false);
            }
            else
            {
                int index = 1;
                foreach (Developer developer in previousInfo.TeamMembers)
                {
                    Console.WriteLine(index + $":  {developer.Name}\n");
                    index++;
                }
                int id;
                for (int i = 0; i < count; i++)
                {
                    Console.WriteLine($"Enter the number of the next developer you wish to remove: ");
                    string idString = Console.ReadLine();
                    int.TryParse(idString, out id);
                    while (id <= 0 || id > previousInfo.TeamMembers.Count)
                    {
                        Console.WriteLine("Please enter a valid index number");
                        idString = Console.ReadLine();
                        int.TryParse(idString, out id);
                    }
                    Developer dev = previousInfo.TeamMembers.ElementAt(id - 1);
                    dev.Team = null;    //removes Team from developer object
                    previousInfo.TeamMembers.RemoveAt(id - 1);
                }
            } return(true);
        }
        //Helper Methods
        public DevTeam GetTeam(int index)
        {
            DevTeam team = _listOfTeams.ElementAt(index - 1);

            if (team != null)
            {
                return(team);
            }
            else
            {
                return(null);
            }
        }
        public void TeamDetails(string name)
        {
            Console.Clear();
            DevTeam details = GetTeam(name);

            Console.WriteLine($"Team name {details.TeamName} \n" +
                              $"Team ID: {details.TeamID}\n" +
                              $"List of Developers on Team: \n");
            List <Developer> listOfDevelopers = details.TeamMembers;

            foreach (Developer developer in listOfDevelopers)
            {
                Console.WriteLine($"Name:  {developer.Name}\n");
            }
        }
        public void TeamDetails(int num)
        {
            DevTeam team = _listOfTeams.ElementAt(num - 1);

            Console.WriteLine($"Team name {team.TeamName} \n" +
                              $"Team ID: {team.TeamID}\n" +
                              $"List of Developers on Team: \n");

            if (team.TeamMembers != null)
            {
                foreach (Developer developer in team.TeamMembers)
                {
                    Console.WriteLine($"Name:  {developer.Name}\n");
                }
            }
        }
        //Update
        public bool UpdateTeam(string name, DevTeam updatedInfo)
        {
            //Find the developer
            DevTeam previousInfo = GetTeam(name);

            //Update the developer info
            if (previousInfo == null)
            {
                return(false);
            }
            else
            {
                previousInfo.TeamName    = updatedInfo.TeamName;
                previousInfo.TeamID      = updatedInfo.TeamID;
                previousInfo.TeamMembers = updatedInfo.TeamMembers;
                return(true);
            }
        }
        //Update
        public bool UpdateTeam(string name, DevTeam updatedInfo)
        {
            //Find the team
            DevTeam previousInfo = GetTeam(name);

            //Update the team info
            // List<Developer> tempList = previousInfo.TeamMembers; //workaround to update team members

            if (previousInfo == null)
            {
                return(false);
            }
            else
            {
                previousInfo.TeamName = updatedInfo.TeamName;
                previousInfo.TeamID   = updatedInfo.TeamID;
                //tempList.AddRange(updatedInfo.TeamMembers);
                previousInfo.TeamMembers.AddRange(updatedInfo.TeamMembers);  //combine 2 lists instead of replacing one with the other
                return(true);
            }
        }
        //Delete
        public bool DeleteDeveloper(int number)
        {
            int       count = _listOfDevelopers.Count;
            Developer dev   = _listOfDevelopers.ElementAt(number - 1);

            if (dev.Team != null)
            {
                DevTeam team = dev.Team;
                team.TeamMembers.Remove(dev);
            }

            _listOfDevelopers.RemoveAt(number - 1);
            if (count > _listOfDevelopers.Count)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        //Delete
        public bool DeleteTeam(string name)     //These delete method styles only remove them from the list we created.
        //Find Developer                    // They are not actually removed from repository and memory space saved???
        {
            DevTeam tempTeam = GetTeam(name);

            if (tempTeam == null)
            {
                return(false);
            }
            else
            {
                int count = _listOfTeams.Count;
                _listOfTeams.Remove(tempTeam);
                if (count > _listOfTeams.Count)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
 //Create
 public void CreateNewTeam(DevTeam team)
 {
     _listOfTeams.Add(team);
 }