Beispiel #1
0
        IXapEvaluationService IXapValidationProvider.LoadRules <T>(T obj, string ruleType)
        {
            IXapDataProvider db      = null;
            IXapRuleSet      ruleSet = null;
            IXapRule         rule    = null;

            try {
                string dbEnvironment  = string.Empty;
                string lobName        = string.Empty;
                string componentName  = string.Empty;
                string ruleDependents = string.Empty;

                GetDbContext <T>(obj, out dbEnvironment, out lobName, out componentName);

                db = DbFactory.Instance.Db(dbEnvironment, lobName, "CORE.SelectRules");

                XapDataReader dr = db.AddParameter(DbFactory.Instance.DbParameter("RuleType", ruleType))
                                   .AddParameter(DbFactory.Instance.DbParameter("LobName", lobName))
                                   .AddParameter(DbFactory.Instance.DbParameter("ComponentName", componentName))
                                   .AddParameter(DbFactory.Instance.DbParameter("NameSpace", obj.GetType().FullName))
                                   .ExecuteReader();

                while (dr.Read())
                {
                    ruleSet = evaluationService.GetRuleSet(dr.GetString("RuleSet"));
                    evaluationService.AddRuleSet(ruleSet);

                    rule                 = ruleSet.GetRule(dr.GetString("RuleName"));
                    rule.RuleType        = dr.GetString("RuleType");
                    rule.RuleSyntax      = dr.GetString("RuleSyntax");
                    rule.RuleDescription = dr.GetString("RuleDesc");
                    rule.RuleMessage     = dr.GetString("RuleMessage");

                    IXapRuleVariable ruleVariable = EvaluationFactory.Instance.CreateRuleVariable(dr.GetString("PropertyName"));
                    rule.AddRuleVariable(ruleVariable);

                    ruleDependents = dr.GetString("Dependencies");

                    string[] dependents = ruleDependents.Split(',');
                    for (int i = 0; i < dependents.Length; i++)
                    {
                        IXapRuleVariable variableDependent = EvaluationFactory.Instance.CreateRuleVariable(dependents[i]);
                        rule.AddRuleVariable(variableDependent);
                    }
                    ruleSet.AddRule(rule);
                }

                return(evaluationService);
            }catch (XapException ex) {
                throw;
            }catch (Exception ex) {
                throw new XapException($"Error loading validation rules for {obj.GetType().FullName}", ex);
            } finally {
                db.CloseConnection();
            }
        }
Beispiel #2
0
        private void DoInsertUpdate <T>(T obj, PocoOperationType operationType)
        {
            bool          setParameter = false;
            IXapPocoField pocoField;

            try {
                foreach (PropertyInfo prop in PropertyService.Instance.GetInterfaceProperties <T>(obj).GetProperties())
                {
                    pocoField = pocoMap.GetField(prop.ShortName());
                    switch (operationType)
                    {
                    case PocoOperationType.Insert:
                        setParameter = pocoField == null ? false : pocoField.DoesInsert;
                        break;

                    case PocoOperationType.Select:
                        setParameter = pocoField == null ? false : pocoField.DoesSelect;
                        break;

                    case PocoOperationType.Update:
                        setParameter = pocoField == null ? false : pocoField.DoesUpdate;
                        break;

                    case PocoOperationType.Delete:
                        setParameter = pocoField == null ? false : pocoField.DoesDelete;
                        break;

                    case PocoOperationType.SelectList:
                        setParameter = pocoField == null ? false : pocoField.DoesSelectList;
                        break;
                    }

                    if (setParameter)
                    {
                        object objValue = prop.GetValue(obj, null);

                        if (prop.PropertyType == typeof(string))
                        {
                            if (pocoMap.GetField(prop.ShortName()).DataType == "SmartDate")
                            {
                                _dataProvider.AddParameter(DbFactory.Instance.DbParameter(pocoMap.GetField(prop.ShortName()).DbColumn, SmartDate.Parse(objValue.ToString()).DBValue));
                            }
                            else
                            {
                                _dataProvider.AddParameter(DbFactory.Instance.DbParameter(pocoMap.GetField(prop.ShortName()).DbColumn, objValue.ToString()));
                            }
                        }
                        else if (prop.PropertyType == typeof(SmartDate))
                        {
                            _dataProvider.AddParameter(DbFactory.Instance.DbParameter(pocoMap.GetField(prop.ShortName()).DbColumn, SmartDate.Parse(objValue.ToString()).DBValue));
                        }
                        else if (prop.PropertyType == typeof(bool))
                        {
                            _dataProvider.AddParameter(DbFactory.Instance.DbParameter(pocoMap.GetField(prop.ShortName()).DbColumn, objValue.ToString().ConvertValue <bool>()));
                        }
                        else if (prop.PropertyType == typeof(int))
                        {
                            _dataProvider.AddParameter(DbFactory.Instance.DbParameter(pocoMap.GetField(prop.ShortName()).DbColumn, objValue.ToString().ConvertValue <int>()));
                        }
                        else if (prop.PropertyType == typeof(long))
                        {
                            _dataProvider.AddParameter(DbFactory.Instance.DbParameter(pocoMap.GetField(prop.ShortName()).DbColumn, objValue.ToString().ConvertValue <long>()));
                        }
                        else if (prop.PropertyType == typeof(short))
                        {
                            _dataProvider.AddParameter(DbFactory.Instance.DbParameter(pocoMap.GetField(prop.ShortName()).DbColumn, objValue.ToString().ConvertValue <short>()));
                        }
                        else if (prop.PropertyType == typeof(double))
                        {
                            _dataProvider.AddParameter(DbFactory.Instance.DbParameter(pocoMap.GetField(prop.ShortName()).DbColumn, objValue.ToString().ConvertValue <double>()));
                        }
                        else if (prop.PropertyType == typeof(decimal))
                        {
                            _dataProvider.AddParameter(DbFactory.Instance.DbParameter(pocoMap.GetField(prop.ShortName()).DbColumn, objValue.ToString().ConvertValue <decimal>()));
                        }
                    }
                }
            } catch (Exception ex) {
                throw new XapException($"Error setting parameter values {obj.GetType().FullName}", ex);
            }
        }