public async Task <JsonResult> GetCommonReassignees() { var workflowIds = ((await Request.BodyAsJsonObjectAsync <int[]>()) ?? Empty.IntArray).Distinct().ToArray(); var workflows = GetWorkflows(workflowIds); var dbt = new DetailsBulkToken(CurrentUser, DB, workflows); var eligibleReviewers = new List <GetEligibleReviewers_Result0>(); if (dbt.PotentialReviewersByWorkflowId.Count > 0) { foreach (var p in dbt.PotentialReviewersByWorkflowId.First().Value) { eligibleReviewers.Add(new GetEligibleReviewers_Result0 { UserId = p.UserId, UserName = MungeReviewerName(p.UserName, p.IsQualified), }); } foreach (var kvp in dbt.PotentialReviewersByWorkflowId.Skip(1)) { var erByUserId = kvp.Value.ToDictionaryOnConflictKeepLast(p => p.UserId, p => p); eligibleReviewers.Remove(eligibleReviewers.Where(er => !erByUserId.ContainsKey(er.UserId)).ToList()); foreach (var p in kvp.Value) { if (!p.IsQualified) { continue; } var er = eligibleReviewers.FirstOrDefault(z => z.UserId == p.UserId); if (er == null) { continue; } er.UserName = MungeReviewerName(p.UserName, false); er.IsQualified = false; } } } return(Json(eligibleReviewers.OrderBy(z => z.UserName))); }
public IActionResult Details(int?id, int workflowId, int uloRegionId, string wfDefintionOwnerName = "", bool isAdmin = false, DetailsBulkToken bulkToken = null) => ViewComponent(nameof(ReassignInfoViewComponent), new { id, workflowId, uloRegionId, wfDefintionOwnerName, isAdmin, bulkToken });
public async Task <IViewComponentResult> InvokeAsync(int?id, int workflowId, int uloRegionId, string wfDefintionOwnerName = "", bool isAdmin = false, DetailsBulkToken bulkToken = null) { var db = UloDb; var CurrentUser = GetCurrentUser(db); //Bulk Token bulkToken = (bulkToken != null && bulkToken.IsValid) ? bulkToken : new DetailsBulkToken(CurrentUser, db, workflowId); //RequestForReassignment RequestForReassignment requestForReassignment = null; if (id.HasValue) { requestForReassignment = await db.RequestForReassignment.Include(z => z.UnliqudatedWorkflowQuestions).FirstOrDefaultAsync(r => r.RequestForReassignmentID == id.Value); } //workflow var workflow = await db.Workflows.FindAsync(workflowId); var wfDesc = Manager.GetWorkflowDescriptionAsync(workflow).Result; string groupOwnerId; if (wfDefintionOwnerName == "") { var currentActivity = wfDesc.WebActionWorkflowActivities .FirstOrDefault(a => a.WorkflowActivityKey == workflow.CurrentWorkflowActivityKey); groupOwnerId = GetUserId(currentActivity.OwnerUserName, db); } else { groupOwnerId = GetUserId(wfDefintionOwnerName, db); } //User IList <SelectListItem> userSelectItems = new List <SelectListItem>(); 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 => 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(User.HasPermission(ApplicationPermissionNames.CanReassign) && userReassignRegions.Contains(uloRegionId)); }, PortalHelpers.MediumCacheTimeout )) { userSelectItems.Add(ToSelectListItem(bulkToken.CurrentUser)); } } else { userSelectItems = new List <SelectListItem>(); foreach (var p in bulkToken.PotentialReviewersByWorkflowId[workflowId]) { string text = MungeReviewerName(p.UserName, p.IsQualified); userSelectItems.Add(CreateUserSelectListItem(p.UserId, text)); } } if (workflow.OwnerUserId == GetUserId(CurrentUser.UserName, db)) { userSelectItems.Remove(userSelectItems.Where(z => z.Value == GetUserId(CurrentUser.UserName, db)).ToList()); } userSelectItems = userSelectItems.OrderBy(z => z.Text).ToList(); userSelectItems.Insert(0, CreateUserSelectListItem(GetUserId("Reassign Group", db), "Reassign Group")); // parameters values 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, null))); }