コード例 #1
0
        public async Task <ActionResult> Transition(IssueTransitionViewModel model)
        {
            if (model?.Issue == null || model.Issue.Id == 0 || model.Transition == IssueTransition.Assign && model.SolverId == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, BusinessErrors.IssueInvalid));
            }

            //get issue
            var issue = await _db.Issues.GetAsync(model.Issue.Id);

            if (issue == null)
            {
                return(HttpNotFound(BusinessErrors.IssueInvalid));
            }

            try
            {
                await _transitionService.Transition(issue, model.Transition, model.SolverId, model.Comment);
            }
            catch (Exception ex)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, ex.Message));
            }

            return(RedirectToAction("Index", "Issue"));
        }
コード例 #2
0
        public async Task <ActionResult> Transition(int?id, IssueTransition?transition)
        {
            if (id == null || transition == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var issue = await _db.Issues.GetAsync(id.Value);

            if (issue == null)
            {
                return(HttpNotFound());
            }

            var model = new IssueTransitionViewModel
            {
                Issue      = issue,
                Transition = transition.Value
            };

            if (transition != IssueTransition.Assign)
            {
                return(View(model));
            }

            //if transition is assign we need solvers
            var solverRole = await _db.Roles.SingleOrDefaultAsync(r => r.Name.ToLower().Equals("solver"));

            var solvers = await _db.Users.FindAsync(u => u.Roles.Any(r => r.RoleId == solverRole.Id));

            var solverList = solvers as IList <ApplicationUser> ?? solvers.ToList();

            if (solvers == null || !solverList.Any())
            {
                return(new HttpStatusCodeResult(HttpStatusCode.NotFound, BusinessErrors.NoSolvers));
            }

            //make select list item
            model.Solvers = solverList.Select(solver => new SelectListItem
            {
                Text  = solver.UserName,
                Value = solver.Id
            }).ToList();

            return(View(model));
        }