Exemple #1
0
        public async Task <PagedList <CategoryViewModel> > Handle(CategoryPageListRequest request, CancellationToken cancellationToken)
        {
            var list = await this.db.Categories.Where(
                x => (string.IsNullOrEmpty(request.Query)) ||
                (x.Name.Contains(request.Query)
                )).Select(x => new CategoryViewModel(x)).ToListAsync();

            var    viewModelProperties = GetAllPropertyNameOfViewModel();
            var    sortPropertyName    = !string.IsNullOrEmpty(request.SortName) ? request.SortName.ToLower() : string.Empty;
            string matchedPropertyName = viewModelProperties.FirstOrDefault(x => x == sortPropertyName);

            if (string.IsNullOrEmpty(matchedPropertyName))
            {
                matchedPropertyName = "Name";
            }

            var type         = typeof(CategoryViewModel);
            var sortProperty = type.GetProperty(matchedPropertyName);

            list = request.IsDesc ? list.OrderByDescending(x => sortProperty.GetValue(x, null)).ToList() : list.OrderBy(x => sortProperty.GetValue(x, null)).ToList();

            return(new PagedList <CategoryViewModel>(list, request.Offset ?? CommonConstants.Config.DEFAULT_SKIP, request.Limit ?? CommonConstants.Config.DEFAULT_TAKE));
        }
Exemple #2
0
 public async Task <PagedList <CategoryViewModel> > GetAsync([FromQuery] CategoryPageListRequest request, CancellationToken cancellationToken)
 {
     return(await this.mediator.Send(request, cancellationToken));
 }