public JsonResult BuscaCidades(string prefix)
        {
            CidadeCadastro cidadeNeg = new CidadeCadastro();

            var cidades = cidadeNeg.BuscaCidades(prefix);

            return(Json(cidades, JsonRequestBehavior.AllowGet));
        }
        public JsonResult FinalizarPedido(DadosPedido pedido)
        {
            Cliente cliente = Session["Cliente"] as Cliente;

            Endereco enderecoEntrega = new Endereco();

            enderecoEntrega.Rua    = pedido.Endereco;
            enderecoEntrega.CEP    = Convert.ToInt64(pedido.CEP);
            enderecoEntrega.Numero = pedido.Numero;
            enderecoEntrega.Bairro = pedido.Bairro;

            Session["ValorFrete"]  = pedido.ValorFrete;
            Session["DadosPedido"] = pedido;

            CidadeCadastro cidadeNeg = new CidadeCadastro();

            Cidade cidade = cidadeNeg.BuscaCidade(pedido.Cidade);

            if (cidade == null)
            {
                return(Json(new { CodRetorno = "aviso", Mensagem = "Cidade não encontrada" }));
            }
            else
            {
                enderecoEntrega.Cidade = cidade;
            }

            enderecoEntrega.Complemento = pedido.Complemento;

            PedidoCliente pedidoCliente = new PedidoCliente
            {
                Data            = DateTime.Now,
                EnderecoEntrega = enderecoEntrega,
                IdCliente       = cliente.Id,
                Status          = Dominio.Enums.StatusPedido.AguardandoConfirmacaoPagamento
            };

            List <Produto> carrinho = Session["Carrinho"] as List <Produto> ?? new List <Produto>();

            ProdutoCadastro produtoNeg = new ProdutoCadastro();

            if (produtoNeg.ValidaQuantidadeEstoque(carrinho))
            {
                var produtos = carrinho
                               .GroupBy(x => x.IdProduto)
                               .Select(x => new PedidoClienteProduto
                {
                    Produto    = x.FirstOrDefault(),
                    Quantidade = x.Count()
                }).ToList();

                pedidoCliente.Produtos = produtos;

                Session["PedidoCliente"] = pedidoCliente;

                return(Json(new { CodRetorno = "sucesso", Mensagem = "Você será redirecionado para conclusão do pedido" }));
            }
            else
            {
                Session["Carrinho"]      = null;
                Session["DadosPedido"]   = null;
                Session["PedidoCliente"] = null;
                return(Json(new { CodRetorno = "erro", Mensagem = "Os produtos não estão mais disponíveis" }));
            }
        }