コード例 #1
0
ファイル: CostController.cs プロジェクト: manyar98/Zhivar
        public async Task <HttpResponseMessage> StartWorkFlow(WorkFlowBusiClass entity, bool shoulSend = false)
        {
            SecurityManager.ThrowIfUserContextNull();
            try
            {
                using (UnitOfWork uow = new UnitOfWork())
                {
                    #region Validate


                    var cost = BusinessContext.GetBusinessRule <Cost>(this.BusinessRule.OperationAccess, this.BusinessRule.UnitOfWork)
                               .Queryable().Where(dr => dr.ID == entity.ID).SingleOrDefault();


                    if (cost.Status != ZhivarEnums.CostStatus.Temporary && !shoulSend)
                    {
                        throw new OMFValidationException("این رسید هزینه قبلا ارسال شده است.");
                    }

                    var workFlowQuery = uow.Repository <WorkflowInfo>()
                                        .Queryable()
                                        .Where(wf => wf.Code == entity.Code)
                                        .SingleOrDefault();
                    var workFlowID = workFlowQuery.ID;

                    var instanceQuery = uow.RepositoryAsync <WorkflowInstance>()
                                        .Queryable()
                                        .Where(ins => ins.RelatedRecordId == entity.ID &&
                                               ins.WorkflowInfoId == workFlowID);
                    #endregion



                    dynamic result1;

                    result1 = await WorkflowManager.StartWorkflowAsync(new WorkflowStartInfo()
                    {
                        Code                  = entity.Code,
                        ExchangeData          = entity.ExchangeData,
                        InstanceTitle         = entity.InstanceTitle,
                        RelatedRecordId       = entity.ID,
                        StarterOrganizationId = entity.OrganizationID,
                        StarterUserId         = SecurityManager.CurrentUserContext.UserId,
                        StartType             = OMF.Workflow.Enums.StartType.Request
                    });

                    if (result1.Code == 1)
                    {
                        var workflowInstance = uow.Repository <WorkflowInstance>().Queryable()
                                               .Where(ins => ins.RelatedRecordId == entity.ID &&
                                                      ins.Status == WfStateStatus.Open
                                                      ).SingleOrDefault();
                        WFExchangeData ex = (WFExchangeData)workflowInstance.InitialExchangeData;

                        ex[WfConstants.StarterOrganizationIdKey] = Convert.ToString(entity.OrganizationID);
                        workflowInstance.InitialExchangeData     = (string)ex;
                        workflowInstance.ObjectState             = ObjectState.Modified;
                        uow.RepositoryAsync <WorkflowInstance>().Update(workflowInstance);
                        await uow.SaveChangesAsync();
                    }



                    if (result1.Code == 1)
                    {
                        //InvoiceRule invoiceRule = new InvoiceRule();
                        //await invoiceRule.UpdateVaziatInvoice(entity.ID, NoeInsertFactor.waitingForConfirmation);

                        return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = (int)ResultCode.Successful, data = new { records = "" } }));
                    }
                    else
                    {
                        return(Request.CreateResponse(HttpStatusCode.InternalServerError, new { resultCode = (int)ResultCode.Exception, data = new { records = "" } }));
                    }
                }
            }
            catch (Exception ex)
            {
                return(await this.HandleExceptionAsync(ex));
            }
        }
コード例 #2
0
ファイル: InvoiceController.cs プロジェクト: manyar98/Zhivar
        public async Task <HttpResponseMessage> StartWorkFlow(WorkFlowBusiClass entity)
        {
            SecurityManager.ThrowIfUserContextNull();
            try
            {
                using (UnitOfWork uow = new UnitOfWork())
                {
                    #region Validate


                    var invoice = BusinessContext.GetBusinessRule <Invoice>(this.BusinessRule.OperationAccess, this.BusinessRule.UnitOfWork)
                                  .Queryable().Where(dr => dr.ID == entity.ID).SingleOrDefault();


                    if (invoice.Status != NoeInsertFactor.Temporary)
                    {
                        throw new OMFValidationException("این فاکتور قبلا ارسال شده است.");
                    }

                    var workFlowQuery = uow.Repository <WorkflowInfo>()
                                        .Queryable()
                                        .Where(wf => wf.Code == entity.Code)
                                        .SingleOrDefault();
                    var workFlowID = workFlowQuery.ID;

                    var instanceQuery = uow.RepositoryAsync <WorkflowInstance>()
                                        .Queryable()
                                        .Where(ins => ins.RelatedRecordId == entity.ID &&
                                               ins.WorkflowInfoId == workFlowID);
                    #endregion

                    //if (vaziatDarkhast == Enums.VaziatDarkhast.SabteDarkhast && !await instanceQuery.Any())
                    //{

                    //   var darkhastRule = new DarkhastRule();

                    //   var validateStartWorkflow = new ValidateStartWorkflow();

                    //     var IsPaymentRequire = await darkhastRule.HasPaymentRequire(entity.NoeDarkhastID);

                    //validateStartWorkflow.Validate(new ValidateData
                    //{
                    //    darkhastID = entity.ID,
                    //    noeDarkhastID = entity.NoeDarkhastID,
                    //    IsPaymentRequire = IsPaymentRequire,
                    //    organID = entity.OrganizationID
                    //});

                    //  var validateExchangeData = new ValidateExchangeData();
                    //entity.ExchangeData = validateExchangeData.CreateExchange(new ValidateExData
                    //{
                    //    RelatedRecordID = entity.ID,
                    //    noeDarkhastID = entity.NoeDarkhastID,
                    //    ExchangeData = entity.ExchangeData,
                    //});

                    dynamic result1;
                    //if (entity.NoeDarkhastID == Enums.NoeDarkhastEnum.ENTEGHAL_SARMAIEH_ZABDARI)
                    //{
                    //    var daroukhanehID = Convert.ToInt32(entity.ExchangeData["daroukhanehShakhsIDDovom"]);
                    //    var organizationID = uow.Repository<Sherkat>().Queryable()
                    //                                  .Where(dr => dr.ID == daroukhanehID)
                    //                                  .SingleOrDefault().OrganID;
                    result1 = await WorkflowManager.StartWorkflowAsync(new WorkflowStartInfo()
                    {
                        Code                  = entity.Code,
                        ExchangeData          = entity.ExchangeData,
                        InstanceTitle         = entity.InstanceTitle,
                        RelatedRecordId       = entity.ID,
                        StarterOrganizationId = entity.OrganizationID,
                        StarterUserId         = SecurityManager.CurrentUserContext.UserId,
                        StartType             = OMF.Workflow.Enums.StartType.Request
                    });

                    if (result1.Code == 1)
                    {
                        var workflowInstance = uow.Repository <WorkflowInstance>().Queryable()
                                               .Where(ins => ins.RelatedRecordId == entity.ID &&
                                                      ins.Status == WfStateStatus.Open
                                                      ).SingleOrDefault();
                        WFExchangeData ex = (WFExchangeData)workflowInstance.InitialExchangeData;

                        ex[WfConstants.StarterOrganizationIdKey] = Convert.ToString(entity.OrganizationID);
                        workflowInstance.InitialExchangeData     = (string)ex;
                        workflowInstance.ObjectState             = ObjectState.Modified;
                        uow.RepositoryAsync <WorkflowInstance>().Update(workflowInstance);
                        await uow.SaveChangesAsync();
                    }



                    if (result1.Code == 1)
                    {
                        InvoiceRule invoiceRule = new InvoiceRule();
                        await invoiceRule.UpdateVaziatInvoice(entity.ID, NoeInsertFactor.waitingForConfirmation);

                        return(Request.CreateResponse(HttpStatusCode.OK, new { resultCode = (int)ResultCode.Successful, data = new { records = "" } }));
                    }
                    else
                    {
                        return(Request.CreateResponse(HttpStatusCode.InternalServerError, new { resultCode = (int)ResultCode.Exception, data = new { records = "" } }));
                    }
                }
            }
            catch (Exception ex)
            {
                return(await this.HandleExceptionAsync(ex));
            }
        }