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); }
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); }