public async Task <CatalogoIndexViewModel> GetCatalogoItems(int pageIndex, int itemsPage, int?marcaId, int?tipoId) { _logger.LogInformation("GetCatalogItems called."); var filterSpecification = new CatalogoSpecification(marcaId, tipoId); var filterPaginatedSpecification = new CatalogoFilterPaginatedSpecification(itemsPage * pageIndex, itemsPage, marcaId, tipoId); // the implementation below using ForEach and Count. We need a List. var itemsOnPage = _itemRepository.List(filterPaginatedSpecification).ToList(); var totalItems = _itemRepository.Count(filterSpecification); itemsOnPage.ForEach(x => { x.FotoUri = _uriComposer.ComposeFotUri(x.FotoUri); }); var vm = new CatalogoIndexViewModel() { CatalogoItems = itemsOnPage.Select(i => new CatalogoItemViewModel() { Id = i.Id, Nome = i.Nome, FotoUri = i.FotoUri, Preco = i.Preco }), Marcas = await GetMarcas(), Tipos = await GetTipos(), FiltroAplicadoMarcas = marcaId ?? 0, FiltoroAplicadoTipos = tipoId ?? 0, PaginacaoInfo = new PaginacaoInfoViewModel() { PaginaAtual = pageIndex, ItemsPorPaginas = itemsOnPage.Count, TotalItems = totalItems, TotalPaginas = int.Parse(Math.Ceiling(((decimal)totalItems / itemsPage)).ToString()) } }; vm.PaginacaoInfo.Proxima = (vm.PaginacaoInfo.PaginaAtual == vm.PaginacaoInfo.TotalPaginas - 1) ? "is-disabled" : ""; vm.PaginacaoInfo.Anterior = (vm.PaginacaoInfo.PaginaAtual == 0) ? "is-disabled" : ""; return(vm); }
private CarrinhoViewModel CreateViewModelFromCarrinho(Carrinho carrinho) { var viewModel = new CarrinhoViewModel(); viewModel.Id = carrinho.Id; viewModel.CompraId = carrinho.CompraId; viewModel.Items = carrinho.Items.Select(i => { var itemModel = new CarrinhoItemViewModel() { Id = i.Id, PrecoUnitario = i.PrecoUnitario, Quantidade = i.Quantidade, CatalogoItemId = i.CatalogoItemId }; var item = _itemRepository.GetById(i.CatalogoItemId); itemModel.FotoUrl = _uriComposer.ComposeFotUri(item.FotoUri); itemModel.ProdutoNome = item.Nome; return(itemModel); }) .ToList(); return(viewModel); }