コード例 #1
0
        public async Task <IEnumerable <CharacterDto> > List(string sort    = null,
                                                             bool asc       = true,
                                                             string groupId = null,
                                                             string name    = null,
                                                             int scoreMin   = int.MinValue,
                                                             int scoreMax   = int.MaxValue,
                                                             int pageSize   = 50,
                                                             int pageNumber = 1)
        {
            var filter = new CharacterFilterDto
            {
                Name                = name,
                PageSize            = pageSize,
                RequestedPageNumber = pageNumber,
                ScoreMin            = scoreMin,
                ScoreMax            = scoreMax,
                SortAscending       = asc,
                SortCriteria        = sort
            };

            if (groupId != null)
            {
                filter.GroupId = Guid.Parse(groupId);
            }

            var characters = (await CharacterFacade.GetCharactersByFilterAsync(filter)).Items;

            return(characters);
        }
コード例 #2
0
 private IPredicate FilterCharacterName(CharacterFilterDto filter)
 {
     return(string.IsNullOrWhiteSpace(filter.Name)
         ? null
         : new SimplePredicate(nameof(Character.Name),
                               ValueComparingOperator.StringContains,
                               filter.Name));
 }
コード例 #3
0
 private IPredicate FilterGroup(CharacterFilterDto filter)
 {
     return(!filter.GroupId.HasValue
         ? null
         : new SimplePredicate(nameof(Character.GroupId),
                               ValueComparingOperator.Equal,
                               filter.GroupId.Value));
 }
コード例 #4
0
 private IPredicate FilterScore(CharacterFilterDto filter)
 {
     return(new CompositePredicate(new List <IPredicate>
     {
         new SimplePredicate(nameof(Character.Score), ValueComparingOperator.GreaterThanOrEqual,
                             filter.ScoreMin),
         new SimplePredicate(nameof(Character.Score), ValueComparingOperator.LessThanOrEqual, filter.ScoreMax)
     }));
 }
コード例 #5
0
        public async Task <ActionResult> List(int page = 1)
        {
            var filter = new CharacterFilterDto {
                SortCriteria = nameof(CharacterDto.Score), PageSize = PageSize, RequestedPageNumber = page
            };
            var result = await CharacterFacade.GetCharactersByFilterAsync(filter);

            // Paging
            ViewBag.RequestedPageNumber = result.RequestedPageNumber;
            ViewBag.PageCount           = (int)Math.Ceiling((double)result.TotalItemsCount / (double)PageSize);
            // Paging END

            return(View("List", result.Items));
        }
コード例 #6
0
        public async Task GetByNullableBoolTest()
        {
            var filterDto = new CharacterFilterDto
            {
                IsDeleted = true
            };

            var pagedRequest = new PagedFilterRequest <CharacterFilterDto>
            {
                FilterDto = filterDto
            };

            var result = _context.Characters.Filter(pagedRequest);

            var items = await result.ToListAsync();

            Assert.IsNotNull(items.FirstOrDefault(x => x.Name == "I am deleted"));
        }
コード例 #7
0
        public async Task FilterContainsTest()
        {
            var filterDto = new CharacterFilterDto
            {
                Name = "alex"
            };

            var pagedRequest = new PagedFilterRequest <CharacterFilterDto>
            {
                FilterDto = filterDto
            };

            var result = _context.Characters.Filter(pagedRequest);

            var items = await result.ToListAsync();

            var hasAlex = items.Any(x => x.Name == "Alex");

            Assert.IsTrue(hasAlex);
        }
コード例 #8
0
        public async Task GetByForeignKey()
        {
            var filterDto = new CharacterFilterDto
            {
                UniverseId = 1
            };

            var pagedRequest = new PagedFilterRequest <CharacterFilterDto>
            {
                FilterDto = filterDto
            };

            var result = _context.Characters.Filter(pagedRequest);

            var items = await result.ToListAsync();

            var hasMiddleEarthCharacters = items.Count == 2;

            Assert.IsTrue(hasMiddleEarthCharacters);
        }
コード例 #9
0
        public async Task GetByEnumTest()
        {
            var filterDto = new CharacterFilterDto
            {
                Type = CharacterType.Mage
            };

            var pagedRequest = new PagedFilterRequest <CharacterFilterDto>
            {
                FilterDto = filterDto
            };

            var result = _context.Characters.Filter(pagedRequest);

            var items = await result.ToListAsync();

            var gendalf = items.FirstOrDefault(x => x.Name == "Gendalf");

            Assert.IsNotNull(gendalf);
        }
コード例 #10
0
        public async Task FilterDatetimeTest()
        {
            var filterDto = new CharacterFilterDto
            {
                CreateDate = new DateTime(2010, 10, 5)
            };

            var pagedRequest = new PagedFilterRequest <CharacterFilterDto>
            {
                FilterDto = filterDto
            };

            var result = _context.Characters.Filter(pagedRequest);

            var items = await result.ToListAsync();

            var alex = items.FirstOrDefault(x => x.Name == "Alex");

            Assert.IsNotNull(alex);
        }
コード例 #11
0
        public async Task FilterDateTimeIntervalTest()
        {
            var filterDto = new CharacterFilterDto
            {
                CreateDateFrom = new DateTime(2008, 10, 15),
                CreateDateTo   = DateTime.Now.AddYears(-2)
            };

            var pagedRequest = new PagedFilterRequest <CharacterFilterDto>
            {
                FilterDto = filterDto
            };

            var result = _context.Characters.Filter(pagedRequest);

            var items = await result.ToListAsync();

            var hasDianaAlex = items.Any(x => x.Name == "Alex" || x.Name == "Diana");

            Assert.IsTrue(hasDianaAlex);
        }
コード例 #12
0
        public async Task SortTest()
        {
            var filterDto = new CharacterFilterDto
            {
            };

            var pagedRequest = new PagedFilterRequest <CharacterFilterDto>
            {
                FilterDto = filterDto,
                Sortings  = new Sorting[]
                {
                    new Sorting
                    {
                        Name      = "Name",
                        Direction = Filtr.Enums.SortingDirection.Desc,
                    }
                }
            };

            var result = _context.Characters.Filter(pagedRequest);

            var items = await result.ToListAsync();
        }
コード例 #13
0
 /// <summary>
 /// Gets all customers according to page
 /// </summary>
 /// <returns>all customers</returns>
 public async Task <QueryResultDto <CharacterDto, CharacterFilterDto> > GetCharactersByFilterAsync(CharacterFilterDto filter)
 {
     using (UnitOfWorkProvider.Create())
     {
         return(await _characterService.ListCharactersAsync(filter));
     }
 }
コード例 #14
0
        protected override IQuery <Character> ApplyWhereClause(IQuery <Character> query, CharacterFilterDto filter)
        {
            var predicates = new List <IPredicate>();

            AddIfDefined(FilterCharacterName(filter), predicates);
            AddIfDefined(FilterGroup(filter), predicates);
            AddIfDefined(FilterScore(filter), predicates);

            if (predicates.Count == 0)
            {
                return(query);
            }
            if (predicates.Count == 1)
            {
                return(query.Where(predicates.First()));
            }
            var wherePredicate = new CompositePredicate(predicates);

            return(query.Where(wherePredicate));
        }