private async Task <bool> ValidarCarrinhoProdutos(CarrinhoDTO carrinho, IEnumerable <ItemProdutoDTO> produtos) { if (carrinho.Itens.Count != produtos.Count()) { var itensIndisponiveis = carrinho.Itens.Select(c => c.ProdutoId).Except(produtos.Select(p => p.Id)).ToList(); foreach (var itemId in itensIndisponiveis) { var itemCarrinho = carrinho.Itens.FirstOrDefault(c => c.ProdutoId == itemId); AdicionarErroProcessamento($"O item {itemCarrinho.Nome} não está mais disponível no catálogo, o remova do carrinho para prosseguir com a compra"); } return(false); } foreach (var itemCarrinho in carrinho.Itens) { var produtoCatalogo = produtos.FirstOrDefault(p => p.Id == itemCarrinho.ProdutoId); if (produtoCatalogo.Valor != itemCarrinho.Valor) { var msgErro = $"O produto {itemCarrinho.Nome} mudou de valor (de: " + $"{string.Format(CultureInfo.GetCultureInfo("pt-BR"), "{0:C}", itemCarrinho.Valor)} para: " + $"{string.Format(CultureInfo.GetCultureInfo("pt-BR"), "{0:C}", produtoCatalogo.Valor)}) desde que foi adicionado ao carrinho."; AdicionarErroProcessamento(msgErro); var responseRemover = await _carrinhoService.RemoverItemCarrinho(itemCarrinho.ProdutoId); if (ResponsePossuiErros(responseRemover)) { AdicionarErroProcessamento($"Não foi possível remover automaticamente o produto {itemCarrinho.Nome} do seu carrinho, _" + "remova e adicione novamente caso ainda deseje comprar este item"); return(false); } itemCarrinho.Valor = produtoCatalogo.Valor; var responseAdicionar = await _carrinhoService.AdicionarItemCarrinho(itemCarrinho); if (ResponsePossuiErros(responseAdicionar)) { AdicionarErroProcessamento($"Não foi possível atualizar automaticamente o produto {itemCarrinho.Nome} do seu carrinho, _" + "adicione novamente caso ainda deseje comprar este item"); return(false); } LimparErrosProcessamento(); AdicionarErroProcessamento(msgErro + " Atualizamos o valor em seu carrinho, realize a conferência do pedido e se preferir remova o produto"); return(false); } } return(true); }
public async Task <IActionResult> RemoverItemCarrinho(Guid produtoId) { var produto = await catalogoService.ObterPorId(produtoId); if (produto == null) { AddErroProcessamento("Produto inexistente!"); return(CustomResponse()); } return(CustomResponse(await carrinhoService.RemoverItemCarrinho(produtoId))); }
public async Task <IActionResult> RemoverItemCarrinho(Guid produtoId) { var produto = await _catalogoService.ObterPorId(produtoId); if (produto is null) { AdicionarErroProcessamento("Produto inexistente."); return(CustomResponse()); } var response = await _carrinhoService.RemoverItemCarrinho(produtoId); return(CustomResponse(response)); }
public async Task <IActionResult> RemoverItemCarrinho(Guid produtoId) { var produto = await _catalogoService.ObterPorId(produtoId); if (produto == null) { AdicionarErroValidacao("Produto inexistente!"); return(View("Index", await _carrinhoService.ObterCarrinho())); } var resposta = await _carrinhoService.RemoverItemCarrinho(produtoId); if (ResponsePossuiErros(resposta)) { return(View("Index", await _carrinhoService.ObterCarrinho())); } return(RedirectToAction("Index")); }
public Carrinho RemoverItemCarrinho(Carrinho carrinho, int codigoProduto) { return(service.RemoverItemCarrinho(carrinho, codigoProduto)); }