コード例 #1
0
ファイル: TreeRepository.cs プロジェクト: galehouse5/TreesDb
 public EntityPage <T> ListAllMeasuredSpecies <T>(SpeciesBrowser browser) where T : MeasuredSpecies
 {
     return(CriteriaExtensions.ListAllEntitiesByBrowser <T>(
                browserFilterer: browser.HasFilters?criteria => criteria.ApplyFilters(browser) : (Action <ICriteria>)null,
                    browserSorter: criteria => criteria.ApplySorting(browser),
                    browserPager: criteria => criteria.ApplyPaging(browser)));
 }
コード例 #2
0
        public void can_find_1_record_out_of_10_that_match_address()
        {
            var criteria = CriteriaExtensions.BuildCriteria <Customer>(JsonConvert.DeserializeObject <IList <CriteriaGroup> >(TestStrings.OneCriteriaAddress));

            var customers = Registry.CreateMany <Customer>(10).ToList();

            customers.First().Address.Street = "123 Test St";

            customers.Where(criteria).Count().ShouldEqual(1);
        }
コード例 #3
0
        public void can_find_1_record_out_of_10_that_match_criteria()
        {
            var criteria = CriteriaExtensions.BuildCriteria <Customer>(_criteriaGroups);

            var customers = Registry.CreateMany <Customer>(10).ToList();

            customers.First().Name = "Skippy";

            customers.Where(criteria).Count().ShouldEqual(1);
        }
コード例 #4
0
        public void find_zero_records_for_date_time_criteria()
        {
            var testData = TestStrings.NotEqualDateTime;

            var criteriaGroups = JsonConvert.DeserializeObject <IList <CriteriaGroup> >(testData);

            var criteria = CriteriaExtensions.BuildCriteria <Customer>(criteriaGroups);

            var customers = Registry.CreateMany <Customer>(1).ToList();

            customers.First().BirthDay = DateTime.Parse("10/10/2015");

            customers.Where(criteria).Count().ShouldEqual(0);
        }
コード例 #5
0
        public void find_zero_records_for_integer_criteria()
        {
            var testData = TestStrings.NotEqualInteger;

            var criteriaGroups = JsonConvert.DeserializeObject <IList <CriteriaGroup> >(testData);

            var criteria = CriteriaExtensions.BuildCriteria <Customer>(criteriaGroups);

            var customers = Registry.CreateMany <Customer>(1).ToList();

            customers.First().Age = 10;

            customers.Where(criteria).Count().ShouldEqual(0);
        }
コード例 #6
0
ファイル: FilterContextFactory.cs プロジェクト: vip32/Naos
        private IEnumerable <Criteria> BuildCriterias(HttpRequest request, string queryStringKey)
        {
            if (request?.Query?.ContainsKey(queryStringKey) == false)
            {
                return(Enumerable.Empty <Criteria>());
            }

            // correlationId=eq:2b34cc25-cd06-475c-8f9c-c42791f49b46,timestamp=qte:01-01-1980,level=eq:debug,OR,level=eq:information
            var query = request.Query.FirstOrDefault(p => p.Key.Equals(queryStringKey, StringComparison.OrdinalIgnoreCase));
            var items = query.Value.ToString().Split(',');

            var result = new List <Criteria>();

            foreach (var item in items.Where(c => !c.IsNullOrEmpty()))
            {
                if (item.EqualsAny(new[] { "and", "or" }))
                {
                    // TODO: AND / OR
                    continue;
                }

                var name      = item.SliceTill("=");
                var value     = item.SliceFrom("=");
                var @operator = value.Contains(":", StringComparison.OrdinalIgnoreCase) ? value.SliceTill(":").Trim() : "eq";

                result.Add(
                    new Criteria(
                        name.Trim(),
                        CriteriaExtensions.FromAbbreviation(@operator),
                        (value.Contains(":", StringComparison.OrdinalIgnoreCase) ? value.SliceFrom(":") : value).Trim().EmptyToNull()));
                // TODO: properly determine numeric oder not and pass to criteria
            }

            if (result.Count > 0)
            {
                this.logger.LogDebug($"{{LogKey:l}} [{request.HttpContext.GetRequestId()}] http filter criterias={result.Select(c => c.ToString()).ToString("|")}", LogKeys.InboundRequest);
            }

            return(result);
        }
コード例 #7
0
ファイル: SiteRepository.cs プロジェクト: galehouse5/TreesDb
 public EntityPage <Site> ListAllSites(SiteBrowser browser)
 => CriteriaExtensions.ListAllEntitiesByBrowser <Site>(
     browserAliaser: criteria => criteria.CreateAlias("State", "state"),
     browserFilterer: browser.HasFilters ? criteria => criteria.ApplyFilters(browser) : (Action <ICriteria>)null,
     browserSorter: criteria => criteria.ApplySorting(browser),
     browserPager: criteria => criteria.ApplyPaging(browser));