Example #1
0
        public async Task <Result <IReadOnlyList <Issue> > > ListIssues(ListIssuesParameters parameters)
        {
            var client = await _clientFactory.Create();

            string projectId = await GetProjectId(client, parameters.Project);

            if (projectId == null)
            {
                return(Result.Fail <IReadOnlyList <Issue> >($"Project {parameters.Project} was not found"));
            }

            int?assigneeId = await GetUserId(client, parameters.AssignedToCurrentUser, parameters.Assignee);

            IssueState issueState = _mapper.Map(parameters.IssueState);

            var issues = await client.Issues.GetAsync(projectId, o =>
            {
                o.AssigneeId = assigneeId;
                o.State      = issueState;
                o.Labels     = parameters.Labels;
                o.Filter     = parameters.Filter;
                o.IssueIds   = parameters.IssuesIds;
            });

            return(Result.Ok <IReadOnlyList <Issue> >(issues.ToList()));
        }
Example #2
0
        public async Task ListIssues(ListIssuesParameters parameters)
        {
            var issueResult = await _gitLabFacade.ListIssues(parameters);

            if (issueResult.IsFailure)
            {
                _presenter.ShowError("Failed to retrieve issues", issueResult.Error);
                return;
            }

            var issues = issueResult.Value;

            if (issues.Count == 0)
            {
                _presenter.ShowSuccess($"No issues found in project {parameters.Project}");
                return;
            }

            if (parameters.Output == OutputFormat.Rows)
            {
                _presenter.ShowRows(
                    $"Found ({issues.Count}) issues in project {parameters.Project}",
                    issues.Select(i => new Row(new[]
                {
                    $"{ConsoleOutputColor.Yellow}#{i.Id}",
                    "Author",
                    "Created"
                },
                                               new[]
                {
                    i.Title,
                    i.Author,
                    i.CreatedAt.ToString(CultureInfo.CurrentUICulture),
                },
                                               i.Description)).
                    ToArray());
            }
            else if (parameters.Output == OutputFormat.Grid)
            {
                _presenter.ShowGrid(
                    $"Found ({issues.Count}) issues in project {parameters.Project}",
                    new GridColumn("Issue Id", 20, issues.Select(s => "#" + s.Id.ToString())),
                    new GridColumn("Title", 100, issues.Select(s => s.Title)),
                    new GridColumn("Description", 100, issues.Select(s => s.Description)));
            }
            else
            {
                throw new NotSupportedException($"OutputFormat {parameters.Output} is not supported");
            }
        }
Example #3
0
 public async Task <Result <IReadOnlyList <Issue> > > ListIssues(ListIssuesParameters parameters)
 => _mapper.Map(await SafeGetResult(() => _issuesFacade.ListIssues(parameters)));