private void CreateTeams()

in src/VstsDemoBuilder/Services/ProjectService.cs [1063:1205]


        private void CreateTeams(Project model, string teamsJSON, VstsRestAPI.Configuration _projectConfig, string id, string teamAreaJSON)
        {
            try
            {
                string jsonTeams = GetJsonFilePath(model.IsPrivatePath, model.PrivateTemplatePath, model.SelectedTemplate, teamsJSON);
                if (File.Exists(jsonTeams))
                {
                    Teams objTeam = new Teams(_projectConfig);
                    jsonTeams = model.ReadJsonFile(jsonTeams);
                    JArray jTeams = JsonConvert.DeserializeObject<JArray>(jsonTeams);
                    JContainer teamsParsed = JsonConvert.DeserializeObject<JContainer>(jsonTeams);

                    //get Backlog Iteration Id
                    string backlogIteration = objTeam.GetTeamSetting(model.ProjectName);
                    //get all Iterations
                    TeamIterationsResponse.Iterations iterations = objTeam.GetAllIterations(model.ProjectName);

                    foreach (var jTeam in jTeams)
                    {
                        string teamIterationMap = GetJsonFilePath(model.IsPrivatePath, model.PrivateTemplatePath, model.SelectedTemplate, "TeamIterationMap.json");
                        if (File.Exists(teamIterationMap))
                        {
                            //BEGIN - Mapping only given iterations for team in Team Iteration Mapping file
                            if (!string.IsNullOrEmpty(teamIterationMap))
                            {
                                string data = model.ReadJsonFile(teamIterationMap);
                                TeamIterations.Map iterationMap = new TeamIterations.Map();
                                iterationMap = JsonConvert.DeserializeObject<TeamIterations.Map>(data);
                                if (iterationMap.TeamIterationMap.Count > 0)
                                {
                                    foreach (var teamMap in iterationMap.TeamIterationMap)
                                    {
                                        if (teamMap.TeamName.ToLower() == jTeam["name"].ToString().ToLower())
                                        {
                                            // AS IS

                                            GetTeamResponse.Team teamResponse = objTeam.CreateNewTeam(jTeam.ToString(), model.ProjectName);
                                            if (!(string.IsNullOrEmpty(teamResponse.id)))
                                            {
                                                string areaName = objTeam.CreateArea(model.ProjectName, teamResponse.name);
                                                string updateAreaJSON = GetJsonFilePath(model.IsPrivatePath, model.PrivateTemplatePath, model.SelectedTemplate, teamAreaJSON);

                                                //updateAreaJSON = string.Format(templatesFolder + @"{0}\{1}", model.SelectedTemplate, teamAreaJSON);

                                                if (File.Exists(updateAreaJSON))
                                                {
                                                    updateAreaJSON = model.ReadJsonFile(updateAreaJSON);
                                                    updateAreaJSON = updateAreaJSON.Replace("$ProjectName$", model.ProjectName).Replace("$AreaName$", areaName);
                                                    bool isUpdated = objTeam.SetAreaForTeams(model.ProjectName, teamResponse.name, updateAreaJSON);
                                                }
                                                bool isBackLogIterationUpdated = objTeam.SetBackLogIterationForTeam(backlogIteration, model.ProjectName, teamResponse.name);
                                                if (iterations.count > 0)
                                                {
                                                    foreach (var iteration in iterations.value)
                                                    {
                                                        if (iteration.structureType == "iteration")
                                                        {
                                                            foreach (var child in iteration.children)
                                                            {
                                                                if (teamMap.Iterations.Contains(child.name))
                                                                {
                                                                    bool isIterationUpdated = objTeam.SetIterationsForTeam(child.identifier, teamResponse.name, model.ProjectName);
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }

                                            // TILL HERE
                                        }
                                    }

                                }
                            }
                            // END
                        }
                        else
                        {
                            string isDefault = jTeam["isDefault"] != null ? jTeam["isDefault"].ToString() : string.Empty;
                            if (isDefault == "false" || isDefault == "")
                            {
                                GetTeamResponse.Team teamResponse = objTeam.CreateNewTeam(jTeam.ToString(), model.ProjectName);
                                if (!(string.IsNullOrEmpty(teamResponse.id)))
                                {
                                    string areaName = objTeam.CreateArea(model.ProjectName, teamResponse.name);
                                    string updateAreaJSON = GetJsonFilePath(model.IsPrivatePath, model.PrivateTemplatePath, model.SelectedTemplate, teamAreaJSON);

                                    //updateAreaJSON = string.Format(templatesFolder + @"{0}\{1}", model.SelectedTemplate, teamAreaJSON);

                                    if (File.Exists(updateAreaJSON))
                                    {
                                        updateAreaJSON = model.ReadJsonFile(updateAreaJSON);
                                        updateAreaJSON = updateAreaJSON.Replace("$ProjectName$", model.ProjectName).Replace("$AreaName$", areaName);
                                        bool isUpdated = objTeam.SetAreaForTeams(model.ProjectName, teamResponse.name, updateAreaJSON);
                                    }
                                    bool isBackLogIterationUpdated = objTeam.SetBackLogIterationForTeam(backlogIteration, model.ProjectName, teamResponse.name);
                                    if (iterations.count > 0)
                                    {
                                        foreach (var iteration in iterations.value)
                                        {
                                            if (iteration.structureType == "iteration")
                                            {
                                                foreach (var child in iteration.children)
                                                {
                                                    bool isIterationUpdated = objTeam.SetIterationsForTeam(child.identifier, teamResponse.name, model.ProjectName);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            if (!(string.IsNullOrEmpty(objTeam.LastFailureMessage)))
                            {
                                AddMessage(id.ErrorId(), "Error while creating teams: " + objTeam.LastFailureMessage + Environment.NewLine);
                            }
                            else
                            {
                                AddMessage(id, string.Format("{0} team(s) created", teamsParsed.Count));
                            }
                            if (model.SelectedTemplate.ToLower() == "smarthotel360")
                            {
                                string updateAreaJSON = GetJsonFilePath(model.IsPrivatePath, model.PrivateTemplatePath, model.SelectedTemplate, "UpdateTeamArea.json");

                                //updateAreaJSON = string.Format(templatesFolder + @"{0}\{1}", model.SelectedTemplate, "UpdateTeamArea.json");
                                if (File.Exists(updateAreaJSON))
                                {
                                    updateAreaJSON = model.ReadJsonFile(updateAreaJSON);
                                    updateAreaJSON = updateAreaJSON.Replace("$ProjectName$", model.ProjectName);
                                    bool isUpdated = objTeam.UpdateTeamsAreas(model.ProjectName, updateAreaJSON);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Info(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss") + "\t" + "\t" + ex.Message + "\t" + "\n" + ex.StackTrace + "\n");
                AddMessage(id.ErrorId(), "Error while creating teams: " + ex.Message);

            }
        }