Пример #1
0
        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);
        }
Пример #6
0
        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())));
        }