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); } }
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}."); } }