Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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());
        }
Exemple #4
0
        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());
        }
Exemple #5
0
 public async Task <IssueChangeResponse> Put(AppState.Issue issue)
 {
     return(await _issueService.UpdateAsync(issue, _authUser.Id));
 }