public async Task <IssueChangeResponse> DeleteIssueAsync(AppState.Issue issue) { var result = await _httpClient.DeleteAsyncEx <IssueChangeResponse>($"api/issue/{issue.Id}", $"Delete issue '{issue.Title}'"); OnStateChanged?.Invoke(this, result.AppState); return(result); }
public async Task <IssueChangeResponse> UpdateIssueAsync(AppState.Issue issue) { var result = await _httpClient.PutAsyncEx <IssueChangeResponse, AppState.Issue>("api/issue", issue, $"Update issue '{issue.Title}'"); OnStateChanged?.Invoke(this, result.AppState); return(result); }
public async Task <IssueChangeResponse> UpdateAsync(AppState.Issue issue, int userId) { var exist = await _appDbContext.Issues.Include(p => p.Stage).SingleOrDefaultAsync(p => p.Id == issue.Id); if (exist?.Stage == null || exist.Stage.UserId != userId) { return new IssueChangeResponse() { ErrorMessage = "Issue not found" } } ; exist.Title = issue.Title; exist.Body = issue.Body; await _appDbContext.SaveChangesAsync(); return(new IssueChangeResponse()); }
public async Task <IssueChangeResponse> InsertAsync(AppState.Issue issue, int userId) { var stage = await _appDbContext.Stages.FindAsync(issue.StageId); if (stage == null || stage.UserId != userId) { return(new IssueChangeResponse() { ErrorMessage = "Issue not found" }); } var allNextIds = await _appDbContext.Issues.Where(p => p.StageId == stage.Id && p.NextIssueId.HasValue) .Select(p => p.NextIssueId.Value).ToListAsync(); var first = await _appDbContext.Issues.SingleOrDefaultAsync(p => !allNextIds.Contains(p.Id) && p.StageId == stage.Id); var nextIssueId = default(int?); if (first != null) { nextIssueId = first.Id; } var issueDto = new IssueDto() { Body = issue.Body, CreatedDateTime = DateTime.Now, StageId = issue.StageId, Title = issue.Title, UserId = userId, NextIssueId = nextIssueId }; _appDbContext.Issues.Add(issueDto); await _appDbContext.SaveChangesAsync(); return(new IssueChangeResponse()); }
public async Task <IssueChangeResponse> Put(AppState.Issue issue) { return(await _issueService.UpdateAsync(issue, _authUser.Id)); }