Ejemplo n.º 1
0
        private void AssignOwnerAsVerifier(RigOapChecklist checklist)
        {
            if (checklist.OwnerId == 0)
            {
                return;
            }

            var ownerId = checklist.OwnerId;
            var order   = (checklist.VerifiedBy.Any()) ? checklist.VerifiedBy?.Max(v => v.Order) ?? 0 : 0;

            var verifier = checklist.VerifiedBy?.FirstOrDefault(a => a.Role.Equals(VerifierRole.Assessor.ToString(), StringComparison.InvariantCultureIgnoreCase) && a.UserId != ownerId);

            if (verifier == null)
            {
                if (checklist.VerifiedBy == null)
                {
                    checklist.VerifiedBy = new List <RigOapChecklistVerifier>();
                }

                verifier = new RigOapChecklistVerifier()
                {
                    UserId = ownerId,
                    Role   = VerifierRole.Assessor.ToString(),
                    Order  = order + 1
                };

                checklist.VerifiedBy.Add(verifier);
            }
        }
        protected override void Execute(NativeActivityContext context)
        {
            base.Execute(context);

            var request = Reject.Get(context);

            RigOapChecklistVerifier rigOapVerifier = null;

            if (request.Inputs.TryGetValue("Verifier", out object verifierId))
            {
                rigOapVerifier = RigChecklist.VerifiedBy.FirstOrDefault(c => c.UserId == (int)verifierId);

                if (rigOapVerifier == null)
                {
                    return;
                }
            }

            UpdateTask(rigOapVerifier, RigChecklist.RigChecklistUniqueId, WorkflowStatus.Completed.ToString());

            rigOapVerifier.SignedOn = DateTime.UtcNow;

            rigOapVerifier.Status = WorkflowStatus.Rejected.ToString();

            rigOapVerifier.Comment = request.Reason;

            RigChecklist.Status = ChecklistStatus.Completed.ToString();

            RigChecklistService.Save(RigChecklist);
        }
        protected void UpdateTask(RigOapChecklistVerifier verifier, int rigChecklistId, string status)
        {
            var task = IrmaTaskService.GetBySourceAssignee("Oap - Workflow", rigChecklistId, verifier.UserId);

            if (task != null)
            {
                task.Status = status;
                IrmaTaskService.Update(task);
            }
        }
Ejemplo n.º 4
0
        protected override void Execute(NativeActivityContext context)
        {
            base.Execute(context);

            var request = Approval.Get(context);

            RigOapChecklistVerifier rigOapVerifier = null;

            if (request.Inputs.TryGetValue("Verifier", out object verifierId))
            {
                rigOapVerifier = RigChecklist.VerifiedBy.FirstOrDefault(c => c.isReviewer && c.UserId == (int)verifierId);
            }

            if (rigOapVerifier == null)
            {
                return;
            }

            rigOapVerifier.SignedOn = DateTime.UtcNow;

            rigOapVerifier.Status = WorkflowStatus.Completed.ToString();

            UpdateTask(rigOapVerifier, RigChecklist.RigChecklistUniqueId, WorkflowStatus.Completed.ToString());


            if (RigChecklist.VerifiedBy.Any(v => v.isReviewer && !v.Status.Equals(WorkflowStatus.Completed.ToString())))
            {
                var pendingReviewer = RigChecklist.VerifiedBy.OrderBy(v => v.Order).FirstOrDefault(v => v.isReviewer && !v.Status.Equals(WorkflowStatus.Completed.ToString()));

                if (pendingReviewer == null)
                {
                    throw new Exception("Verifier Order Status are invalid");
                }

                AddTask(pendingReviewer, RigChecklist.RigChecklistUniqueId, $"Waiting for {pendingReviewer.Role}, {pendingReviewer.User?.Name} to review", "Open");

                pendingReviewer.Status = WorkflowStatus.Pending.ToString();
            }
            else //All Reviewers and OIM Verified
            {
                RigChecklist.Status = ChecklistStatus.Completed.ToString();
                AllVerifiersApproved.Set(context, true);
            }

            RigChecklistService.Save(RigChecklist);
        }
        protected void AddTask(RigOapChecklistVerifier verifier, int rigChecklistId, string comment, string status)
        {
            IrmaTaskService.Add(new Models.Domain.IRMA.IrmaTask
            {
                Source           = "Oap - Workflow",
                SourceId         = rigChecklistId.ToString(),
                AssigneeId       = verifier.UserId,
                AssignedDateTime = DateTime.UtcNow,
                Comment          = comment,
                AssignedBy       = verifier.UserId,
                Status           = status
            });

            if (status.Equals("Open"))
            {
                var reviewStatus = verifier.Role.Equals(VerifierRole.Assessor.ToString(), StringComparison.InvariantCultureIgnoreCase) ? "signing" : "review";
                SendEmail(verifier.UserId, "Rig Checklist Verfication", $"You have been assigned to checklist {RigChecklist.RigChecklistUniqueId} for {reviewStatus}.");
            }
        }