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));
        }
Beispiel #2
0
        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));
        }