public static WFExchangeData PostModirAction(ActionMethodParams actionMethodParams) { int contractId = actionMethodParams.InitialExchangeData[WfConstants.RelatedRecordIdKey].ConvertTo <int>(); WFExchangeData ex = (WFExchangeData)actionMethodParams.WorkflowInstanceState.ExchangeData; ContractRule contractRule = new ContractRule(UnitOfWork); DomainClasses.Contract.Contract contract = contractRule.Find(contractId); if (contract == null) { throw new OMFValidationException($" قرارداد با شناسه ثبت شده یافت نشد. شناسه: {contractId}"); } if (actionMethodParams.ContinueInfo.ActionId == (int)WorkFlowActionType.Taeed) { contract.Status = Status.ConfirmationContract; contractRule.Update(contract); contractRule.SaveChanges(); InvoiceRule invoiceRule = new InvoiceRule(UnitOfWork); invoiceRule.ConvertContractToInvoice(contract.ID, NoeFactor.RentFrom); } return(ex); }
public static WFExchangeData PostModirDakhiliAction(ActionMethodParams actionMethodParams) { try { int contractId = actionMethodParams.InitialExchangeData[WfConstants.RelatedRecordIdKey].ConvertTo <int>(); WFExchangeData ex = (WFExchangeData)actionMethodParams.WorkflowInstanceState.ExchangeData; ContractRule contractRule = new ContractRule(UnitOfWork); DomainClasses.Contract.Contract contract = contractRule.Find(contractId); if (contract == null) { throw new OMFValidationException($" قرارداد با شناسه ثبت شده یافت نشد. شناسه: {contractId}"); } if (actionMethodParams.ContinueInfo.ActionId == (int)WorkFlowActionType.TabdelPishghrardadBeGharardad) { using (var uow = new UnitOfWork()) { contract.Status = Status.ConfirmationPreContract; contract.ContractType = ContractType.RentTo; // var contract_Sazes = uow.Repository<Contract_Saze>().Queryable().Where(x => x.ContractID == contract.ID).ToList(); foreach (var contract_Saze in contract.Contract_Sazes ?? new List <Contract_Saze>()) { contract_Saze.Status = Status.ConfirmationPreContract; contract_Saze.ObjectState = OMF.Common.Enums.ObjectState.Modified; } uow.Repository <DomainClasses.Contract.Contract>().Update(contract); uow.SaveChanges(); } InvoiceRule invoiceRule = new InvoiceRule(UnitOfWork); var invoice = invoiceRule.ConvertContractToInvoice(contract.ID, NoeFactor.RentTo); var document = invoiceRule.RegisterDocument(invoice, invoice.OrganId); DocumentRule documentRule = new DocumentRule(); documentRule.Insert(document, invoice.OrganId); documentRule.SaveChanges(); } return(ex); } catch (Exception ex) { throw; } }
public static WFExchangeData PostModirAction(ActionMethodParams actionMethodParams) { try { int invoiceId = actionMethodParams.InitialExchangeData[WfConstants.RelatedRecordIdKey].ConvertTo <int>(); WFExchangeData ex = (WFExchangeData)actionMethodParams.WorkflowInstanceState.ExchangeData; InvoiceRule invoiceRule = new InvoiceRule(UnitOfWork); Invoice invoice = invoiceRule.Find(invoiceId); if (invoice == null) { throw new OMFValidationException($"فاکتوری با شناسه ثبت شده یافت نشد. شناسه: {invoiceId}"); } if (actionMethodParams.ContinueInfo.ActionId == (int)WorkFlowActionType.TaeedVaKhateme) { var document = invoiceRule.RegisterDocument(invoice, invoice.OrganId); DocumentRule documentRule = new DocumentRule(); documentRule.Insert(document, invoice.OrganId); documentRule.SaveChanges(); invoice.Status = NoeInsertFactor.WaitingToReceive; invoiceRule.Update(invoice); invoiceRule.SaveChanges(); } return(ex); } catch (Exception ex1) { throw; } }
public static WFExchangeData PostModirAction(ActionMethodParams actionMethodParams) { int contractSazeId = actionMethodParams.InitialExchangeData[WfConstants.RelatedRecordIdKey].ConvertTo <int>(); WFExchangeData ex = (WFExchangeData)actionMethodParams.WorkflowInstanceState.ExchangeData; Contract_SazeRule contract_SazeRule = new Contract_SazeRule(UnitOfWork); Contract_Saze contract_Saze = contract_SazeRule.Find(contractSazeId); if (contract_Saze == null) { throw new OMFValidationException($"رسانه قرارداد با شناسه ثبت شده یافت نشد. شناسه: {contractSazeId}"); } ContractRule contractRule = new ContractRule(UnitOfWork); DomainClasses.Contract.Contract contract = contractRule.Find(contract_Saze.ContractID); if (actionMethodParams.ContinueInfo.ActionId == (int)WorkFlowActionType.TaeedVaKhateme) { contract_Saze.Status = Status.ConfirmationContract; contract_SazeRule.Update(contract_Saze); contract_SazeRule.SaveChanges(); if (contract.Contract_Sazes.All(x => x.Status == Status.ConfirmationContract)) { contract.Status = Status.ConfirmationContract; contractRule.Update(contract); contractRule.SaveChanges(); } } return(ex); }
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)); } }
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)); } }