public async Task Create([FromBody] CreateGroup body) { var groupId = $"{SpisumNames.Prefixes.Group}{body.Id}"; try { var permissions = Enum.GetValues(typeof(GroupPermissionTypes)).Cast <GroupPermissionTypes>().Select(x => $"_{x}").ToList(); permissions.Insert(0, ""); // for basic name, for list all people in permissions.Add(SpisumNames.Postfixes.Sign); // for getting people who can sign foreach (var permission in permissions) { await _alfrescoHttpClient.CreateGroup(new GroupBodyCreate { Id = $"{groupId}{permission}", DisplayName = $"{body.Name}{permission}" }); } // add to main group await _initialGroup.AddMainGroupMember(SpisumNames.Groups.MainGroup, groupId); if (body.Type?.ToLower() == "dispatch") { await _initialGroup.AddMainGroupMember(SpisumNames.Groups.DispatchGroup, groupId); } else if (body.Type?.ToLower() == "repository") { await _initialGroup.AddMainGroupMember(SpisumNames.Groups.RepositoryGroup, groupId); } await _initScript.ProcessGroup(groupId); } catch (Exception ex) { Log.Error(ex, "Create group structure failed"); await _alfrescoHttpClient.DeleteGroup(groupId); } }