Exemplo n.º 1
0
        //public FunctionResult CalculateFormula(int formulaID, DP_DataView dataItem, DR_Requester requester, List<int> usedFormulaIDs = null)
        //{
        //    //DP_DataRepository data = new DP_DataRepository(mainDataItem.TargetEntityID, mainDataItem.TargetEntityAlias);
        //    //data.Properties = mainDataItem.Properties;
        //    return CalculateFormula(formulaID,dataItem, requester, usedFormulaIDs);
        //}
        public FunctionResult CalculateFormula(int formulaID, DP_BaseData dataItem, DR_Requester requester, List <int> usedFormulaIDs = null)
        {
            FunctionResult result       = null;
            var            formula      = bizFormula.GetFormula(requester, formulaID, true);
            var            mainDataItem = GetMainDateItem(requester, dataItem);

            if (formula.FormulaType == FormulaType.Linear)
            {
                var linearFormula = bizFormula.GetLinearFormula(requester, formulaID, false);
                result = CalculateFormula(linearFormula.FormulaText, mainDataItem, requester, usedFormulaIDs);
            }
            else
            {
                if (formula.FormulaType == FormulaType.CodeFunctionEntity)
                {
                    CodeFunctionHandler codeFunctionHandler = new CodeFunctionHandler();
                    result = codeFunctionHandler.GetCodeFunctionEntityResult(requester, formula.CodeFunctionEntityID, mainDataItem);
                }
                else if (formula.FormulaType == FormulaType.CodeFunction)
                {
                    CodeFunctionHandler codeFunctionHandler = new CodeFunctionHandler();
                    result = codeFunctionHandler.GetCodeFunctionResult(requester, formula.CodeFunctionID, mainDataItem);
                }
                else if (formula.FormulaType == FormulaType.DatabaseFunctionEntity)
                {
                    DatabaseFunctionHandler databaseFunctionHandler = new DatabaseFunctionHandler();
                    result = databaseFunctionHandler.GetDatabaseFunctionValue(requester, formula.DatabaseFunctionEntityID, mainDataItem);
                }
            }
            result.FormulaUsageParemeters = GetFormulaUsageParemeters(requester, formula, mainDataItem);

            return(result);
        }
        public FunctionResult GetFunctionValue(DR_Requester requester, int dbFunctionID, DP_DataRepository dataItem)
        {
            DatabaseFunctionHandler handler = new DatabaseFunctionHandler();

            return(handler.GetDatabaseFunctionValue(requester, dbFunctionID, dataItem));
        }
        public void DoAfterEditActionActivities(DR_Requester requester, List <EditQueryResultItem> items)
        {
            BizBackendActionActivity bizActionActivity = new BizBackendActionActivity();

            foreach (var editQuertyResult in items.Where(x => x.QueryItem.QueryType == Enum_QueryItemType.Insert || x.QueryItem.QueryType == Enum_QueryItemType.Update))
            {
                var queryItem = editQuertyResult.QueryItem;
                if (queryItem.QueryType == Enum_QueryItemType.Insert || queryItem.QueryType == Enum_QueryItemType.Update)
                {
                    var actionActivities = bizActionActivity.GetActionActivities(queryItem.DataItem.TargetEntityID, new List <Enum_EntityActionActivityStep>()
                    {
                        Enum_EntityActionActivityStep.AfterSave
                    }, false, true);
                    CodeFunctionHandler     codeFunctionHelper      = new CodeFunctionHandler();
                    DatabaseFunctionHandler databaseFunctionHandler = new DatabaseFunctionHandler();
                    foreach (var entityActionActivity in actionActivities)
                    {
                        if (entityActionActivity.CodeFunctionID != 0)
                        {
                            var resultFunction = codeFunctionHelper.GetCodeFunctionResult(requester, entityActionActivity.CodeFunctionID, queryItem.DataItem);
                            if (resultFunction.Exception != null)
                            {
                                editQuertyResult.AfterSaveActionActivitiesResult   = Enum_DR_SimpleResultType.ExceptionThrown;
                                editQuertyResult.AfterSaveActionActivitiesMessage += resultFunction.Exception.Message;
                            }
                        }
                        else if (entityActionActivity.DatabaseFunctionEntityID != 0)
                        {
                            ////اصلاح شود و با خصوصیات صدا زده شود یا حداقل لیست خصوصیات ارسال شود چون بهتره ارتباط
                            var resultFunction = databaseFunctionHandler.GetDatabaseFunctionValue(requester, entityActionActivity.DatabaseFunctionEntityID, queryItem.DataItem);
                            if (resultFunction.Exception != null)
                            {
                                editQuertyResult.AfterSaveActionActivitiesResult   = Enum_DR_SimpleResultType.ExceptionThrown;
                                editQuertyResult.AfterSaveActionActivitiesMessage += resultFunction.Exception.Message;
                            }
                        }
                    }
                }
            }
            foreach (var editQuertyResult in items.Where(x => x.QueryItem.QueryType == Enum_QueryItemType.Delete))
            {
                var queryItem        = editQuertyResult.QueryItem;
                var actionActivities = bizActionActivity.GetActionActivities(queryItem.TargetEntity.ID, new List <Enum_EntityActionActivityStep>()
                {
                    Enum_EntityActionActivityStep.AfterDelete
                }, false, true);
                CodeFunctionHandler     codeFunctionHelper      = new CodeFunctionHandler();
                DatabaseFunctionHandler databaseFunctionHandler = new DatabaseFunctionHandler();
                foreach (var entityActionActivity in actionActivities)
                {
                    if (entityActionActivity.CodeFunctionID != 0)
                    {
                        var resultFunction = codeFunctionHelper.GetCodeFunctionResult(requester, entityActionActivity.CodeFunctionID, queryItem.DataItem);
                        if (resultFunction.Exception != null)
                        {
                            editQuertyResult.AfterSaveActionActivitiesResult   = Enum_DR_SimpleResultType.ExceptionThrown;
                            editQuertyResult.AfterSaveActionActivitiesMessage += resultFunction.Exception.Message;
                        }
                    }
                    else if (entityActionActivity.DatabaseFunctionEntityID != 0)
                    {
                        var resultFunction = databaseFunctionHandler.GetDatabaseFunctionValue(requester, entityActionActivity.DatabaseFunctionEntityID, queryItem.DataItem);
                        if (resultFunction.Exception != null)
                        {
                            editQuertyResult.AfterSaveActionActivitiesResult   = Enum_DR_SimpleResultType.ExceptionThrown;
                            editQuertyResult.AfterSaveActionActivitiesMessage += resultFunction.Exception.Message;
                        }
                    }
                }
            }
            //    var deleteResult = new DR_ResultDelete();
            //new DeleteRequestManager().DoAfterDeleteActionActivities(requester, queryItems.Where(x => x.QueryType == Enum_QueryItemType.Delete), deleteResult);
            //result.Message += deleteResult.Message;
        }