public ActionResult <Endereco> GetEnderecoById(string enderecoId) { var endereco = _enderecoRepository.BuscarEndereco(enderecoId); if (endereco == null) { return(NotFound()); } return(endereco); }
public Carrinho AddEndereco(string userId, string enderecoId) { if (userId.Length == 24 && enderecoId.Length == 24) { var carrinho = _carrinhoService.GetCarrinhoByUser(userId); var endereco = _enderecoRepository.BuscarEndereco(enderecoId); if (endereco != null) { if (endereco.User == userId) { carrinho.EnderecoId = enderecoId; _carrinhoService.UpdateCarrinho(carrinho, userId); return(_carrinhoService.GetCarrinhoByUser(userId)); } } } return(null); }
public Pedido CriarPedido(string userId, Carrinho carrinho) { if (carrinho != null) { Random number = new Random(); var endereco = _enderecoRepository.BuscarEndereco(carrinho.EnderecoId); Pedido pedido = new Pedido(); List <Venda> listaVenda = new List <Venda>(); pedido.Produtos = new List <ProdutosCarrinho>(); pedido.NumPedido = number.Next(10000, 99999); pedido.UserId = userId; pedido.NomeEndereco = endereco.NomeEndereco; pedido.Uf = endereco.Uf; pedido.Cidade = endereco.Cidade; pedido.Cep = endereco.Cep; pedido.Bairro = endereco.Bairro; pedido.Rua = endereco.Rua; pedido.Numero = endereco.Numero; pedido.Complemento = endereco.Complemento; pedido.DataPedidoRealizado = DateTime.Now; pedido.StatusFinalizado = false; pedido.statusPagamento = false; //Verificar se todos os produtos estão ativos e com estoque foreach (ProdutosCarrinho prod in carrinho.Produtos) { var produto = _produtoRepository.BuscarProduto(prod.IdProduto); if (produto.Quantity < prod.Quantidade || !produto.Ativo) { return(null); } } //Somar preços e atualizar estoque dos produtos foreach (ProdutosCarrinho prod in carrinho.Produtos) { ProdutosCarrinho produtoCarrinho = new ProdutosCarrinho(); Venda venda = new Venda(); var produto = _produtoRepository.BuscarProduto(prod.IdProduto); pedido.VlTotal += (prod.Preco * prod.Quantidade); pedido.VlFrete += (prod.Frete * prod.Quantidade); //Atualizar estoque produto.Quantity -= prod.Quantidade; produto.Carrinhos.Remove(carrinho.Id); _produtoRepository.AtualizarProduto(prod.IdUserVenda, prod.IdProduto, produto); //Adicionar produto no pedido produtoCarrinho.Preco = prod.Preco * prod.Quantidade; produtoCarrinho.Quantidade = prod.Quantidade; produtoCarrinho.NameProduto = prod.NameProduto; produtoCarrinho.IdUserVenda = prod.IdUserVenda; produtoCarrinho.IdProduto = prod.IdProduto; produtoCarrinho.url_imagem = prod.url_imagem; produtoCarrinho.Frete = prod.Frete; produtoCarrinho.StatusCancelado = false; produtoCarrinho.StatusEmTransporte = false; produtoCarrinho.StatusEntregue = false; pedido.Produtos.Add(produtoCarrinho); //criar pedido de venda venda.BairroCompra = pedido.Bairro; venda.CepCompra = pedido.Cep; venda.CidadeCompra = pedido.Cidade; venda.Complemento = pedido.Complemento; venda.NomeEnderecoCompra = pedido.NomeEndereco; venda.NumeroCompra = pedido.Numero; venda.PedidoIdCompra = pedido.Id; venda.RuaCompra = pedido.Rua; venda.UfCompra = pedido.Uf; venda.NumPedido = pedido.NumPedido; venda.DataPedidoRealizadoCompra = DateTime.Now; venda.StatusCancelado = false; venda.StatusEmTransporte = false; venda.StatusFinalizado = false; venda.IdProdutoCompra = produto.Id; venda.UserIdVenda = produto.User; venda.VlTotalCompra = prod.Preco * prod.Quantidade; venda.VlFreteCompra = prod.Frete * prod.Quantidade; venda.VlFinalCompra = venda.VlTotalCompra + venda.VlFreteCompra; venda.NomeProduto = prod.NameProduto; venda.Url_imagem = prod.url_imagem; venda.Quandidade = prod.Quantidade; Venda v = CriarVenda(venda); listaVenda.Add(v); } pedido.VlFinal = pedido.VlTotal + pedido.VlFrete; var user = _usuarioRepository.BuscarUsuario(userId); string products = ""; foreach (var prod in pedido.Produtos) { products = products + "\n" + prod.NameProduto; } _emailRepository.EnviarEmail(user.Email, "Pedido confirmado com sucesso!", $"Caro(a) {user.Name}, \n\nseu pedido de número {pedido.NumPedido} foi processado em nosso sistema.\n\nObrigado por comprar em nossa loja!"); Pedido pedidoFinal = _pedidoService.CreatePedido(pedido); foreach (Venda v in listaVenda) { v.PedidoIdCompra = pedidoFinal.Id; _vendaService.UpdateSale(v, v.Id); } return(pedidoFinal); } return(null); }