// Adicionar no Carrinho public ActionResult Adicionar(ProdutoMontado produtoMontado, int tabelaPrecoId) { var produto = _db.ProdutosMontados .FirstOrDefault(p => p.ProdutoId == produtoMontado.ProdutoId && p.ProdutoTamanhoId == produtoMontado.ProdutoTamanhoId && p.ProdutoCorId == produtoMontado.ProdutoCorId); produto.TabelaPrecos = _db.TabelaPrecos.Where(c => c.Id == tabelaPrecoId).ToList(); if (!produto.TabelaPrecos.Any()) { return(Redirect(Request.UrlReferrer.AbsoluteUri)); } try { if (produto != null) { ObterCarrinho().AdicionarItem(produto); } TempData["MensagemCarrinhoOk"] = "Item adicionado com sucesso!"; } catch (Exception ex) { TempData["MensagemCarrinho"] = ex.Message; } return(RedirectToAction("CarrinhoDeCompras")); }
//Adicionar public void AdicionarItem(ProdutoMontado produtoMontado) { ItemCarrinho item; if (_userId == null) { item = _db.ItemCarrinhos .FirstOrDefault(p => p.ProdutoMontado.Id == produtoMontado.Id && p.AnonymousId == _userAnonymonusId); } else { item = _db.ItemCarrinhos .FirstOrDefault(p => p.ProdutoMontado.Id == produtoMontado.Id && p.ApplicationUserId == _userId); } if (_estoque.AvaliaDisponibilidade(produtoMontado.Id) <= 0) { throw new Exception("Item sem disponibilidade no estoque"); } var promocao = _db.PromocaoItems.FirstOrDefault(c => c.ProdutoMontadoId == produtoMontado.Id && c.Promocao.Ativo); if (promocao != null && !PromotionsController.VerificaPromocao(promocao.Promocao)) { promocao = null; } if (item == null) { item = new ItemCarrinho { PromocaoId = promocao?.PromocaoId, Data = DateTime.Now, ProdutoMontadoId = produtoMontado.Id, QuantidadeTotalItem = 1, ApplicationUserId = _userId, AnonymousId = _userAnonymonusId, TabelaPrecoId = produtoMontado.TabelaPrecos.First().Id, Status = Status.Alocado }; _db.ItemCarrinhos.Add(item); } else { item.QuantidadeTotalItem += 1; _db.Entry(item).State = System.Data.Entity.EntityState.Modified; } var localLoja = _db.Parametros.First().local_loja; var movEstoque = _db.Estoques.First(c => c.ProdutoMontadoId == produtoMontado.Id && c.LocalId == localLoja); movEstoque.SaldoAlocado += 1; _db.Entry(movEstoque).State = System.Data.Entity.EntityState.Modified; _db.SaveChanges(); }
private MvcHtmlString AvaliacaoPorcentual(ProdutoMontado produtoMontado) { if (produtoMontado.AvaliacaoProduto.Any()) { var sim = produtoMontado.AvaliacaoProduto.Count(c => c.Recomendaria == Recomendaria.Sim); var total = produtoMontado.AvaliacaoProduto.Count; var porcent = (sim / total) * 100; return(MvcHtmlString.Create("<p><h2><span class='text-success'>" + porcent + "%</span></h2> dos clientes recomendam este produto.</p>")); } else { return(MvcHtmlString.Create("<a href='#avaliacaoProduto' class='btn btn-success btn-sm'>Avaliação de produtos</a>")); } }
private MvcHtmlString NotaEstrelas(ProdutoMontado produtoMontado) { var nota = produtoMontado.AvaliacaoProduto.Any() ? produtoMontado.AvaliacaoProduto.Average(c => c.Nota) : 0; StringBuilder estrelas = new StringBuilder(); for (int i = 0; i < 5; i++) { if (i < nota) { estrelas.Append("<i class='glyphicon glyphicon-star' style='font-size: 15px; color:#ffd800;'></i>"); } else { estrelas.Append("<i class='glyphicon glyphicon-star' style='font-size: 15px; color:gray;'></i>"); } } estrelas.Append("<span>(" + produtoMontado.AvaliacaoProduto.Count + ")</span>"); return(MvcHtmlString.Create(estrelas.ToString())); }
//Remover public void RemoverItem(ProdutoMontado produtoMontado) { ItemCarrinho item; if (_userId == null) { item = _db.ItemCarrinhos .FirstOrDefault(p => p.ProdutoMontado.Id == produtoMontado.Id && p.AnonymousId == _userAnonymonusId); } else { item = _db.ItemCarrinhos .FirstOrDefault(p => p.ProdutoMontado.Id == produtoMontado.Id && p.ApplicationUserId == _userId); } _db.ItemCarrinhos.Remove(item); var movEstoque = _db.Estoques.First(c => c.ProdutoMontadoId == produtoMontado.Id); movEstoque.SaldoAlocado -= item.QuantidadeTotalItem; _db.Entry(movEstoque).State = System.Data.Entity.EntityState.Modified; _db.SaveChanges(); }