Exemplo n.º 1
0
        public ActionResult <Endereco> GetEnderecoById(string enderecoId)
        {
            var endereco = _enderecoRepository.BuscarEndereco(enderecoId);

            if (endereco == null)
            {
                return(NotFound());
            }
            return(endereco);
        }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 3
0
        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);
        }