public async Task <IActionResult> Edit(int?id)
        {
            var pEditViewModel = new ProdutoEditViewModel();
            var produto        = await produtoRepositorio.FindProdutoByIdAsync(id.Value);

            if (id == null)
            {
                return(NotFound());
            }
            if (produto == null)
            {
                return(NotFound());
            }

            ViewBag.Fabricantes = (await fabricanteRepository.ListaFabricantesAsync()).Select(c => new SelectListItem()
            {
                Text = c.Nome, Value = c.Id.ToString()
            });

            pEditViewModel.Nome         = produto.Nome;
            pEditViewModel.Preco        = produto.Preco;
            pEditViewModel.FabricanteId = produto.Fabricante.Id;
            pEditViewModel.Id           = produto.Id;
            pEditViewModel.Url          = produto.FotoUrl;

            return(View(pEditViewModel));
        }
 public async Task Setup()
 {
     mockProdutos    = new Mock <IProdutoRepository>();
     mockFabricantes = new Mock <IFabricanteRepository>();
     controller      = new ProdutosController(mockProdutos.Object, mockFabricantes.Object);
     // act
     produtoEditViewModel = Generator.InvalidProdutoEditVM();
     result = await controller.Edit(produtoEditViewModel);
 }
Пример #3
0
 public static Produto ToModel(this ProdutoEditViewModel produtoEditViewModel) => new Produto
 {
     Id              = produtoEditViewModel.Id,
     Titulo          = produtoEditViewModel.Titulo,
     Descricao       = produtoEditViewModel.Descricao,
     Preco           = produtoEditViewModel.Preco,
     Quantidade      = produtoEditViewModel.Quantidade,
     Imagem          = produtoEditViewModel.Imagem,
     IdCategoria     = produtoEditViewModel.IdCategoria,
     DataAtualizacao = DateTime.Now
 };
 public async Task Setup()
 {
     fabricante      = new Fabricante();
     produto         = new Produto();
     mockProdutos    = new Mock <IProdutoRepository>();
     mockFabricantes = new Mock <IFabricanteRepository>();
     controller      = new ProdutosController(mockProdutos.Object, mockFabricantes.Object);
     mockFabricantes.Setup(f => f.FindByIdAsync(1)).ReturnsAsync(fabricante);
     mockProdutos.Setup(p => p.FindProdutoByIdAsync(1)).ReturnsAsync(produto);
     mockProdutos.Setup(p => p.UpdateAsync(produto)).Returns(Task.CompletedTask);
     produtoEditVM = Generator.ValidProdutoEditVM();
     // act
     result = await controller.Edit(produtoEditVM);
 }
        public async Task <IActionResult> Edit(ProdutoEditViewModel produtoEditViewModel)
        {
            if (produtoEditViewModel.Id == 0)
            {
                return(NotFound());
            }
            if (!produtoEditViewModel.Preco.ToString().EndsWith("3"))
            {
                ModelState.AddModelError("Preco", "O preço deve terminar em 3.");
            }

            if (ModelState.IsValid)
            {
                var fabricante = await fabricanteRepository.FindByIdAsync(produtoEditViewModel.FabricanteId);

                var produto = await produtoRepositorio.FindProdutoByIdAsync(produtoEditViewModel.Id);

                if (produto == null)
                {
                    return(NotFound());
                }
                produto.Nome       = produtoEditViewModel.Nome;
                produto.Preco      = produtoEditViewModel.Preco;
                produto.Fabricante = fabricante;
                produto.FotoUrl    = produtoEditViewModel.Url;

                try
                {
                    await produtoRepositorio.UpdateAsync(produto);
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!await produtoRepositorio.ProdutoExists(produtoEditViewModel.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }

            await fabricanteRepository.ListaFabricantesAsync();

            return(View(produtoEditViewModel));
        }
Пример #6
0
        public async Task <IActionResult> UpdateProduto(ProdutoEditViewModel produtoEditViewModel, ProdutoCreateEtapaBasicaModel produtoCreateEtapaBasicaModel, string novaReferencia)
        {
            try
            {
                produtoCreateEtapaBasicaModel.Id = produtoEditViewModel.IdProd;
                novaReferencia = produtoCreateEtapaBasicaModel.Referencia;
                produtoCreateEtapaBasicaModel.Referencia     = produtoEditViewModel.Basico.Referencia;
                produtoCreateEtapaBasicaModel.StatusAtivacao = produtoEditViewModel.Basico.StatusAtivacao;

                var(status, mensagem) = await _produtoAppServices.UpdateAsync(produtoCreateEtapaBasicaModel, novaReferencia);

                if (!status)
                {
                    TempData["Error"] = mensagem;
                }
            }
            catch (Exception e)
            {
                TempData["Error"] = $"Error, type: {e.Message}";
            }

            return(RedirectToAction("EditProduto", new { id = produtoEditViewModel.IdProd }));
        }