/// <summary>
 /// Remove a Criterion from this quest
 /// </summary>
 /// <param name="Criterion">Criterion which should be removed</param>
 public void RemoveCriterion(BaseCriterion Criterion)
 {
     if (Criteria.Contains(Criterion))
     {
         Criteria.Remove(Criterion);
     }
 }
 /// <summary>
 /// Add a criterion to this quest
 /// </summary>
 /// <param name="Criterion">Criterion which should be added</param>
 public void AddCriterion(BaseCriterion Criterion)
 {
     foreach (BaseCriterion bc in Criteria)
     {
         if (bc.Name == Criterion.Name)
         {
             throw new Exception("Duplicate Criterion! Name <" + Criterion.Name + "> already used!");
         }
     }
     Criterion.ParentQuest = this;
     Criteria.Add(Criterion);
 }
        public static BaseCriterion Or(this BaseCriterion baseCriterion, BaseCriterion criterion)
        {
            if (baseCriterion == null)
              {
            return criterion;
              }

              var criteriaGroup = baseCriterion as CriteriaGroup;
              if (criteriaGroup == null)
              {
            return new CriteriaGroup(new[] { baseCriterion, criterion }.ToList(), new List<CompoundFilterType> { CompoundFilterType.Or });
              }

              criteriaGroup.Criteria.Add(criterion);
              criteriaGroup.CompoundFilterTypes.Add(CompoundFilterType.Or);
              return criteriaGroup;
        }
        public static BaseCriterion Or(this BaseCriterion baseCriterion, BaseCriterion criterion)
        {
            if (baseCriterion == null)
            {
                return(criterion);
            }

            var criteriaGroup = baseCriterion as CriteriaGroup;

            if (criteriaGroup == null)
            {
                return(new CriteriaGroup(new[] { baseCriterion, criterion }.ToList(), new List <CompoundFilterType> {
                    CompoundFilterType.Or
                }));
            }

            criteriaGroup.Criteria.Add(criterion);
            criteriaGroup.CompoundFilterTypes.Add(CompoundFilterType.Or);
            return(criteriaGroup);
        }
        public static SimpleFilterBuilder <TFilterable> Where <TFilterable>(this FilterBuilder <TFilterable> filterBuilderBase, BaseCriterion filterCriterion) where TFilterable : class, IFilterable
        {
            if (filterBuilderBase == null)
            {
                throw new ArgumentNullException(nameof(filterBuilderBase));
            }

            if (filterBuilderBase.FilterCriteria.Criteria.Any())
            {
                filterBuilderBase.FilterCriteria.Criteria.Add(new CriteriaGroup(filterCriterion));
            }
            else
            {
                filterBuilderBase.FilterCriteria = new CriteriaGroup(filterCriterion);
            }

            return(new SimpleFilterBuilder <TFilterable>(filterBuilderBase));
        }
Example #6
0
        public static CompoundFilterBuilder <TFilterable> And <TFilterable>(this SimpleFilterBuilder <TFilterable> simpleFilterBuilder, BaseCriterion filterCriterion) where TFilterable : class, IFilterable
        {
            var compoundFilterBuilder = new CompoundFilterBuilder <TFilterable>(simpleFilterBuilder);

            compoundFilterBuilder.FilterCriteria.Criteria.Add(new CriteriaGroup(filterCriterion));
            compoundFilterBuilder.FilterCriteria.CompoundFilterTypes.Add(CompoundFilterType.And);
            return(compoundFilterBuilder);
        }
        internal static Filter <TFilterable> BuildWhere <TFilterable>(this Filter <TFilterable> filter, BaseCriterion baseCriterion) where TFilterable : class, IFilterable
        {
            var criteriaGroup = baseCriterion as CriteriaGroup;

            if (criteriaGroup != null)
            {
                filter.BuildWhere(criteriaGroup);
            }
            else
            {
                var whereClause = baseCriterion.CreateWhere(filter.DbObjectMapper.ObjectPropertyColumnNameMapper, filter.Parameters.Count);

                if (!string.IsNullOrWhiteSpace(whereClause))
                {
                    var @params = baseCriterion.CreateParameters(filter.Parameters.Count);

                    filter.SqlQueryStringBuilder.SafeSqlAppend(whereClause);
                    filter.Parameters.AddRange(@params);
                }
            }

            return(filter);
        }