private void AddUsers(List <ProjectUser> _projectUsers) { if (_projectUsers == null || _projectUsers.Count < 1) { return; } HqUser hqAdmin = new HqUser(); if (!CheckAdminEmail(_options.HqAdmin, out hqAdmin)) { return; } Log.Info($""); Log.Info($"Start adding users to projects"); var projectNames = _projectUsers.Select(u => u.project_name).Distinct(); foreach (string name in projectNames) { Log.Info($"- add users to project {name}"); var users = _projectUsers.Where(u => u.project_name.Equals(name)); if (users == null || users.Any() == false) { Log.Warn( $"- no valid users found for project {name} - skipping this project and continue with next"); continue; } var project = DataController.AllProjects.FirstOrDefault(p => p.name != null && p.name.Equals(name)); if (users.Count() < 50) { IRestResponse response = _projectsApi.PostUsersImport(project.id, hqAdmin.uid, users.ToList()); ProjectUserResponseHandler(response); } else if (users.Count() >= 50) { List <IRestResponse> responses = new List <IRestResponse>(); IEnumerable <List <ProjectUser> > chunks = Util.SplitList(users.ToList()); foreach (List <ProjectUser> list in chunks) { IRestResponse response = _projectsApi.PostUsersImport(project.id, hqAdmin.uid, list); ProjectUserResponseHandler(response); } } } }
private bool ActivateProject(string newProjId, HqUser admin, List <string> roleIds = null, string accountId = null) { Log.Info(""); Log.Info("Project activation process started."); List <ProjectUser> users = new List <ProjectUser>(); ProjectUser user = new ProjectUser(); user.services.document_management = new DocumentManagement(); user.services.document_management.access_level = AccessLevel.admin; user.services.project_administration = new ProjectAdministration(); user.services.project_administration.access_level = AccessLevel.admin; user.industry_roles = roleIds; user.company_id = admin.company_id; user.email = admin.email; users.Add(user); IRestResponse res = _projectApi.PostUsersImport(newProjId, admin.uid, users, accountId); if (res.StatusCode == System.Net.HttpStatusCode.OK) { ProjectUserResponse r = JsonConvert.DeserializeObject <ProjectUserResponse>(res.Content); if (r != null) { if (r.failure_items.Count() > 0) { Log.Error($"- project activation failed."); foreach (var item in r.failure_items) { foreach (var error in item.errors) { Log.Error("\t" + error.message); } } return(false); } } // If the function is not used for the hub 2 hub copy if (accountId == null) { DataController.AllProjects.Find(x => x.id == newProjId).status = Status.active; } Log.Info($"- project activation succeed."); return(true); } Log.Error($"- project activation failed. Code: {res.StatusCode}\t message: {res.ErrorMessage}"); return(false); }