public async Task <SDETask> UpdateTask(SDETaskProto task) { var issue = await FindIssue(task); // If the issue is found, update it if (issue != null) { var update = issue.ToUpdate(); update.Body = task.Description; if (task.Status.Equals("Complete")) { update.State = ItemState.Closed; } else { update.State = ItemState.Open; } var updatedIssue = await githubClient.Issue.Update(githubUser, GetRepoName(task.Project), issue.Number, update); return(NewSDETask(updatedIssue)); } // if no issue is found, create the issue return(await CreateTask(task)); }
public async Task <SDETask> RemoveTask(SDETaskProto task) { var issue = await FindIssue(task); // If the issue is found, close it if (issue != null) { var update = issue.ToUpdate(); update.State = ItemState.Closed; var updatedIssue = await githubClient.Issue.Update(githubUser, GetRepoName(task.Project), issue.Number, update); return(NewSDETask(updatedIssue)); } // else return null return(null); }
public async Task <SDETask> CreateTask(SDETaskProto task) { var existingIssue = await FindIssue(task); // If the issue is found, update it instead of creating if (existingIssue != null) { return(await UpdateTask(task)); } else { var createIssue = new NewIssue(title: task.Title); createIssue.Body = task.Description; createIssue.Labels.Add(task.Project); var issue = await githubClient.Issue.Create( owner : githubUser, name : GetRepoName(task.Project), newIssue : createIssue); return(NewSDETask(issue)); } }
private async Task <Issue> FindIssue(SDETaskProto task) { return(await FindIssue(task.Project, task.Title)); }