示例#1
0
 public void DynDefaultValues(FileManager fm, DataRow dr, appDB.ddTableRow myDefinition)
 {
     //check for defined fields that have a systemdefault value
     foreach (appDB.ddFieldRow dfr in myDefinition.GetddFieldRows())
     {
         if (!dfr.IsDefaultSystemValueNull())
         {
             dr[dfr.DBFieldName] = fm.GetDefaultValue(dfr.DefaultSystemValue);
         }
     }
 }
示例#2
0
        private void RunRule(DataColumn columnToCheck, DataRow rowToCheck, Dictionary <string, appDB.ddFieldRow> ruleColumnMap, FileManager fm, appDB.ddFieldRow fieldDefinition, appDB.ddRuleRow ruleToRun)
        {
            string Left = "Left" + myA.AppMan.Language;

            switch (ruleToRun.RuleTypeId)
            {
            case 0:    //code based
                ExecuteCodeRule(columnToCheck, rowToCheck, fm, ruleToRun);
                break;

            case 1:    //required
                if (rowToCheck.IsNull(columnToCheck))
                {
                    throw new RequiredException(fieldDefinition[Left].ToString());
                }
                break;

            case 2:    //acseries based
                EvaluateRule(fm, ruleToRun, rowToCheck);
                break;

            case 3:    //domain
                if (!rowToCheck.IsNull(columnToCheck))
                {
                    if (!fm.Codes(ruleToRun.Val1).Rows.Contains(rowToCheck[columnToCheck]))
                    {
                        throw new AtriumException(atriumBE.Properties.Resources.IsNotValid, fieldDefinition[Left].ToString());
                    }
                }
                break;

            case 4:    //related - must be field on same record
                if (rowToCheck.IsNull(ruleToRun.Val1))
                {
                    throw new RelatedException(fieldDefinition.LeftEng, ruleColumnMap[ruleToRun.Val1][Left].ToString());
                }

                break;

            case 5:    //old domain check
                if (!rowToCheck.IsNull(columnToCheck))
                {
                    if (!myA.CheckDomain(rowToCheck[columnToCheck].ToString(), fm.Codes(ruleToRun.Val1)))
                    {
                        throw new AtriumException(atriumBE.Properties.Resources.BadDomainValue, fieldDefinition[Left].ToString(), fieldDefinition.ddTableRow["Description" + myA.AppMan.Language].ToString(), ruleToRun.Val1);
                    }
                }
                break;

            case 6:    //valid date
                if (!rowToCheck.IsNull(columnToCheck))
                {
                    DateTime beginDate;
                    DateTime endDate;
                    DateTime dateValue = (DateTime)rowToCheck[columnToCheck];
                    string   name1     = ruleToRun.Val1;
                    string   name2     = ruleToRun.Val2;

                    if (ruleColumnMap.ContainsKey(ruleToRun.Val1))
                    {
                        beginDate = (DateTime)rowToCheck[ruleColumnMap[ruleToRun.Val1].DBFieldName];
                        name1     = ruleColumnMap[ruleToRun.Val1][Left].ToString();
                    }
                    else
                    {
                        beginDate = (DateTime)fm.GetDefaultValue(ruleToRun.Val1);
                    }

                    if (ruleColumnMap.ContainsKey(ruleToRun.Val2))
                    {
                        endDate = (DateTime)rowToCheck[ruleColumnMap[ruleToRun.Val1].DBFieldName];
                        name2   = ruleColumnMap[ruleToRun.Val2][Left].ToString();
                    }
                    else
                    {
                        endDate = (DateTime)fm.GetDefaultValue(ruleToRun.Val2);
                    }


                    if (dateValue < beginDate || dateValue > endDate)
                    {
                        throw new DateBetweenException(fieldDefinition[Left].ToString(), name1, beginDate.ToShortDateString(), name2, endDate.ToShortDateString());
                    }
                }
                break;

            case 7:    //numeric range
                if (!rowToCheck.IsNull(columnToCheck))
                {
                    int v1, v2, thisVal;
                    if (ruleColumnMap.ContainsKey(ruleToRun.Val1))
                    {
                        v1 = System.Convert.ToInt32(rowToCheck[ruleColumnMap[ruleToRun.Val1].DBFieldName]);
                    }
                    else
                    {
                        v1 = System.Convert.ToInt32(fm.GetDefaultValue(ruleToRun.Val1));
                    }

                    if (ruleColumnMap.ContainsKey(ruleToRun.Val2))
                    {
                        v2 = System.Convert.ToInt32(rowToCheck[ruleColumnMap[ruleToRun.Val1].DBFieldName]);
                    }
                    else
                    {
                        v2 = System.Convert.ToInt32(fm.GetDefaultValue(ruleToRun.Val2));
                    }

                    thisVal = System.Convert.ToInt32(rowToCheck[columnToCheck]);

                    if (thisVal < v1 || thisVal > v2)
                    {
                        throw new AtriumException("Outside numeric range");
                    }
                }
                break;

            case 8:    //string length range
                if (!rowToCheck.IsNull(columnToCheck))
                {
                    int v1, v2, thisVal;
                    if (ruleColumnMap.ContainsKey(ruleToRun.Val1))
                    {
                        v1 = (int)rowToCheck[ruleColumnMap[ruleToRun.Val1].DBFieldName];
                    }
                    else
                    {
                        v1 = (int)fm.GetDefaultValue(ruleToRun.Val1);
                    }

                    if (ruleColumnMap.ContainsKey(ruleToRun.Val2))
                    {
                        v2 = (int)rowToCheck[ruleColumnMap[ruleToRun.Val1].DBFieldName];
                    }
                    else
                    {
                        v2 = (int)fm.GetDefaultValue(ruleToRun.Val2);
                    }

                    thisVal = rowToCheck[columnToCheck].ToString().Length;

                    if (thisVal < v1 || thisVal > v2)
                    {
                        throw new AtriumException("Length out of range");
                    }
                }
                break;

            case 99:    //action
                if (!ruleToRun.IsACSeriesIdNull())
                {
                    ExecuteAction(fm, ruleToRun, rowToCheck);
                }
                break;

            case 100:    //action program
                ExecuteCodeAction(columnToCheck, rowToCheck, fm, ruleToRun);
                break;

            default:
                throw new AtriumException("Not a valid rule");
            }
        }