public IHttpActionResult Edit(int id, IssueEditBindingModel model) { if (!ModelState.IsValid) { return(this.BadRequest(ModelState)); } var userId = RequestContext.Principal.Identity.GetUserId(); var issue = this.issuesService.Edit(userId, id, model); return(Ok(issue)); }
public IssueViewModel Edit(string userId, int id, IssueEditBindingModel model) { var issue = this.data.IssueRepository.GetById(id) .Include(i => i.IssueLabels.Select(il => il.Label)) .Include(i => i.Priority) .Include(i => i.Project) .Include(i => i.Status) .FirstOrDefault(); if (issue == null) { throw new ArgumentException(Constants.UnexistingProjectErrorMessage); } var user = this.data.UserRepository.GetById(userId); if (issue.Project.LeadId != user.Id && !user.isAdmin) { throw new InvalidOperationException(Constants.NotProjectLeaderOrAdmin); } issue.Title = model.Title; issue.Description = model.Description; issue.AssigneeId = model.AssigneeId; issue.PriorityId = model.PriorityId; issue.DueDate = model.DueDate; var labels = this.data.IssueLabelsRepository.Get(il => il.IssueId == issue.Id).ToList(); foreach (var issueLabel in labels) { this.data.IssueLabelsRepository.Delete(issueLabel); } if (model.Labels != null) { AddLabels(model.Labels, issue); } this.data.Save(); return(GetMappedIssueWithAvailableStatuses(issue)); }