Example #1
0
        /// <summary>
        /// 驳回
        /// </summary>
        /// <param name="stepApprovaObj">当前节点信息</param>
        /// <param name="recordsobj">当前审核人信息</param>
        /// <param name="msg"></param>
        /// <returns></returns>
        private bool Reject(WorkflowApprovalStep stepApprovaObj, WorkflowApprovalRecords recordsobj, ref string msg)
        {
            bool status = false;
            //添加当前节点审核的操作记录
            WorkflowApprovalRecords objRecords = new WorkflowApprovalRecords
            {
                DataType               = 2,
                AuditidTime            = DateTime.Now,
                Memo                   = "审批人 " + recordsobj.AuditidUserName + " 驳回了申请",
                WorkflowApprovalStepId = stepApprovaObj.Id
            };

            status = _workflowApprovalRecordsRepository.Add(objRecords) > 0 ? true : false;

            //修改当前节点的节点状态和人员审核状态
            status = _workflowApprovalStepRepository.Update(s => s.Id == stepApprovaObj.Id, s => new WorkflowApprovalStep {
                AuditNo = false
            });
            _workflowApprovalRecordsRepository.Update(s => s.WorkflowApprovalStepId == stepApprovaObj.Id && s.DataType == 1, s => new WorkflowApprovalRecords {
                AudioStatus = AudioStatus.UnApprovalInfo, AuditidTime = null
            });
            //修改上个节点的节点状态和人员审核状态
            var prevPassNo = _workflowApprovalStepRepository.Entites.Where(s => s.PassType != PassType.Copy && s.WorkflowBusinessId == stepApprovaObj.WorkflowBusinessId && s.PassNo < stepApprovaObj.PassNo).OrderByDescending(s => s.PassNo).FirstOrDefault();

            status = _workflowApprovalStepRepository.Update(s => s.Id == prevPassNo.Id, s => new WorkflowApprovalStep {
                AuditNo = true
            });

            status = _workflowApprovalRecordsRepository.Update(s => s.WorkflowApprovalStepId == prevPassNo.Id && s.DataType == 1, s => new WorkflowApprovalRecords {
                AudioStatus = AudioStatus.WaitAgree, AuditidTime = null
            });
            return(status);
        }
        protected void Setup()
        {
            var options = new DbContextOptionsBuilder <WorkflowDataContext>()
                          .UseInMemoryDatabase(databaseName: "workflow-tets")
                          .Options;

            var mockHttpContextAccessor = new Mock <IHttpContextAccessor>();
            var user = new ClaimsPrincipal(new ClaimsIdentity(new Claim[]
            {
                new Claim(ClaimTypes.Name, "admin"),
                new Claim(ClaimTypes.NameIdentifier, "1"),
            }, "mock"));

            var context = new DefaultHttpContext {
                User = user
            };

            mockHttpContextAccessor.Setup(_ => _.HttpContext).Returns(context);

            Context = new WorkflowDataContext(options, mockHttpContextAccessor.Object);

            waitingApprovalStatus = new WorkflowStatus {
                Name = "Waiting Approval"
            };
            approvedStatus = new WorkflowStatus {
                Name = "Approved"
            };
            rejectedStatus = new WorkflowStatus {
                Name = "Reject"
            };

            Type = new WorkflowType {
                Name = "Workflow", IsActive = true
            };
            var approvedStep = new WorkflowApprovalStep {
                IsActive = true, WorkflowStatus = approvedStatus
            };
            var rejectedStep = new WorkflowApprovalStep {
                IsActive = true, WorkflowStatus = rejectedStatus
            };
            var firstStep = new WorkflowApprovalStep
            {
                NextStepApproved = approvedStep,
                NextStepRejected = rejectedStep,
                WorkflowStatus   = waitingApprovalStatus,
                IsActive         = true,
                IsFirstStep      = true
            };

            Type.Steps.Add(firstStep);
            Type.Steps.Add(approvedStep);
            Type.Steps.Add(rejectedStep);

            Context.WorkflowTypes.Add(Type);
            Context.SaveChanges();

            mockAuthService = new Mock <IAuthService>();
            mockAuthService.Setup(_ => _.HasRoles(It.IsAny <string>(), It.IsAny <IEnumerable <int> >())).Returns(true);

            var cache = new MemoryCache(new MemoryCacheOptions());

            workflowCache = new WorkflowCache(cache, Context);



            eventBus = new EventBus(new MockServiceProvider());
        }