예제 #1
0
        /// <summary>
        /// 点击规则列表的内容时触发的事件,编辑和删除两项
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dgv_wenjianmingrules_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            string ruleName = dgv_wenjianmingrules.Rows[e.RowIndex].Cells["jieximingcheng"].Value.ToString();

            //点击编辑按钮时
            if (dgv_wenjianmingrules.Columns[e.ColumnIndex].Name == "bianjianniu" && e.RowIndex >= 0)
            {
                //获得规则的信息ruleinfo
                RuleInfo myri = new RuleInfo(ruleName, "文件名标准化");
                myri.GetRuleInfo();
                //把ruleinfo传给wjmruleform窗体,立刻加载信息
                WjmRuleForm myform = new WjmRuleForm(myri);
                if (myform.ShowDialog() == DialogResult.OK)
                {
                    //UpdateWenjianmingRules();
                }
            }
            //点击删除按钮时
            if (dgv_wenjianmingrules.Columns[e.ColumnIndex].Name == "shanchuanniu" && e.RowIndex >= 0)
            {
                DialogResult mydr = MessageBox.Show($"是否删除规则 {ruleName} ?", "消息提醒", MessageBoxButtons.YesNoCancel);
                if (mydr == DialogResult.Yes)
                {
                    string str_sql = $"delete from 数据解析库.规则信息表 where 规则名称='{ruleName}' and 删除=0";
                    MySqlHelper.ExecuteNonQuery(SystemInfo._strConn, str_sql);
                    //更新下拉列表
                    ////删除列表成功提示
                    //刷新格则列表显示
                    UpdateRules("文件名标准化", string.Empty, dgv_wenjianmingrules);
                    SelectRules(cbb_formatName1.Text, dgv_wenjianmingrules);
                    MessageBox.Show($"规则 {ruleName} 已删除成功!");
                }
            }
        }
예제 #2
0
        /// <summary>
        /// 将规则编码和参数信息更新至巷道信息表
        /// 注意:当传入的参数为null时,说明该巷道未绑定规则编码,此时仍需更新数据库
        /// </summary>
        /// <param name="tunnelID">巷道ID</param>
        /// <param name="info">巷道绑定的所有规则ID和参数信息</param>
        /// <returns>更新成功返回True</returns>
        public static bool UpdateRuleIdsAndParams2TunnelTable(int tunnelID,
                                                              RuleInfo[] info)
        {
            string ruleIds       = "";
            string warningParams = "";

            if (info != null)
            {
                int n = info.Length;
                for (int i = 0; i < n; i++)
                {
                    RuleInfo cvtInfo =
                        PreWarningRulesBLL.ConvertOneRuleCodeAndParamInfo2DBString(info[i]);
                    ruleIds       += cvtInfo.RuleCodesStr;
                    warningParams += cvtInfo.ParamsInfoStr;
                }
            }
            string sql = "UPDATE " +
                         TunnelInfoDbConstNames.TABLE_NAME + " SET " +
                         TunnelInfoDbConstNames.RULE_IDS + "='" + ruleIds + "'," +
                         TunnelInfoDbConstNames.PRE_WARNING_PARAMS + "='" +
                         warningParams + "' WHERE " +
                         TunnelInfoDbConstNames.ID + "=" + tunnelID;
            ManageDataBase db = new
                                ManageDataBase(DATABASE_TYPE.GeologyMeasureDB);

            return(db.OperateDB(sql));
        }
예제 #3
0
        /// <summary>
        /// 点击查重清晰模块下的规则列表时触发的事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dgv_chachong_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            string ruleName = dgv_chachong.Rows[e.RowIndex].Cells[1].Value.ToString();

            //点击编辑按钮时
            if (e.ColumnIndex == 4 && e.RowIndex >= 0)
            {
                //获得规则的信息ruleinfo
                RuleInfo myri = new RuleInfo(ruleName, "查重清洗");
                myri.GetRuleInfo();
                //把ruleinfo传给wjmruleform窗体,立刻加载信息
                CcqxRuleForm myForm = new CcqxRuleForm(myri);
                if (myForm.ShowDialog() == DialogResult.OK)
                {
                    MessageBox.Show($"规则 {myForm._ruleInfo.ruleName} 保存成功!");
                }
            }
            //点击删除按钮时
            if (e.ColumnIndex == 5 && e.RowIndex >= 0)
            {
                DialogResult mydr = MessageBox.Show($"是否删除规则 {ruleName} ?", "消息提醒", MessageBoxButtons.YesNoCancel);
                if (mydr == DialogResult.Yes)
                {
                    string str_sql = $"delete from 数据解析库.规则信息表 where 规则名称='{ruleName}' and 删除=0";
                    MySqlHelper.ExecuteNonQuery(SystemInfo._strConn, str_sql);
                    //更新下拉列表
                    ////删除列表成功提示
                    //刷新格则列表显示
                    UpdateRules("查重清洗", string.Empty, dgv_chachong);
                    SelectRules(cbb_format3.Text, dgv_chachong);
                    MessageBox.Show($"规则 {ruleName} 已成功删除!");
                }
            }
        }
예제 #4
0
        private void GenerateRealFemalePersona(int siteId)
        {
            PersonalDataStructure personalData = new RealPersonalDataGenerator().GeneratePersonalData(UserGenderEnum.Female);

            PersonaInfo persona = new PersonaInfo
            {
                PersonaDisplayName     = personalData.FirstName + " " + personalData.LastName + " (female)",
                PersonaName            = "Persona-" + Guid.NewGuid(),
                PersonaSiteID          = siteId,
                PersonaPointsThreshold = 100,
                PersonaEnabled         = true
            };

            persona.Insert();

            var rule = new RuleInfo
            {
                RuleScoreID     = persona.PersonaScoreID,
                RuleDisplayName = "Is female",
                RuleName        = "Rule-" + Guid.NewGuid(),
                RuleValue       = 1000,
                RuleType        = RuleTypeEnum.Attribute,
                RuleParameter   = "ContactGender",
                RuleCondition   = "<condition><attribute name=\"ContactGender\"><value>2</value></attribute><wherecondition>ContactGender = 2</wherecondition></condition>",
                RuleSiteID      = siteId
            };

            rule.Insert();
        }
        public Hashtable Put(int id, string content)
        {
            Hashtable ht   = new Hashtable();
            RuleInfo  ai   = new RuleInfo();
            Hashtable data = new Hashtable();

            try
            {
                // ht.Add("state", ai.AddOne(id, name, birthday, admin, work));
                if (ai.ChangeContext(id, content))
                {
                    ht.Add("code", 20000);
                    data.Add("id", id);
                }
                else
                {
                    ht.Add("code", 40000);
                    data.Add("message", "error");
                }
            }
            catch (Exception e)
            {
                ht.Add("code", 40000);
                data.Add("message", e.Message);
            }
            ht.Add("data", data);
            return(ht);
        }
예제 #6
0
        private Func <Data, bool> GetRule(RuleInfo rule)
        {
            Type propType      = TypeToType[rule.ValueType];
            var  convertMethod = TypeToConvert[rule.ValueType];

            var paramValue = Expression.Parameter(typeof(Data));

            var methodInfo = typeof(Convert).GetMethod(
                convertMethod,
                new Type[] { typeof(string) },
                null);

            var left = Expression.Property(paramValue, nameof(Data.Value));

            MethodCallExpression convertedLeft = Expression.Call(methodInfo, left);

            Func <Data, bool> func = (data) => false;

            // if its .net defined operator
            if ((int)rule.Operator <= MaxExprType)
            {
                if (Enum.TryParse(rule.Operator.ToString(), out ExpressionType expressionType))
                {
                    var right = Expression.Constant(Convert.ChangeType(rule.Value[0], propType));
                    func =
                        Expression.Lambda <Func <Data, bool> >
                        (
                            Expression.MakeBinary(expressionType, convertedLeft, right), paramValue
                        ).Compile();
                }
            }
            return(func);
        }
예제 #7
0
        private void lbl_baocun_Click(object sender, EventArgs e)
        {
            //构造一个root传入ruleinfo中

            JJmodel.WjmRuleRoot ruleRoot = new WjmRuleRoot();
            ruleRoot.ruleExplain = tb_explain.Text;
            foreach (Control myc in flp_my.Controls)
            {
                CheckBox cb = myc as CheckBox;
                if (cb.Checked)
                {
                    ruleRoot.position.Add(cb.Text);
                }
            }
            ruleRoot.delete   = tb_delete.Text;
            ruleRoot.newText  = tb_new.Text;
            ruleRoot.replace0 = tb_replace0.Text;
            ruleRoot.replace  = tb_replace.Text;
            //构造一个ruleinfo
            RuleInfo ri = new RuleInfo(tb_rulename.Text, SystemInfo._currentModule, ruleRoot, SystemInfo._userInfo._shiming,
                                       DateTime.Now.ToString("yyyy-MM-dd"));

            //保存到数据库的规则信息表中
            ri.SaveRuleInfo();
            this.DialogResult = DialogResult.OK;
        }
예제 #8
0
    private object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        switch (sourceName.ToLowerCSafe())
        {
        case "validity":
            DataRowView rowView = (DataRowView)parameter;
            RuleInfo    rule    = new RuleInfo(rowView.Row);
            return(GetValidity(rule));

        case "ruletype":
            string name = "om.score.";
            name += Enum.GetName(typeof(RuleTypeEnum), parameter);
            return(GetString(name));

        case "delete":
            if ((ModifyPermissions != null) && !ModifyPermissions.Value)
            {
                CMSGridActionButton imgDel = (CMSGridActionButton)sender;

                imgDel.Enabled = false;
                imgDel.Style.Add("cursor", "default");
                return(imgDel);
            }
            break;
        }
        return(sender);
    }
예제 #9
0
        private void OnRefreshOne()
        {
            var list = GetData <List <object> >();

            if (list == null)
            {
                return;
            }
            var listCount = list.Count;

            TabDatas = new TabData[listCount];
            for (var i = 0; i < listCount; i++)
            {
                var info = list[i];
                var dict = info as IDictionary;
                if (dict == null)
                {
                    continue;
                }

                var ruleInfo = new RuleInfo(dict, TabDefaultIndex);

                var tabData = new TabData
                {
                    Name  = ruleInfo.Name,
                    Data  = ruleInfo,
                    Index = i
                };
                TabDatas[i] = tabData;
            }
        }
예제 #10
0
    private object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        switch (sourceName.ToLowerCSafe())
        {
        case "validity":
            DataRowView rowView = (DataRowView)parameter;
            RuleInfo    rule    = new RuleInfo(rowView.Row);
            return(GetValidity(rule));

        case "ruletype":
            string name = "om.score.";
            name += Enum.GetName(typeof(RuleTypeEnum), parameter);
            return(GetString(name));

        case "delete":
            if (!CurrentUser.IsAuthorizedPerResource(ModuleNameForPermissionCheck, PermissionsEnum.Modify.ToString()))
            {
                var imgDel = (CMSGridActionButton)sender;

                imgDel.Enabled = false;
                imgDel.Style.Add("cursor", "default");
                return(imgDel);
            }
            break;
        }
        return(sender);
    }
예제 #11
0
        private void AddRuleUser(RuleInfo item, UserPrincipal user)
        {
            var userInfo = new UserInfo
            {
                Comment       = Helpers.DistinguishedName(user.DistinguishedName),
                DisplayName   = user.DisplayName,
                Enabled       = (bool)user.Enabled,
                Family        = user.Surname,
                IsDanger      = (bool)user.Enabled && item.IsDanger,
                IsSelected    = false,
                IsTransit     = item.IsTransit,
                Name          = user.GivenName,
                UserName      = user.SamAccountName,
                UserPrincipal = user
            };

            int i = UserInfos.IndexOf(userInfo);

            if (i < 0)
            {
                if (!item.Deny)
                {
                    UserInfos.Add(userInfo);
                }
            }
            else if (UserInfos[i].Enabled && !UserInfos[i].IsDanger && userInfo.IsDanger)
            {
                UserInfos[i].IsDanger = true;
            }
        }
예제 #12
0
        //private void AddLocalUser(string principal)
        //{
        //    string group, user;

        //    if (principal.Contains("\\"))
        //    {
        //        string[] account = principal.Split('\\');
        //        group = account[0];
        //        user = account[1];
        //    }
        //    else
        //    {
        //        group = string.Empty;
        //        user = principal;
        //    }

        //    var userInfo = new UserInfo(
        //        user,
        //        false,
        //        principal,
        //        user,
        //        group,
        //        Environment.MachineName + ", " + principal,
        //        false
        //    );

        //    if (!UserInfos.Contains(userInfo))
        //    {
        //        UserInfos.Add(userInfo);
        //    }
        //}

        #endregion Users

        #region Groups

        private void AddNestedGroups(RuleInfo item)
        {
            Trace.Assert(item.Principal != null, "No RuleInfo.Pricipal");

            var members = ((GroupPrincipal)item.Principal).GetMembers(); //TODO recursive doesn't work - help required!

            try
            {
                foreach (Principal member in members)
                {
                    if (member is GroupPrincipal group)
                    {
                        if (Helpers.IsSystemName(true, group.Name))
                        {
                            continue;
                        }

                        var groupInfo = new GroupInfo
                        {
                            Description    = group.Description ?? group.DisplayName ?? group.SamAccountName,
                            GroupName      = group.Name,
                            GroupPrincipal = group,
                            //IsDanger = item.IsDanger,
                            IsSelected = false
                        };

                        if (!GroupInfos.Contains(groupInfo))
                        {
                            GroupInfos.Add(groupInfo);
                        }
                    }
                }
            }
            catch { } // No network
        }
예제 #13
0
        private RuleInfo GenerateRule(
            string displayName,
            int value,
            int scoreId,
            string ruleCondition,
            RuleTypeEnum ruleType,
            string ruleParameter  = null,
            bool belongsToPersona = true)
        {
            var codeName = ValidationHelper.GetCodeName(displayName, 100);
            var ruleInfo = RuleInfoProvider.GetRules().WithCodeName(codeName).FirstOrDefault();

            if (ruleInfo != null)
            {
                return(ruleInfo);
            }

            var ruleObj = new RuleInfo
            {
                RuleScoreID          = scoreId,
                RuleDisplayName      = displayName,
                RuleName             = codeName,
                RuleValue            = value,
                RuleType             = ruleType,
                RuleParameter        = ruleParameter,
                RuleCondition        = ruleCondition,
                RuleBelongsToPersona = belongsToPersona
            };

            RuleInfoProvider.SetRuleInfo(ruleObj);
            return(ruleObj);
        }
예제 #14
0
            /// <summary>
            /// Initializes a new instance of the <see cref="AnyBall.Rule.CS_RuleSet"/> class.
            /// </summary>
            /// <param name="g_rule">the rule to initialize with.</param>
            public CS_RuleSet(CS_Rule g_rule)
            {
                myRules = new List <CS_Rule> ();
                myRules.Add(g_rule);

                myRuleInfo = g_rule.GetInfo();
            }
예제 #15
0
        private static RuleInfo ReadRule(SqlDataReader reader)
        {
            try
            {
                IMetadataManager  iMetadataManager = new MetadataManager.Contracts.MetadataManager();
                List <SourceInfo> lstSource        = reader.IsDBNull(4) ? null : Newtonsoft.Json.JsonConvert.DeserializeObject <List <SourceInfo> >(reader.GetString(4));
                List <TargetInfo> lstTarget        = reader.IsDBNull(5) ? null : Newtonsoft.Json.JsonConvert.DeserializeObject <List <TargetInfo> >(reader.GetString(5));
                RuleTypeEnum      ruleType         = reader.IsDBNull(3) ? RuleTypeEnum.Visibility : (RuleTypeEnum)reader.GetInt32(3);
                string            strRuleTypeName  = ruleType.ToString();
                string            entityId         = reader.IsDBNull(8) ? string.Empty : reader.GetString(8);
                string            entityName       = (entityId == null) ? string.Empty : iMetadataManager.GetEntityNameByEntityContext(entityId);

                var rule = new RuleInfo
                {
                    TenantId     = reader.IsDBNull(0) ? Guid.Empty : reader.GetGuid(0),
                    Id           = reader.IsDBNull(1) ? Guid.Empty : reader.GetGuid(1),
                    RuleName     = reader.IsDBNull(2) ? string.Empty : reader.GetString(2),
                    RuleType     = reader.IsDBNull(3) ? RuleTypeEnum.Visibility : (RuleTypeEnum)reader.GetInt32(3),
                    Source       = reader.IsDBNull(4) ? string.Empty : reader.GetString(4),
                    Target       = reader.IsDBNull(5) ? string.Empty : reader.GetString(5),
                    SourceList   = lstSource,
                    TargetList   = lstTarget,
                    UpdatedBy    = reader.IsDBNull(7) ? Guid.Empty : reader.GetGuid(7),
                    RuleTypeName = strRuleTypeName,
                    EntityId     = entityId,
                    EntityName   = entityName
                };
                return(rule);
            }
            catch (System.Exception ex)
            {
                throw ex.InnerException;
            }
        }
예제 #16
0
        public IActionResult Put([FromBody] RuleInfo rule, string entityName)
        {
            try
            {
                var stopwatch = StopwatchLogger.Start(_log);
                _log.Info("Called RuleController Put {0}=", JsonConvert.SerializeObject(rule));

                if (!String.IsNullOrEmpty(rule.EntityName))
                {
                    rule.EntityId = _iMetadataManager.GetEntityContextByEntityName(entityName);
                }

                string strMsg = string.Empty;
                var    retVal = _manageRule.Update(TenantCode, rule, ref strMsg);

                if (!String.IsNullOrEmpty(strMsg) && retVal == false)
                {
                    return(StatusCode((int)HttpStatusCode.AlreadyReported, strMsg));
                }

                stopwatch.StopAndLog("End RuleController put");
                return(Ok(retVal));
            }
            catch (Exception ex)
            {
                _log.Error(ExceptionFormatter.SerializeToString(ex));
                return(StatusCode((int)HttpStatusCode.InternalServerError, ApiConstant.CustomErrorMessage));
            }
        }
예제 #17
0
        internal bool Update(Guid tenantId, RuleInfo ruleInfo, ref string strMsg)
        {
            try
            {
                var cmd = CreateProcedureCommand("dbo.Rule_Update");
                cmd.AppendGuid("@guidTenantId", tenantId);
                cmd.AppendGuid("@guidId", ruleInfo.Id);
                cmd.AppendMediumText("@strRuleName", ruleInfo.RuleName);
                cmd.AppendSmallInt("@intRuleType", (Int16)ruleInfo.RuleType);
                cmd.AppendXLargeText("@strSource", ruleInfo.Source);
                cmd.AppendXLargeText("@strTarget", ruleInfo.Target);
                cmd.AppendGuid("@guidUpdatedBy", ruleInfo.UpdatedBy);
                cmd.AppendXSmallText("@strEntityId", ruleInfo.EntityId);
                cmd.AppendVarChar("@strMessage", 100);

                int retVal = ExecuteCommand(cmd);
                strMsg = cmd.OutputParameterValue("@strMessage");
                if (!String.IsNullOrEmpty(strMsg))
                {
                    return(false);
                }

                strMsg = "Data updated successfully";
                return(true);
            }
            catch (SqlException e)
            {
                throw ReportAndTranslateException(e, "Rule::Rule_Update");
            }
        }
예제 #18
0
        //TODO: Edit
        private List <RuleInfo> LoadRules(string path)
        {
            if (!File.Exists(path))
            {
                return(new List <RuleInfo>());
            }

            using (StreamReader sr = new StreamReader(path))
            {
                string json = sr.ReadToEnd();

                sr.Close();

                JArray array = JArray.Parse(json);

                List <RuleInfo> rules = new List <RuleInfo>();

                foreach (var rule in array.Children <JObject>())
                {
                    rules.Add(RuleInfo.Deserialize(rule));
                }

                return(rules);
            }
        }
예제 #19
0
        void InitCustomEvaluator(RuleInfo ruleInfo)
        {
            string customEvaluator = ruleInfo._customEvaluator;

            if (customEvaluator == null ||
                customEvaluator.Trim().Length == 0)
            {
                ruleInfo._customEvaluatorType = null;
                return;
            }

            ruleInfo._customEvaluatorType = ConfigUtil.GetType(ruleInfo._customEvaluator,
                                                               "custom", ruleInfo._customEvaluatorConfig);

            // Make sure the type support WebBaseEvent
            HandlerBase.CheckAssignableType(ruleInfo._customEvaluatorConfig.ElementInformation.Properties["custom"].Source,
                                            ruleInfo._customEvaluatorConfig.ElementInformation.Properties["custom"].LineNumber,
                                            typeof(System.Web.Management.IWebEventCustomEvaluator), ruleInfo._customEvaluatorType);

            // Create a public instance of the custom evaluator
            if (_customEvaluatorInstances[ruleInfo._customEvaluatorType] == null)
            {
                _customEvaluatorInstances[ruleInfo._customEvaluatorType] = HttpRuntime.CreatePublicInstance(ruleInfo._customEvaluatorType);
            }
        }
예제 #20
0
        // GET api/<controller>
        public Hashtable Get(int id)
        {
            Hashtable ht   = new Hashtable();
            Hashtable data = new Hashtable();
            RuleInfo  ai   = new RuleInfo();

            if (ai.HasUsed(id))
            {
                ht.Add("code", 40000);
                data.Add("message", "条款已被使用,无法删除");
            }
            else
            {
                try
                {
                    if (ai.DeleteOne(id))
                    {
                        ht.Add("code", 20000);
                        data.Add("status", "success");
                    }
                    else
                    {
                        ht.Add("code", 40000);
                        data.Add("message", "failed");
                    }
                }
                catch (Exception e)
                {
                    ht.Add("code", 40000);
                    data.Add("message", e.Message);
                }
            }
            ht.Add("data", data);
            return(ht);
        }
    protected void Page_Init(object sender, EventArgs e)
    {
        // Request to this page has to have all three following query parameters set
        int personaId = QueryHelper.GetInteger("personaid", 0);

        // Persona has to be connected with current score
        var personaInfo = PersonaInfoProvider.GetPersonaInfoById(personaId);

        if (personaInfo == null)
        {
            RedirectToAccessDenied(GetString("general.invalidparameters"));
        }

        if (!personaInfo.CheckPermissions(PermissionsEnum.Read, CurrentSiteName, CurrentUser))
        {
            RedirectToAccessDenied(personaInfo.TypeInfo.ModuleName, "Read");
        }

        RuleInfo rule = EditedObject as RuleInfo;

        // Editing existing rule
        if (rule != null)
        {
            // Rule has to be connected with current score
            if ((rule.RuleScoreID != personaInfo.PersonaScoreID))
            {
                RedirectToAccessDenied(GetString("general.invalidparameters"));
            }
        }

        editElem.ResourceName           = ModuleName.PERSONAS;
        editElem.ScoreId                = personaInfo.PersonaScoreID;
        editElem.NewRuleUrl             = string.Format("Tab_Rules_Edit.aspx?personaid={0}", personaId);
        editElem.RedirectUrlAfterCreate = string.Format("Tab_Rules_Edit.aspx?ruleid={{%EditedObject.ID%}}&personaid={0}&saved=1", personaId);
    }
        // POST api/<controller>

        /*public Hashtable Post([FromBody] int article_id, [FromBody] int num_id, [FromBody] string context)
         * {
         *  Hashtable ht = new Hashtable();
         *  RuleInfo ai = new RuleInfo();
         *  if (ai.HasName(article_id, num_id))
         *  {
         *      ht.Add("state", false);
         *      ht.Add("reason", "条款已存在");
         *  }
         *  else
         *  {
         *      try
         *      {
         *          ht.Add("state", ai.AddOne(article_id, num_id, context));
         *      }
         *      catch (Exception e)
         *      {
         *          ht.Add("state", false);
         *          ht.Add("reason", e.Message);
         *      }
         *  }
         *  return ht;
         * }*/

        public Hashtable Post(string content)
        {
            Hashtable ht   = new Hashtable();
            RuleInfo  ai   = new RuleInfo();
            Hashtable data = new Hashtable();

            try
            {
                if (ai.AddOne(0, 0, content))
                {
                    ht.Add("code", 20000);
                    data.Add("id", ai.GetId(content));
                }
                else
                {
                    ht.Add("code", 40000);
                    data.Add("message", "error");
                }
            }
            catch (Exception e)
            {
                ht.Add("code", 40000);
                data.Add("message", e.Message);
            }
            ht.Add("data", data);
            return(ht);
        }
예제 #23
0
        public void RunRuleByID_RuleNotApplicableForNonMatchingCondition()
        {
            // This test has the side effect of ensuring IRule.Evaluate is not called
            // when the condition is not matched.

            var e = new MockA11yElement();

            var conditionMock = new Mock <Condition>(MockBehavior.Strict);

            conditionMock.Setup(m => m.Matches(e)).Returns(false).Verifiable();

            var infoStub = new RuleInfo();

            var ruleMock = new Mock <IRule>(MockBehavior.Strict);

            ruleMock.Setup(m => m.Condition).Returns(conditionMock.Object).Verifiable();
            ruleMock.Setup(m => m.Info).Returns(() => infoStub).Verifiable();

            var providerMock = new Mock <IRuleProvider>(MockBehavior.Strict);

            providerMock.Setup(m => m.GetRule(It.IsAny <RuleId>())).Returns(() => ruleMock.Object).Verifiable();

            var runner = new RuleRunner(providerMock.Object);
            var result = runner.RunRuleByID(default(RuleId), e);

            Assert.AreEqual(EvaluationCode.NotApplicable, result.EvaluationCode);
            Assert.AreEqual(e, result.element);
            Assert.AreEqual(infoStub, result.RuleInfo);

            conditionMock.VerifyAll();
            ruleMock.VerifyAll();
            providerMock.VerifyAll();
        }
        bool IDuplicateRecordsManager.CheckDuplicatesData(Guid tenantId, string entityname, JObject resource, Guid?id)
        {
            string EntityConextId = _IMetadataManager.GetEntityContextByEntityName(entityname);

            if (string.IsNullOrEmpty(EntityConextId))
            {
                throw new ArgumentException("Entity is not found");
            }

            RuleInfo uniqueRuleObj = _ManageRule.GetUniqueFieldsRuleByEntity(tenantId, EntityConextId);

            if (uniqueRuleObj == null)
            {
                return(false);
            }

            var fieldsArr = uniqueRuleObj.TargetList.Select(t => t.Name).ToList();

            Dictionary <string, dynamic> fields = new Dictionary <string, dynamic>();

            foreach (var fieldname in fieldsArr)
            {
                var value = GetJArrayValue(resource, fieldname);
                fields.Add(fieldname, value);
            }
            //var fields = string.Join(",", fieldsArr);

            var status = _IMetadataManager.GetDuplicateStatus(entityname, fields, id);

            return(false);
        }
예제 #25
0
        public void RunRuleByID_FrameworkIssueLinkIsNotNull_PropagatesToResult()
        {
            const string frameworkIssueLink = "https://docs.microsoft.com/known-framework-link";
            var          e = new MockA11yElement();

            var conditionMock = new Mock <Condition>(MockBehavior.Strict);

            conditionMock.Setup(m => m.Matches(e)).Returns(true).Verifiable();

            var infoStub = new RuleInfo
            {
                ErrorCode          = EvaluationCode.NeedsReview,
                FrameworkIssueLink = frameworkIssueLink,
            };

            var ruleMock = new Mock <IRule>(MockBehavior.Strict);

            ruleMock.Setup(m => m.Condition).Returns(conditionMock.Object).Verifiable();
            ruleMock.Setup(m => m.PassesTest(e)).Returns(true).Verifiable();
            ruleMock.Setup(m => m.Info).Returns(() => infoStub).Verifiable();

            var providerMock = new Mock <IRuleProvider>(MockBehavior.Strict);

            providerMock.Setup(m => m.GetRule(It.IsAny <RuleId>())).Returns(() => ruleMock.Object).Verifiable();

            var runner = new RuleRunner(providerMock.Object);
            var result = runner.RunRuleByID(default(RuleId), e);

            Assert.AreEqual(frameworkIssueLink, result.RuleInfo.FrameworkIssueLink);

            conditionMock.VerifyAll();
            ruleMock.VerifyAll();
            providerMock.VerifyAll();
        }
예제 #26
0
        public void RunRuleByID_ReturnsExecutionErrorWhenConditionMatchesThrowsException()
        {
            var e = new MockA11yElement();

            var conditionMock = new Mock <Condition>(MockBehavior.Strict);

            conditionMock.Setup(m => m.Matches(e)).Throws <Exception>().Verifiable();

            var infoStub = new RuleInfo();

            var ruleMock = new Mock <IRule>(MockBehavior.Strict);

            ruleMock.Setup(m => m.Condition).Returns(conditionMock.Object).Verifiable();
            ruleMock.Setup(m => m.Info).Returns(() => infoStub).Verifiable();

            var providerMock = new Mock <IRuleProvider>(MockBehavior.Strict);

            providerMock.Setup(m => m.GetRule(It.IsAny <RuleId>())).Returns(() => ruleMock.Object).Verifiable();

            var runner = new RuleRunner(providerMock.Object);
            var result = runner.RunRuleByID(default(RuleId), e);

            Assert.AreEqual(EvaluationCode.RuleExecutionError, result.EvaluationCode);
            Assert.AreEqual(e, result.element);
            Assert.AreEqual(infoStub, result.RuleInfo);

            conditionMock.VerifyAll();
            ruleMock.VerifyAll();
            providerMock.VerifyAll();
        }
예제 #27
0
        public async Task Commit(IInputElement inputElement)
        {
            var existingRule = await SelectedRuleProvider.FindByName(Name);

            if (existingRule != null)
            {
                existingRule.Rule        = _saveRuleMessage.Rule;
                existingRule.DateUpdated = DateTime.UtcNow;
                await SelectedRuleProvider.Update(existingRule);

                Close(inputElement);

                return;
            }

            _saveRuleMessage.Rule.Name = Name;

            var ruleInfo = new RuleInfo
            {
                Author      = Environment.UserName,
                DateCreated = DateTime.UtcNow,
                DateUpdated = DateTime.UtcNow,
                Group       = SelectedGroup,
                Id          = Guid.NewGuid(),
                Rule        = _saveRuleMessage.Rule,
                Name        = _saveRuleMessage.Rule.Name
            };


            await SelectedRuleProvider.Add(ruleInfo);

            Close(inputElement);
        }
예제 #28
0
        public void RunRuleByID_ReturnsExpectedEvaluationCodeWhenPassesTestFalse()
        {
            var e = new MockA11yElement();

            var conditionMock = new Mock <Condition>(MockBehavior.Strict);

            conditionMock.Setup(m => m.Matches(e)).Returns(true).Verifiable();

            var infoStub = new RuleInfo
            {
                ErrorCode = EvaluationCode.NeedsReview,
            };

            var ruleMock = new Mock <IRule>(MockBehavior.Strict);

            ruleMock.Setup(m => m.Condition).Returns(conditionMock.Object).Verifiable();
            ruleMock.Setup(m => m.PassesTest(e)).Returns(false).Verifiable();
            ruleMock.Setup(m => m.Info).Returns(() => infoStub).Verifiable();

            var providerMock = new Mock <IRuleProvider>(MockBehavior.Strict);

            providerMock.Setup(m => m.GetRule(It.IsAny <RuleId>())).Returns(() => ruleMock.Object).Verifiable();

            var runner = new RuleRunner(providerMock.Object);
            var result = runner.RunRuleByID(default(RuleId), e);

            Assert.AreEqual(EvaluationCode.NeedsReview, result.EvaluationCode);
            Assert.AreEqual(e, result.element);
            Assert.AreEqual(ruleMock.Object.Info, result.RuleInfo);

            conditionMock.VerifyAll();
            ruleMock.VerifyAll();
            providerMock.VerifyAll();
        }
예제 #29
0
        public async Task <bool> Add(RuleInfo ruleInfo)
        {
            var rules = await Load();

            rules.Add(ruleInfo);
            Write(rules, Path);
            return(true);
        }
예제 #30
0
 public void Enqueue(RuleInfo rule)
 {
     if (!_ruleSet.TryGetValue(rule.Signal, out IRuleEngine ruleEngine))
     {
         _ruleSet[rule.Signal] = new RuleEngine(_failedResultBag, _failedResultSet);
     }
     _ruleSet[rule.Signal].Enqueue(rule);
 }
예제 #31
0
        public IEnumerable<RuleInfo> Parse(byte[] data)
        {
            var rules = new List<RuleInfo>();
            var reader = new PacketReader(data);

            var header = reader.ReadByte();
            var numberOfRules = reader.ReadShort();

            for (short i = 1; i <= numberOfRules; i++)
            {
                if (!reader.IsEnd)
                {
                    var rule = new RuleInfo();
                    rule.Index = i;
                    rule.Name = reader.ReadUTFString();
                    rule.Value = reader.ReadUTFString();
                    rules.Add(rule);
                }
            }

            return rules;
        }
예제 #32
0
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        scoreId = QueryHelper.GetInteger("scoreid", 0);
        rule = RuleInfoProvider.GetRuleInfo(QueryHelper.GetInteger("ruleid", 0));
        EditForm.OnBeforeSave += new EventHandler(EditForm_OnBeforeSave);
        EditForm.RedirectUrlAfterSave = "Tab_Rules_Edit.aspx?ruleid={%EditedObject.ID%}&scoreid=" + scoreId + "&saved=1";
        InitHeaderActions();
    }
 internal FiringRuleInfo(RuleInfo ruleInfo) {
     _ruleInfo = ruleInfo;
     _indexOfFirstRuleInfoWithSameProvider = -1;
 }
        void InitCustomEvaluator(RuleInfo ruleInfo) {
            string customEvaluator = ruleInfo._customEvaluator;

            if (customEvaluator == null ||
                customEvaluator.Trim().Length == 0) {
                ruleInfo._customEvaluatorType = null;
                return;
            }

            ruleInfo._customEvaluatorType = ConfigUtil.GetType(ruleInfo._customEvaluator,
                "custom", ruleInfo._customEvaluatorConfig);

            // Make sure the type support WebBaseEvent
            HandlerBase.CheckAssignableType(ruleInfo._customEvaluatorConfig.ElementInformation.Properties["custom"].Source,
                    ruleInfo._customEvaluatorConfig.ElementInformation.Properties["custom"].LineNumber,
                    typeof(System.Web.Management.IWebEventCustomEvaluator), ruleInfo._customEvaluatorType);

            // Create a public instance of the custom evaluator
            if (_customEvaluatorInstances[ruleInfo._customEvaluatorType] == null) {
                _customEvaluatorInstances[ruleInfo._customEvaluatorType] = HttpRuntime.CreatePublicInstance(ruleInfo._customEvaluatorType);
            }
        }
 private void DisplayRuleInfo(RuleInfo ruleInfo)
 {
 }
    private static RuleInfo GenerateBasicScoringRule(ScoreInfo score, string displayName, int ruleValue, RuleTypeEnum ruleType, string ruleCondition, string ruleParameter = null)
    {
        var rule = new RuleInfo
        {
            RuleScoreID = score.ScoreID,
            RuleDisplayName = displayName,
            RuleName = "Rule-" + Guid.NewGuid(),
            RuleValue = ruleValue,
            RuleType = ruleType,
            RuleParameter = ruleParameter,
            RuleCondition = ruleCondition,
            RuleSiteID = score.ScoreSiteID,
            RuleBelongsToPersona = false,
            RuleIsRecurring = false
        };
        rule.Insert();

        return rule;
    }
예제 #37
0
    private object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter)
    {
        switch (sourceName.ToLowerCSafe())
        {
            case "validity":
                DataRowView rowView = (DataRowView)parameter;
                RuleInfo rule = new RuleInfo(rowView.Row);
                return GetValidity(rule);

            case "ruletype":
                string name = "om.score.";
                name += Enum.GetName(typeof (RuleTypeEnum), parameter);
                return GetString(name);
            case "delete":
                if ((ModifyPermissions != null) && !ModifyPermissions.Value)
                {
                    CMSGridActionButton imgDel = (CMSGridActionButton)sender;

                    imgDel.Enabled = false;
                    imgDel.Style.Add("cursor", "default");
                    return imgDel;
                }
                break;
        }
        return sender;
    }
예제 #38
0
 /// <summary>
 /// Gets validity string. Either in units of time (xx days) or an expiration date.
 /// </summary>
 private static string GetValidity(RuleInfo rule)
 {
     if (rule.RuleValidUntil != DateTimeHelper.ZERO_TIME)
     {
         return rule.RuleValidUntil.ToShortDateString();
     }
     if (rule.RuleValidity != ValidityEnum.Until)
     {
         return rule.RuleValidFor + " " + Enum.GetName(typeof (ValidityEnum), rule.RuleValidity).ToLowerCSafe();
     }
     return String.Empty;
 }
        private void GenerateRealMalePersona(int siteId)
        {
            PersonalDataStructure personalData = new RealPersonalDataGenerator().GeneratePersonalData(UserGenderEnum.Male);

            PersonaInfo persona = new PersonaInfo
            {
                PersonaDisplayName = personalData.FirstName + " " + personalData.LastName + " (male)",
                PersonaName = "Persona-" + Guid.NewGuid(),
                PersonaSiteID = siteId,
                PersonaPointsThreshold = 100,
                PersonaEnabled = true
            };
            persona.Insert();

            var rule = new RuleInfo
            {
                RuleScoreID = persona.PersonaScoreID,
                RuleDisplayName = "Is male",
                RuleName = "Rule-" + Guid.NewGuid(),
                RuleValue = 1000,
                RuleType = RuleTypeEnum.Attribute,
                RuleParameter = "ContactGender",
                RuleCondition = "<condition><attribute name=\"ContactGender\"><value>1</value></attribute><wherecondition>ContactGender = 1</wherecondition></condition>",
                RuleSiteID = siteId
            };
            rule.Insert();
        }
 private void LoadValidationRules(XmlTextReader xtr)
 {
     if (xtr.IsEmptyElement) return;
     while (xtr.Read())
     {
         if (xtr.NodeType == XmlNodeType.EndElement
             && xtr.LocalName.ToLower() == "validationrules")
             break;  //reach end of property node
         if (xtr.NodeType == XmlNodeType.Element
             && Enum.IsDefined(typeof(CommonRuleHandler), xtr.LocalName))
         {
             RuleInfo rule = new RuleInfo(this, xtr);
             _validationRules.Add(rule);
         }
     }
 }
 private void InitReferencedProvider(RuleInfo ruleInfo)
 {
     string str = ruleInfo._ruleSettings.Provider;
     if (!string.IsNullOrEmpty(str))
     {
         WebEventProvider provider = this._providerInstances[str];
         ruleInfo._referencedProvider = provider;
     }
 }
 private void MergeValuesWithProfile(RuleInfo ruleInfo)
 {
     ProfileSettings settings = null;
     if (ruleInfo._ruleSettings.ElementInformation.Properties["profile"].ValueOrigin != PropertyValueOrigin.Default)
     {
         settings = this._section.Profiles[ruleInfo._ruleSettings.Profile];
     }
     if ((settings != null) && (ruleInfo._ruleSettings.ElementInformation.Properties["minInstances"].ValueOrigin == PropertyValueOrigin.Default))
     {
         ruleInfo._minInstances = settings.MinInstances;
     }
     else
     {
         ruleInfo._minInstances = ruleInfo._ruleSettings.MinInstances;
     }
     if ((settings != null) && (ruleInfo._ruleSettings.ElementInformation.Properties["maxLimit"].ValueOrigin == PropertyValueOrigin.Default))
     {
         ruleInfo._maxLimit = settings.MaxLimit;
     }
     else
     {
         ruleInfo._maxLimit = ruleInfo._ruleSettings.MaxLimit;
     }
     if ((settings != null) && (ruleInfo._ruleSettings.ElementInformation.Properties["minInterval"].ValueOrigin == PropertyValueOrigin.Default))
     {
         ruleInfo._minInterval = settings.MinInterval;
     }
     else
     {
         ruleInfo._minInterval = ruleInfo._ruleSettings.MinInterval;
     }
     if ((settings != null) && (ruleInfo._ruleSettings.ElementInformation.Properties["custom"].ValueOrigin == PropertyValueOrigin.Default))
     {
         ruleInfo._customEvaluator = settings.Custom;
         ruleInfo._customEvaluatorConfig = settings;
     }
     else
     {
         ruleInfo._customEvaluator = ruleInfo._ruleSettings.Custom;
         ruleInfo._customEvaluatorConfig = ruleInfo._ruleSettings;
     }
 }
        RuleInfo CreateRuleInfo(RuleSettings ruleSettings) {
            RuleInfo ruleInfo = new RuleInfo(ruleSettings, _section);

            // Inherit values from profile
            MergeValuesWithProfile(ruleInfo);

            // Find out which provider it's referencing
            InitReferencedProvider(ruleInfo);

            // Initialize the cutom evaluator type
            InitCustomEvaluator(ruleInfo);

            return ruleInfo;
        }
 private void InitCustomEvaluator(RuleInfo ruleInfo)
 {
     string str = ruleInfo._customEvaluator;
     if ((str == null) || (str.Trim().Length == 0))
     {
         ruleInfo._customEvaluatorType = null;
     }
     else
     {
         ruleInfo._customEvaluatorType = ConfigUtil.GetType(ruleInfo._customEvaluator, "custom", ruleInfo._customEvaluatorConfig);
         System.Web.Configuration.HandlerBase.CheckAssignableType(ruleInfo._customEvaluatorConfig.ElementInformation.Properties["custom"].Source, ruleInfo._customEvaluatorConfig.ElementInformation.Properties["custom"].LineNumber, typeof(IWebEventCustomEvaluator), ruleInfo._customEvaluatorType);
         if (this._customEvaluatorInstances[ruleInfo._customEvaluatorType] == null)
         {
             this._customEvaluatorInstances[ruleInfo._customEvaluatorType] = HttpRuntime.CreatePublicInstance(ruleInfo._customEvaluatorType);
         }
     }
 }
        void InitReferencedProvider(RuleInfo ruleInfo) {
            String providerName;
            WebEventProvider provider;

            Debug.Assert(ruleInfo._referencedProvider == null, "ruleInfo._referencedProvider == null");

            providerName = ruleInfo._ruleSettings.Provider;
            if (String.IsNullOrEmpty(providerName)) {
                return;
            }

            provider = _providerInstances[providerName];
            Debug.Assert(provider != null, "provider != null");

            ruleInfo._referencedProvider = provider;
        }
        void MergeValuesWithProfile(RuleInfo ruleInfo) {
            ProfileSettings profileSettings = null;

            if (ruleInfo._ruleSettings.ElementInformation.Properties["profile"].ValueOrigin != PropertyValueOrigin.Default) {
                profileSettings = _section.Profiles[ruleInfo._ruleSettings.Profile];
                Debug.Assert(profileSettings != null, "profileSettings != null");
            }

            if (profileSettings != null && ruleInfo._ruleSettings.ElementInformation.Properties["minInstances"].ValueOrigin == PropertyValueOrigin.Default) {
                ruleInfo._minInstances = profileSettings.MinInstances;
            }
            else {
                ruleInfo._minInstances = ruleInfo._ruleSettings.MinInstances;
            }

            if (profileSettings != null && ruleInfo._ruleSettings.ElementInformation.Properties["maxLimit"].ValueOrigin == PropertyValueOrigin.Default) {
                ruleInfo._maxLimit = profileSettings.MaxLimit;
            }
            else {
                ruleInfo._maxLimit = ruleInfo._ruleSettings.MaxLimit;
            }

            if (profileSettings != null && ruleInfo._ruleSettings.ElementInformation.Properties["minInterval"].ValueOrigin == PropertyValueOrigin.Default) {
                ruleInfo._minInterval = profileSettings.MinInterval;
            }
            else {
                ruleInfo._minInterval = ruleInfo._ruleSettings.MinInterval;
            }

            if (profileSettings != null && ruleInfo._ruleSettings.ElementInformation.Properties["custom"].ValueOrigin == PropertyValueOrigin.Default) {
                ruleInfo._customEvaluator = profileSettings.Custom;
                ruleInfo._customEvaluatorConfig = profileSettings;
            }
            else {
                ruleInfo._customEvaluator = ruleInfo._ruleSettings.Custom;
                ruleInfo._customEvaluatorConfig = ruleInfo._ruleSettings;
            }
        }
        void DisplayRuleInfo(RuleInfo ruleInfo) {
#if DEBUG
            Debug.Trace("BuildRuleInfos", "====================== Rule Info =======================");
            Debug.Trace("BuildRuleInfos", "name:" + ruleInfo._ruleSettings.Name);
            Debug.Trace("BuildRuleInfos", "type:" + ruleInfo._eventMappingSettings.RealType.Name);
            Debug.Trace("BuildRuleInfos", "minInstances:" + ruleInfo._minInstances);
            Debug.Trace("BuildRuleInfos", "maxLimit:" + ruleInfo._maxLimit);
            Debug.Trace("BuildRuleInfos", "minInterval:" + ruleInfo._minInterval);
            Debug.Trace("BuildRuleInfos", "provider:" + ruleInfo._ruleSettings.Provider);
            Debug.Trace("BuildRuleInfos", "referenced provider:" + (ruleInfo._referencedProvider == null ? String.Empty : ruleInfo._referencedProvider.GetType().Name));
            Debug.Trace("BuildRuleInfos", "=========================================================");
#endif
        }
 private RuleInfo CreateRuleInfo(RuleSettings ruleSettings)
 {
     RuleInfo ruleInfo = new RuleInfo(ruleSettings, this._section);
     this.MergeValuesWithProfile(ruleInfo);
     this.InitReferencedProvider(ruleInfo);
     this.InitCustomEvaluator(ruleInfo);
     return ruleInfo;
 }