TreeNode resolve_UOL(UOL u, TreeNode node) { string[] dirs = u.uol.Split('/'); node = node.Parent; foreach(string dir in dirs){ switch (dir) { case "": break; case "..": node = node.Parent; break; default: node = FindNode(node, dir); break; } } object tag = node.Tag; if(tag.GetType().Name == "UOL") { node = resolve_UOL((UOL)tag, node); } return node; }
protected void RetornoPagSeguro1_VendaEfetuada(UOL.PagSeguro.RetornoVenda retornoVenda) { #region Recuperando dados retornados pelo PagSeguro /* #region Detalhes da Transação //Obtendo o número do Pedido string codigo_pedido = retornoVenda.CodigoReferencia; //Obtendo o código da transação no PagSeguro string codigo_transacao_pagseguro = retornoVenda.CodigoTransacao; //Obtendo o novo status da transação StatusTransacao statusTransacao = retornoVenda.StatusTransacao; string statusDescricao = retornoVenda.StatusTransacaoDescricao; //Obtendo a data da transação DateTime dataTransacao = retornoVenda.Data; #endregion #region Detalhes do Pedido //Obtendo a forma de pagamento utilizada TipoPagamento tipo_pagamento = retornoVenda.TipoPagamento; string tipo_pagamento_descricao = retornoVenda.TipoPagamentoDescricao; //Obtendo o tipo do frete UOL.PagSeguro.TipoFreteRetorno tipoFrete = retornoVenda.TipoFrete; string tipoFreteDescricao = retornoVenda.TipoFreteDescricao; //Obtendo o valor pago pelo frete double frete_cobrado = retornoVenda.ValorFrete; //Obtendo extras double extras = retornoVenda.Extras; //Obtendo a anotação deixada pelo cliente no momento do pagamento string anotacao_cliente = retornoVenda.Anotacao; //Obtendo o número de itens vendidos int numItens = retornoVenda.Produtos.Sum(p => p.Quantidade); #endregion #region Detalhes do Cliente string cliBairro = retornoVenda.Cliente.Bairro; string cliCep = retornoVenda.Cliente.Cep; string cliCidade = retornoVenda.Cliente.Cidade; string cliComplementoEndereco = retornoVenda.Cliente.ComplementoEndereco; int cliDdd = retornoVenda.Cliente.DDD; string cliEmail = retornoVenda.Cliente.Email; string cliEndereco = retornoVenda.Cliente.Endereco; string cliNome = retornoVenda.Cliente.Nome; string cliNumero = retornoVenda.Cliente.Numero; string cliPais = retornoVenda.Cliente.Pais; int cliTelefone = retornoVenda.Cliente.Telefone; string cliUf = retornoVenda.Cliente.Uf; #endregion */ #endregion #region Atualiza registros no banco de dados /* bool erro = false; #region Tabela produtos_vendas try { DataTable dtVendaExistente = Produtos_Vendas.selectByIdTransacao(codigo_transacao_pagseguro); if (dtVendaExistente != null && dtVendaExistente.Rows.Count == 0) { //Nova venda Produtos_Vendas.Inserir(null, codigo_transacao_pagseguro, tipoFreteDescricao, statusDescricao, tipo_pagamento_descricao, frete_cobrado.ToString("f2"), anotacao_cliente, cliEmail, numItens.ToString(), retornoVenda); } else { //Atualizar dados da venda DataRow drVenda = dtVendaExistente.Rows[0]; string idVenda = drVenda["id"].ToString(); string statusTransacaoAntigo = drVenda["status_descricao"].ToString().ToLower(); Produtos_Vendas.UpdateById(idVenda, null, codigo_transacao_pagseguro, statusDescricao, tipo_pagamento_descricao, frete_cobrado.ToString("f2"), anotacao_cliente, cliEmail, retornoVenda, statusTransacaoAntigo); } } catch { erro = true; } #endregion #region Tabela Cliente if (!erro) { DataTable dtClienteExistente = Clientes.SelectByEmail(cliEmail); if (dtClienteExistente != null && dtClienteExistente.Rows.Count == 0) { //Novo Cliente Clientes.Inserir(cliNome, cliEmail, cliEndereco, cliNumero, cliComplementoEndereco, cliBairro, cliCidade, cliUf, cliCep, string.Format("{0} {1}", cliDdd, cliTelefone), "1", "1"); } else { //Atualizar Dados do Cliente DataRow drcliente = dtClienteExistente.Rows[0]; string idCliente = drcliente["cliente_id"].ToString(); Clientes.Atualizar(idCliente, cliNome, cliEmail, cliEndereco, cliNumero, cliComplementoEndereco, cliBairro, cliCidade, cliUf, cliCep, string.Format("{0} {1}", cliDdd, cliTelefone), "1", "1"); } } #endregion */ #endregion }