/// <summary>
        /// Creates entitites relation rules collection.
        /// </summary>
        /// <returns>
        /// Entitites relation rules collection.
        /// </returns>
        /// <remarks>
        /// Rules stored in RuleRelation table.
        /// </remarks>
        private IEnumerable <IRuleRelationModel> GetRuleRelationCollection()
        {
            List <IRuleRelationModel> result = new List <IRuleRelationModel>();
            var esq = new EntitySchemaQuery(_userConnection.EntitySchemaManager, "RuleRelation");
            var entitySchemaUIdColumnName             = esq.AddColumn("EntitySchemaUId").Name;
            var entitySchemaColumnUIdColumnName       = esq.AddColumn("EntitySchemaColumnUId").Name;
            var entitySchemaSearchUIdColumnName       = esq.AddColumn("EntitySchemaSearchUId").Name;
            var entitySchemaSearchColumnUIdColumnName = esq.AddColumn("EntitySchemaSearchColumnUId").Name;
            var ruleColumnName = esq.AddColumn("Rule").Name;

            esq.AddColumn("Position").OrderByAsc();
            var entityCollection = esq.GetEntityCollection(_userConnection);

            foreach (var item in entityCollection)
            {
                Guid entitySchemaSearchUId = item.GetTypedColumnValue <Guid>(entitySchemaSearchUIdColumnName);
                Guid entitySchemaUId       = item.GetTypedColumnValue <Guid>(entitySchemaUIdColumnName);
                var  autoCompleteRules     = _entityConnBindingCollection.Where(binding =>
                                                                                binding.TargetEntitySchemaUId == entitySchemaUId &&
                                                                                binding.SourceEntitySchemaUId == entitySchemaSearchUId);
                IRuleRelationModel rule = CreateRule(entitySchemaSearchUId, autoCompleteRules);
                rule.EntitySchemaUId             = entitySchemaUId;
                rule.EntitySchemaColumnUId       = item.GetTypedColumnValue <Guid>(entitySchemaColumnUIdColumnName);
                rule.EntitySchemaSearchUId       = entitySchemaSearchUId;
                rule.EntitySchemaSearchColumnUId = item.GetTypedColumnValue <Guid>(entitySchemaSearchColumnUIdColumnName);
                rule.Rule = item.GetTypedColumnValue <string>(ruleColumnName);
                result.Add(rule);
            }
            return(result);
        }
 public virtual bool GetCanRunRule(IRuleRelationModel rule, bool isContactSearchSuccessfull)
 {
     return(rule.EntitySchemaSearchUId != AutoEmailRelationConst.AccountCommunicationSchemaUId ||
            !isContactSearchSuccessfull);
 }