public async Task <PagedResult <ProductCategoryViewModel> > GetPagings(GetManageProductCategoryPagingRequest request)
        {
            var result = await GetAsync <PagedResult <ProductCategoryViewModel> >(
                "/api/categories/paging?pageIndex="
                + $"{request.PageIndex}&pageSize={request.PageSize}" +
                $"&keyword={request.Keyword}" +
                $"&languageId={ request.LanguageId}");

            return(result);
        }
        public async Task <PagedResult <ProductCategoryViewModel> > GetAllPaging(GetManageProductCategoryPagingRequest request)
        {
            //1. Select join
            var query = from c in _context.Categories
                        join ct in _context.CategoryTranslations on c.Id equals ct.CategoryId
                        //join pic in _context.ProductInCategories on c.Id equals pic.CategoryId

                        where ct.LanguageId == request.LanguageId
                        select new { c, ct };

            //2. filter
            if (!string.IsNullOrEmpty(request.Keyword))
            {
                query = query.Where(x => x.ct.Name.Contains(request.Keyword));
            }

            //3. Paging
            int totalRow = await query.CountAsync();

            var data = await query.Skip((request.PageIndex - 1) *request.PageSize)
                       .Take(request.PageSize)
                       .Select(x => new ProductCategoryViewModel()
            {
                Id             = x.ct.Id,
                Name           = x.ct.Name,
                CategoryId     = x.ct.CategoryId,
                LanguageId     = x.ct.LanguageId,
                SeoAlias       = x.ct.SeoAlias,
                SeoDescription = x.ct.SeoDescription,
                SeoTitle       = x.ct.SeoTitle,
                SortOrder      = x.c.SortOrder,
                IsShowOnHome   = x.c.IsShowOnHome,
                ParentId       = x.c.ParentId
            }).ToListAsync();

            //4. Select and projection
            var pagedResult = new PagedResult <ProductCategoryViewModel>()
            {
                TotalRecords = totalRow,
                PageIndex    = request.PageIndex,
                PageSize     = request.PageSize,
                Items        = data
            };

            return(pagedResult);
        }
        public async Task <IActionResult> Index(string keyword, int pageIndex = 1, int pageSize = 5)
        {
            var languageId = HttpContext.Session.GetString(SystemConstants.AppSettings.DefaultLanguageId);
            var request    = new GetManageProductCategoryPagingRequest()
            {
                Keyword    = keyword,
                PageIndex  = pageIndex,
                PageSize   = pageSize,
                LanguageId = languageId
            };
            var data = await _categoryApiClient.GetPagings(request);

            ViewBag.Keyword = keyword;

            var categories = await _categoryApiClient.GetAll(languageId);

            // if (TempData["result"] != null)
            // {
            //     ViewBag.SuccessMsg = TempData["result"];
            // }
            TempData["TotalCategorys"] = data.TotalRecords;
            return(View(data));
        }
Beispiel #4
0
        public async Task <IActionResult> GetAllPaging([FromQuery] GetManageProductCategoryPagingRequest request)
        {
            var product = await _categoryService.GetAllPaging(request);

            return(Ok(product));
        }