private async Task <GitlabResponse> _CreateNewIssueListsForAllOpenDataLabelsOnIssueBoardInGitlabProject(GitlabProject gitlabProject, GitlabIssueBoard issueBoard) { // hent først ned en liste over alle labels i open-data gruppen int openDataGroupId = _gitlabProjectsConfiguration.GetValue <int>("OpenDataNamespaceId"); var getGroupLabelsEndpoint = $"groups/{openDataGroupId}/labels"; var groupLabelsResponse = await _GetGitlabObject <List <GitlabLabel> >(getGroupLabelsEndpoint); if (!groupLabelsResponse.Success) { return(GitlabResponse.Error($"Failed to get gitlab labels for open data group: {groupLabelsResponse.Message}")); } // fjerner disse for sikkerhets skyld og sorterer på id slik at det blir konsistent var groupLabels = groupLabelsResponse.Resource .Where(l => !l.name.Equals("To Do")) .Where(l => !l.name.Equals("Doing")) .OrderBy(l => l.id); // legg til labels på issue listen var creationResults = await Task.Run(() => groupLabels // kjører synkront for at rekkefølgen skal bli riktig .Select(label => new GitlabIssueList() { label_id = label.id }) .Select(list => _PostGitlabObject(list, $"projects/{gitlabProject.id}/boards/{issueBoard.id}/lists")) .Select(task => { task.Wait(); return(task.Result); })); if (creationResults.All(r => r.Success)) { return(GitlabResponse.Successful()); } else { return(GitlabResponse.Error($"Failed to create gitlab issue lists: {_AggregateErrorMessages(creationResults.Where(r => !r.Success).Select(r => GitlabResponse.Error(r.Message)).ToArray())}")); } }
private async Task <GitlabResponse> _DeleteAllIssueListsInIssueBoardForGitlabProject(GitlabProject gitlabProject, GitlabIssueBoard issueBoard) { // hent ned en liste over lister for issue boardet var endpoint = $"projects/{gitlabProject.id}/boards/{issueBoard.id}/lists"; var issueListsResponse = await _GetGitlabObject <List <GitlabIssueList> >(endpoint); if (!issueListsResponse.Success) { return(GitlabResponse.Error($"Failed to get issue board lists: {issueListsResponse.Message}")); } var issueLists = issueListsResponse.Resource; // slett listene på issue boardet var deletionResults = await Task.WhenAll(issueLists .Select(async list => await _DeleteGitlabObject($"projects/{gitlabProject.id}/boards/{issueBoard.id}/lists/{list.id}"))); if (deletionResults.All(r => r.Success)) { return(GitlabResponse.Successful()); } else { return(GitlabResponse.Error($"Failed to delete gitlab issue lists: {_AggregateErrorMessages(deletionResults)}")); } }
public async Task <GitlabResponse> DeleteGitlabIssueBoardForProject(GitlabProject gitlabProject, GitlabIssueBoard issueBoard) { var deleteEndpoint = $"/{gitlabProject.path_with_namespace}/-/boards/{issueBoard.id}.json"; var response = await _authorizedGitlabFrontendHttpClient.DeleteAsync(deleteEndpoint); if (response.IsSuccessStatusCode) { return(GitlabResponse.Successful()); } return(GitlabResponse.Error($"Failed to delete gitlab issue board with id {issueBoard.id}, reason: {await response.Content.ReadAsStringAsync()}")); }