Пример #1
0
        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);
        }
Пример #2
0
        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;
            }
        }
Пример #3
0
        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;
            }
        }
Пример #4
0
        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);
        }
Пример #5
0
        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));
            }
        }
Пример #6
0
        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));
            }
        }