public async Task <ActionResult> RequestReassign( int workflowId, [Bind(Include = nameof(RequestForReassignmentViewModel.WorkflowId) + "," + nameof(RequestForReassignmentViewModel.SuggestedReviewerId) + "," + nameof(RequestForReassignmentViewModel.JustificationKey) + "," + nameof(RequestForReassignmentViewModel.Comments))] RequestForReassignmentViewModel requestForReassignmentViewModel) { if (ModelState.IsValid) { var wf = await FindWorkflowAsync(workflowId); if (wf == null) { return(HttpNotFound()); } var question = new UnliqudatedObjectsWorkflowQuestion { JustificationKey = requestForReassignmentViewModel.JustificationKey, UserId = CurrentUserId, Answer = UnliqudatedObjectsWorkflowQuestion.CommonAnswers.RequestForReasssignment, WorkflowId = workflowId, Comments = requestForReassignmentViewModel.Comments, WorkflowRowVersion = wf.WorkflowRowVersion, CreatedAtUtc = DateTime.UtcNow }; DB.UnliqudatedObjectsWorkflowQuestions.Add(question); await DB.SaveChangesAsync(); return(await RequestReassign(wf, question, requestForReassignmentViewModel.SuggestedReviewerId)); } return(PartialView("~/Views/Ulo/Details/Workflow/RequestForReassignments/_Details.cshtml", requestForReassignmentViewModel)); }
public async Task <ActionResult> ReassignFromList( int workflowId, [Bind(Include = nameof(RequestForReassignmentViewModel.SuggestedReviewerId) + "," + nameof(RequestForReassignmentViewModel.Comments) + "," + nameof(RequestForReassignmentViewModel.JustificationKey) )] RequestForReassignmentViewModel requestForReassignmentViewModel) { if (ModelState.IsValid) { return(await HandleReassignmentRequestAsync(workflowId, requestForReassignmentViewModel) ?? RedirectToHome()); } return(Redirect(Request.UrlReferrer?.ToString())); }
public async Task <IActionResult> ReassignFromList( int workflowId, [Bind(new[] { nameof(RequestForReassignmentViewModel.SuggestedReviewerId), nameof(RequestForReassignmentViewModel.Comments), nameof(RequestForReassignmentViewModel.JustificationKey) } )] RequestForReassignmentViewModel requestForReassignmentViewModel) { if (ModelState.IsValid) { return(await HandleReassignmentRequestAsync(workflowId, requestForReassignmentViewModel) ?? RedirectToHome()); } return(Redirect(Request.Headers["Referer"].ToString())); }
public async Task <ActionResult> Reassign( int workflowId, [Bind(Include = nameof(RequestForReassignmentViewModel.SuggestedReviewerId) + "," + nameof(RequestForReassignmentViewModel.Comments) + "," + nameof(RequestForReassignmentViewModel.JustificationKey) )] RequestForReassignmentViewModel requestForReassignmentViewModel) { if (ModelState.IsValid) { return(await HandleReassignmentRequestAsync(workflowId, requestForReassignmentViewModel) ?? RedirectToHome()); } return(PartialView("~/Views/Ulo/Details/Workflow/RequestForReassignments/_Details.cshtml", requestForReassignmentViewModel)); }
private async Task <IActionResult> HandleReassignmentRequestAsync(int workflowId, RequestForReassignmentViewModel m) { var wf = await FindWorkflowAsync(workflowId, false); if (wf == null) { return(NotFound()); } var canHandleReassignment = true; User.HasPermission(ApplicationPermissionNames.CanReassign); if (!canHandleReassignment && m.SuggestedReviewerId == CurrentUserId) { canHandleReassignment = UserHelpers.GetUserGroupRegions(User, wf.OwnerUserId).Contains(wf.TargetUlo.RegionId); } var rfr = new RequestForReassignment { UnliqudatedWorkflowQuestions = new UnliqudatedObjectsWorkflowQuestion { JustificationKey = m.JustificationKey, UserId = CurrentUserId, Answer = UnliqudatedObjectsWorkflowQuestion.CommonAnswers.Reassignment, WorkflowId = workflowId, Comments = m.Comments, WorkflowRowVersion = wf.WorkflowRowVersion, CreatedAtUtc = DateTime.UtcNow }, WorkflowId = workflowId, SuggestedReviewerId = m.SuggestedReviewerId, IsActive = !canHandleReassignment }; DB.RequestForReassignment.Add(rfr); try { if (!canHandleReassignment && wf.OwnerUserId == CurrentUserId) { wf.OwnerUserId = UserHelpers.ReassignGroupUserId; } else if (canHandleReassignment) { return(await Manager.ReassignAsync(wf, m.SuggestedReviewerId, UloController.ActionNames.MyTasks)); } return(null); } finally { await DB.SaveChangesAsync(); } }