示例#1
0
        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())}"));
            }
        }
示例#2
0
        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()}"));
        }