public WorkflowViewModel(Workflow workflow, bool workflowAssignedToCurrentUser, IWorkflowDescription workflowDescription, ICollection <Document> uniqueMissingLineageDocuments) { Requires.NonNull(workflow, nameof(workflow)); Workflow = workflow; var questions = workflow.WorkflowUnliqudatedObjectsWorkflowQuestions.OrderBy(q => q.UnliqudatedWorkflowQuestionsId).ToList(); WorkflowAssignedToCurrentUser = workflowAssignedToCurrentUser; bool allowDocumentEdits = workflowAssignedToCurrentUser; var expectedDateForCompletion = workflow.TargetUlo.ExpectedDateForCompletion; if (workflowDescription != null) { QuestionsViewModel = new UloWfQuestionsViewModel(workflowDescription.GetJustificationByKey(), questions.Where(q => !q.Pending).ToList()); WorkflowDescriptionViewModel = new WorkflowDescriptionViewModel( workflow.WorkflowId, workflowDescription.WebActionWorkflowActivities.ToList(), workflow.CurrentWorkflowActivityKey); var pending = questions.Count > 0 && questions.Last().Pending ? questions.Last() : null; AdvanceViewModel = new AdvanceViewModel(WorkflowDescriptionViewModel.CurrentActivity.QuestionChoices, pending, workflow, expectedDateForCompletion, WorkflowDescriptionViewModel.CurrentActivity.ExpectedDateForCompletionEditable); allowDocumentEdits = workflowAssignedToCurrentUser && WorkflowDescriptionViewModel.CurrentActivity.AllowDocumentEdit; } //throw new NotImplementedException("old code in need for porting!"); RequestForReassignment = Workflow.WorkflowRequestForReassignments.OrderByDescending(z => z.RequestForReassignmentID).FirstOrDefault(); DocumentsViewModel = new DocumentsViewModel(workflow.WorkflowDocuments.ToList(), allowDocumentEdits, workflow.TargetUlo.DocType, uniqueMissingLineageDocuments, workflow.WorkflowId); }
public async Task <ActionResult> DeleteConfirmed(int id) { RequestForReassignment requestForReassignment = await DB.RequestForReassignments.FindAsync(id); DB.RequestForReassignments.Remove(requestForReassignment); await DB.SaveChangesAsync(); return(RedirectToIndex()); }
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(); } }
// GET: RequestForReassignments/Delete/5 public async Task <ActionResult> Delete(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } RequestForReassignment requestForReassignment = await DB.RequestForReassignments.FindAsync(id); if (requestForReassignment == null) { return(HttpNotFound()); } return(View(requestForReassignment)); }
private async Task <IActionResult> RequestReassign(Workflow wf, UnliqudatedObjectsWorkflowQuestion question, string suggestedReviewerId) { var requestForReassignment = new RequestForReassignment { SuggestedReviewerId = suggestedReviewerId, UnliqudatedWorkflowQuestionsId = question.UnliqudatedWorkflowQuestionsId, WorkflowId = wf.WorkflowId, IsActive = true }; DB.RequestForReassignment.Add(requestForReassignment); var ret = await Manager.RequestReassignAsync(wf); await DB.SaveChangesAsync(); return(ret); }
public IViewComponentResult Invoke(int?id, int workflowId, int uloRegionId, string wfDefintionOwnerName = "", bool isAdmin = false, RequestForReassignmentsController.DetailsBulkToken bulkToken = null) { bulkToken = (bulkToken != null && bulkToken.IsValid) ? bulkToken : new RequestForReassignmentsController.DetailsBulkToken(CurrentUser, DB, workflowId); var db = bulkToken.DB; RequestForReassignment requestForReassignment = null; if (id.HasValue) { requestForReassignment = db.RequestForReassignment.Include(z => z.UnliqudatedWorkflowQuestions).FirstOrDefault(r => r.RequestForReassignmentID == id.Value); } var workflow = db.Workflows.Find(workflowId); var wfDesc = Manager.GetWorkflowDescriptionAsync(workflow).Result; string groupOwnerId; if (wfDefintionOwnerName == "") { var currentActivity = wfDesc.WebActionWorkflowActivities .FirstOrDefault(a => a.WorkflowActivityKey == workflow.CurrentWorkflowActivityKey); groupOwnerId = PortalHelpers.GetUserId(currentActivity.OwnerUserName); } else { groupOwnerId = PortalHelpers.GetUserId(wfDefintionOwnerName); } IList <SelectListItem> userSelectItems; if (PortalHelpers.UseOldGetEligibleReviewersAlgorithm) { var prohibitedUserIds = bulkToken.ProhibitedOwnerIdsByWorkflowId[workflowId]; userSelectItems = Cacher.FindOrCreateValue( Cache.CreateKey(groupOwnerId, uloRegionId, "fdsfdsaf"), () => db.UserUsers .Where(uu => uu.ParentUserId == groupOwnerId && uu.RegionId == uloRegionId && uu.ChildUser.UserType == AspNetUser.UserTypes.Person) .Select(uu => new { UserName = uu.ChildUser.UserName, UserId = uu.ChildUserId }).ToList(), PortalHelpers.MediumCacheTimeout ).ConvertAll(z => UserHelpers.CreateUserSelectListItem(z.UserId, z.UserName, prohibitedUserIds.Contains(z.UserId))).ToList(); if (Cacher.FindOrCreateValue( Cache.CreateKey(uloRegionId, User.Identity.Name), () => { var userReassignRegions = UserHelpers.GetReassignmentGroupRegions(User); return(true); //User.HasClaim("Application", ApplicationPermissionNames.CanReassign.ToString()) && userReassignRegions.Contains(uloRegionId); //sreen : need change back to this statement after Claims fix }, PortalHelpers.MediumCacheTimeout )) { userSelectItems.Add(UserHelpers.ToSelectListItem(bulkToken.CurrentUser)); } } else { userSelectItems = new List <SelectListItem>(); foreach (var p in bulkToken.PotentialReviewersByWorkflowId[workflowId]) { string text = MungeReviewerName(p.UserName, p.IsQualified); userSelectItems.Add(UserHelpers.CreateUserSelectListItem(p.UserId, text)); } } if (workflow.OwnerUserId == CurrentUserId) { userSelectItems.Remove(userSelectItems.Where(z => z.Value == CurrentUserId).ToList()); } userSelectItems = userSelectItems.OrderBy(z => z.Text).ToList(); userSelectItems.Insert(0, UserHelpers.CreateUserSelectListItem(UserHelpers.ReassignGroupUserId, UserHelpers.ReassignGroupUserName)); var requestForReassignmentId = requestForReassignment?.RequestForReassignmentID; var suggestedReviewerId = requestForReassignment != null ? requestForReassignment.SuggestedReviewerId : ""; var justificationKey = requestForReassignment?.UnliqudatedWorkflowQuestions.JustificationKey; var comments = requestForReassignment != null ? requestForReassignment.UnliqudatedWorkflowQuestions.Comments : ""; var detailsView = isAdmin ? "_DetailsMasterList.cshtml" : "_Details.cshtml"; return(View("~/Views/Ulo/Details/Workflow/RequestForReassignments/" + detailsView, new RequestForReassignmentViewModel(suggestedReviewerId, justificationKey, requestForReassignmentId, comments, workflowId, uloRegionId, userSelectItems, wfDesc.GetResassignmentJustifications()))); }