コード例 #1
0
        public async Task <HomeIndexViewModel> GetHomeIndexViewModel(int?categoryId, int?authorId, int page, int pageSize)
        {
            var spec          = new ProductsWithAuthorSpecification(categoryId, authorId);
            var specPaginated = new ProductsWithAuthorSpecification(categoryId, authorId, (page - 1) * pageSize, pageSize);
            var totalItems    = await _productRepository.CountAsync(spec);

            var totalPages = (int)Math.Ceiling((double)totalItems / pageSize);
            var products   = await _productRepository.ListAsync(specPaginated);

            var vm = new HomeIndexViewModel()
            {
                Products = products.Select(x => new ProductViewModel()
                {
                    Id         = x.Id,
                    Name       = x.Name,
                    PictureUri = x.PictureUri,
                    Price      = x.Price,
                    AuthorName = x.Author?.FullName
                }).ToList(),
                Authors        = await GetAuthors(),
                Categories     = await GetCategories(),
                PaginationInfo = new PaginationInfoViewModel()
                {
                    Page        = page,
                    ItemsOnPage = products.Count,
                    TotalItems  = totalItems,
                    TotalPages  = totalPages,
                    HasPrev     = page > 1,
                    HasNext     = page < totalPages
                }
            };

            return(vm);
        }
コード例 #2
0
        public async Task <HomeIndexViewModel> GetHomeIndexViewModel(int?categoryId, int?authorId, int page, int pageSize)
        {
            //alttaki satır app core da ki spec ve ef deki list async ile çalışıyor. Include işlemi yaptık. Daha sonra filtre yaptık.
            var spec          = new ProductsWithAuthorSpecification(categoryId, authorId);
            var specPaginated = new ProductsWithAuthorSpecification(categoryId, authorId, (page - 1) * pageSize, pageSize);
            var totalItems    = await _productRepository.CountAsync(spec);//degistirdik count diye

            var products = await _productRepository.ListAsync(specPaginated);

            var totalPages = (int)Math.Ceiling((double)totalItems / pageSize);
            var vm         = new HomeIndexViewModel()
            {
                Products = products.Select(x => new ProductViewModel()
                {
                    Id         = x.Id,
                    Name       = x.Name,
                    PictureUri = x.PictureUri,
                    Price      = x.Price,
                    AuthorName = x.Author?.FullName //yazar yoksa yazma
                }).ToList(),
                Authors        = await GetAuthors(),
                Categories     = await GetCategories(),
                PaginationInfo = new PaginationInfoViewModel()
                {
                    Page        = page,
                    ItemsOnPage = products.Count,
                    TotalItems  = totalItems,
                    TotalPages  = totalPages,
                    HasPrev     = page > 1,
                    HasNext     = page < totalPages
                }
            };

            return(vm);
        }