예제 #1
0
        public void Exportar(InfoPedido[] pedidos)
        {
            Email[] emails = null;

            try
            {
                using (var scope = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 0, 55)))
                {
                    emails = PedidoDAL.Atualiza(pedidos);
                    scope.Complete();
                }
            }
            catch (Exception exception)
            {
                DAL.LogErro.Registrar(exception.Message);
                //throw;
            }

            if (emails != null)
            {
                foreach (var email in emails)
                {
                    EmailDAL.Enviar(email);
                }
            }

            Atualizacao a = new Atualizacao();
            //a.Executa();
        }
예제 #2
0
 private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
 {
     Atualizacao atualizacao = new Atualizacao();
     atualizacao.ShowDialog();
 }
예제 #3
0
 public string AtualizarVersao([FromBody] Atualizacao atualizacao)
 {
     return(new AtualizacaoRepository().AtualizarVersao(atualizacao));
 }
예제 #4
0
        void SincronizarCompleted(object sender, SincronizarCompletedEventArgs e)
        {
            try
            {
                if (e.Result != null)
                {
                    Atualizacao atualizacao = e.Result;
                    BancoDeDados.BeginTransaction();
                    BancoDeDados.DeleteAll <Log>();

                    #region Cliente
                    List <Cliente> clientes = new List <Cliente>(atualizacao.clientes.Count);
                    foreach (ClienteWS item in atualizacao.clientes)
                    {
                        clientes.Add(new Cliente()
                        {
                            Id          = item.Id,
                            Nome        = item.Nome,
                            Cpf         = item.Cpf,
                            Rua         = item.Rua,
                            Numero      = item.Numero,
                            Bairro      = item.Bairro,
                            Cidade      = item.Cidade,
                            Uf          = item.Uf,
                            Cep         = item.Cep,
                            Complemento = item.Complemento,
                            Telefone    = item.Telefone,
                            Email       = item.Email,
                            Ativo       = item.Ativo
                        });
                    }

                    BancoDeDados.Atualiza <Cliente>(clientes);
                    #endregion

                    #region Produto
                    List <Produto> produtos = new List <Produto>(atualizacao.produtos.Count);
                    foreach (ProdutoWS item in atualizacao.produtos)
                    {
                        produtos.Add(new Produto()
                        {
                            Id      = item.Id,
                            Nome    = item.Nome,
                            Estoque = item.Estoque,
                            Valor   = item.Valor,
                            Ativo   = item.Ativo
                        });
                    }

                    BancoDeDados.Atualiza <Produto>(produtos);
                    #endregion

                    #region Pedido
                    List <Pedido> pedidos = new List <Pedido>(atualizacao.pedidos.Count);
                    foreach (PedidoWS item in atualizacao.pedidos)
                    {
                        pedidos.Add(new Pedido()
                        {
                            Id            = item.Id,
                            IdCliente     = item.IdCliente,
                            IdVendedor    = item.IdVendedor,
                            Valor         = item.Valor,
                            DataEmissao   = item.DataEmissao,
                            DataPagamento = item.DataPagamento,
                            Observacoes   = item.Observacoes
                        });
                    }

                    BancoDeDados.Atualiza <Pedido>(pedidos);
                    #endregion

                    #region Produtos Pedido
                    List <ProdutoPedido> produtospedido = new List <ProdutoPedido>(atualizacao.produtospedido.Count);
                    foreach (ProdutoPedidoWS item in atualizacao.produtospedido)
                    {
                        produtospedido.Add(new ProdutoPedido()
                        {
                            Id                 = item.Id,
                            IdPedido           = item.IdPedido,
                            IdProduto          = item.IdProduto,
                            Valor              = item.Valor,
                            Quantidade         = item.Quantidade,
                            QuantidadeEntregue = item.QuantidadeEntregue
                        });
                    }

                    BancoDeDados.Atualiza <ProdutoPedido>(produtospedido);
                    #endregion

                    #region Receber
                    List <Receber> receber = new List <Receber>(atualizacao.receber.Count);
                    foreach (ReceberWS item in atualizacao.receber)
                    {
                        receber.Add(new Receber()
                        {
                            Id         = item.Id,
                            IdPedido   = item.IdPedido,
                            Ordem      = item.Ordem,
                            Valor      = item.Valor,
                            Vencimento = item.Vencimento,
                            Pagamento  = item.Pagamento
                        });
                    }

                    BancoDeDados.Atualiza <Receber>(receber);
                    #endregion

                    #region Anotacao
                    List <Anotacao> anotacoes = new List <Anotacao>(atualizacao.anotacoes.Count);
                    foreach (AnotacaoWS item in atualizacao.anotacoes)
                    {
                        anotacoes.Add(new Anotacao()
                        {
                            Id                  = item.Id,
                            IdPedido            = item.IdPedido,
                            Data                = item.Data,
                            DataUltimaAlteracao = item.DataUltimaAlteracao,
                            Texto               = item.Texto
                        });
                    }

                    BancoDeDados.Atualiza <Anotacao>(anotacoes);
                    #endregion

                    #region Vendedor
                    List <Vendedor> vendedores = new List <Vendedor>(atualizacao.vendedores.Count);
                    foreach (VendedorWS item in atualizacao.vendedores)
                    {
                        vendedores.Add(new Vendedor()
                        {
                            Id   = item.Id,
                            Nome = item.Nome
                        });
                    }

                    BancoDeDados.Atualiza <Vendedor>(vendedores);
                    #endregion

                    if (atualizacao.maxIdAnotacao != null || atualizacao.maxIdCliente != null || atualizacao.maxIdPedido != null || atualizacao.maxIdProdutoPedido != null || atualizacao.maxIdReceber != null)
                    {
                        Id id = new Id()
                        {
                            Anotacao      = atualizacao.maxIdAnotacao ?? 0,
                            Cliente       = atualizacao.maxIdCliente ?? 0,
                            Pedido        = atualizacao.maxIdPedido ?? 0,
                            ProdutoPedido = atualizacao.maxIdProdutoPedido ?? 0,
                            Receber       = atualizacao.maxIdReceber ?? 0
                        };
                        BancoDeDados.DeleteAll <Id>();
                        BancoDeDados.Insert <Id>(id);
                    }

                    Sinc        sinc = new Sinc();
                    List <Sinc> ls   = BancoDeDados.Query <Sinc>("select * from Sinc");
                    if (ls.Count > 0)
                    {
                        sinc.UltimaSinc = atualizacao.dtAtualizado.Ticks > ls[0].UltimaSinc ? atualizacao.dtAtualizado.Ticks : ls[0].UltimaSinc;
                    }
                    else
                    {
                        sinc.UltimaSinc = atualizacao.dtAtualizado.Ticks;
                    }
                    sinc.IdCelular = atualizacao.idCelular;

                    BancoDeDados.DeleteAll <Sinc>();
                    BancoDeDados.Insert <Sinc>(sinc);
                    BancoDeDados.CommitTransaction();
                    erro = false;
                }
                else
                {
                    erro = true;
                }
            }
            catch (Exception)
            {
                erro = true;
                BancoDeDados.RollbackTransaction();
            }
            concluiu = true;
        }
예제 #5
0
        public Atualizacao Sincronizar(List<string> atualizacoes, DateTime ultimaSincronizacao, string identificacao)
        {
            BancoDeDados bd = new BancoDeDados();
            try
            {
                if (bd.BeginTransaction())
                {
                    foreach (string sql in atualizacoes)
                    {
                        NpgsqlCommand comando = new NpgsqlCommand(sql);
                        bd.NonQuery(comando);
                    }

                    Atualizacao atualizacao = new Atualizacao();
                    bool buscarIds = false;

                    #region Identificacao
                    NpgsqlCommand command = new NpgsqlCommand("SELECT id FROM celular WHERE identificacao = '" + identificacao + "'");
                    DataSet ds = bd.Query(command);
                    if (ds == null) return null;
                    DataTableReader dtr = ds.CreateDataReader();

                    if (dtr.Read())
                    {
                        atualizacao.idCelular = dtr.GetInt32(0);
                        if (ultimaSincronizacao.Ticks == 0)
                            buscarIds = true;
                    }
                    else
                    {
                        command = new NpgsqlCommand("INSERT INTO celular(identificacao) VALUES ('" + identificacao + "')");
                        bd.NonQuery(command);
                        command = new NpgsqlCommand("SELECT id FROM celular WHERE identificacao = '" + identificacao + "'");
                        ds = bd.Query(command);
                        if (ds == null) return null;
                        dtr = ds.CreateDataReader();
                        dtr.Read();
                        atualizacao.idCelular = dtr.GetInt32(0);
                    }
                    #endregion

                    #region Cliente
                    command = new NpgsqlCommand(@"SELECT id, nome, cpf, rua, numero, bairro, cidade, uf, cep, complemento, telefone, email, ativo, alteracao
            FROM cliente WHERE alteracao > @alt ORDER BY Id");
                    command.Parameters.Add("alt", NpgsqlDbType.Timestamp).Value = ultimaSincronizacao;
                    ds = bd.Query(command);
                    if (ds == null) return null;
                    dtr = ds.CreateDataReader();
                    List<ClienteWS> clientes = new List<ClienteWS>();

                    while (dtr.Read())
                    {
                        clientes.Add(new ClienteWS()
                        {
                            Id = dtr.GetString(0),
                            Nome = dtr.GetString(1),
                            Cpf = dtr.GetString(2),
                            Rua = dtr.GetString(3),
                            Numero = dtr.GetString(4),
                            Bairro = dtr.GetString(5),
                            Cidade = dtr.GetString(6),
                            Uf = dtr.GetString(7),
                            Cep = (dtr.IsDBNull(8) || string.IsNullOrWhiteSpace(dtr.GetString(8))) ? null : dtr.GetString(8),
                            Complemento = (dtr.IsDBNull(9) || string.IsNullOrWhiteSpace(dtr.GetString(9))) ? null : dtr.GetString(9),
                            Telefone = (dtr.IsDBNull(10) || string.IsNullOrWhiteSpace(dtr.GetString(10))) ? null : dtr.GetString(10),
                            Email = (dtr.IsDBNull(11) || string.IsNullOrWhiteSpace(dtr.GetString(11))) ? null : dtr.GetString(11),
                            Ativo = dtr.GetBoolean(12)
                        });
                        if (atualizacao.dtAtualizado == null || atualizacao.dtAtualizado < dtr.GetDateTime(13))
                        {
                            atualizacao.dtAtualizado = dtr.GetDateTime(13);
                        }
                        if (buscarIds)
                        {
                            string[] aux = dtr.GetString(0).Split('/');
                            int id = Convert.ToInt32(aux[1]);
                            if (atualizacao.idCelular == Convert.ToInt32(aux[0]) && (atualizacao.maxIdCliente == null || atualizacao.maxIdCliente < id))
                                atualizacao.maxIdCliente = id;
                        }
                    }

                    atualizacao.clientes = clientes;
                    #endregion

                    #region Produto
                    command = new NpgsqlCommand(@"SELECT id, nome, estoque, valor, ativo, alteracao
            FROM produto WHERE alteracao > @alt ORDER BY Id");
                    command.Parameters.Add("alt", NpgsqlDbType.Timestamp).Value = ultimaSincronizacao;
                    ds = bd.Query(command);
                    if (ds == null) return null;
                    dtr = ds.CreateDataReader();
                    List<ProdutoWS> produtos = new List<ProdutoWS>();

                    while (dtr.Read())
                    {
                        produtos.Add(new ProdutoWS()
                        {
                            Id = dtr.GetInt32(0),
                            Nome = dtr.GetString(1),
                            Estoque = dtr.GetDecimal(2),
                            Valor = dtr.GetDecimal(3),
                            Ativo = dtr.GetBoolean(4)
                        });
                        if (atualizacao.dtAtualizado == null || atualizacao.dtAtualizado < dtr.GetDateTime(5))
                        {
                            atualizacao.dtAtualizado = dtr.GetDateTime(5);
                        }
                    }

                    atualizacao.produtos = produtos;
                    #endregion

                    #region Pedido
                    command = new NpgsqlCommand(@"SELECT id, id_cliente, id_vendedor, valor, data_emissao, data_pagamento, observacoes, alteracao
            FROM pedido WHERE alteracao > @alt ORDER BY Id");
                    command.Parameters.Add("alt", NpgsqlDbType.Timestamp).Value = ultimaSincronizacao;
                    ds = bd.Query(command);
                    if (ds == null) return null;
                    dtr = ds.CreateDataReader();
                    List<PedidoWS> pedidos = new List<PedidoWS>();

                    while (dtr.Read())
                    {
                        pedidos.Add(new PedidoWS()
                        {
                            Id = dtr.GetString(0),
                            IdCliente = dtr.GetString(1),
                            IdVendedor = dtr.GetInt32(2),
                            Valor = dtr.GetDecimal(3),
                            DataEmissao = dtr.GetDateTime(4),
                            DataPagamento = dtr.GetDateTime(5),
                            Observacoes = dtr.GetString(6)
                        });
                        if (atualizacao.dtAtualizado == null || atualizacao.dtAtualizado < dtr.GetDateTime(7))
                        {
                            atualizacao.dtAtualizado = dtr.GetDateTime(7);
                        }
                        if (buscarIds)
                        {
                            string[] aux = dtr.GetString(0).Split('/');
                            int id = Convert.ToInt32(aux[1]);
                            if (atualizacao.idCelular == Convert.ToInt32(aux[0]) && (atualizacao.maxIdPedido == null || atualizacao.maxIdPedido < id))
                                atualizacao.maxIdPedido = id;
                        }
                    }

                    atualizacao.pedidos = pedidos;
                    #endregion

                    #region Produtos Pedido
                    command = new NpgsqlCommand(@"SELECT id, id_pedido, id_produto, valor, quantidade, quantidade_entregue, alteracao
            FROM produto_pedido WHERE alteracao > @alt ORDER BY Id");
                    command.Parameters.Add("alt", NpgsqlDbType.Timestamp).Value = ultimaSincronizacao;
                    ds = bd.Query(command);
                    if (ds == null) return null;
                    dtr = ds.CreateDataReader();
                    List<ProdutoPedidoWS> produtospedido = new List<ProdutoPedidoWS>();

                    while (dtr.Read())
                    {
                        produtospedido.Add(new ProdutoPedidoWS()
                        {
                            Id = dtr.GetString(0),
                            IdPedido = dtr.GetString(1),
                            IdProduto = dtr.GetInt32(2),
                            Valor = dtr.GetDecimal(3),
                            Quantidade = dtr.GetDecimal(4),
                            QuantidadeEntregue = dtr.GetDecimal(5)
                        });
                        if (atualizacao.dtAtualizado == null || atualizacao.dtAtualizado < dtr.GetDateTime(6))
                        {
                            atualizacao.dtAtualizado = dtr.GetDateTime(6);
                        }
                        if (buscarIds)
                        {
                            string[] aux = dtr.GetString(0).Split('/');
                            int id = Convert.ToInt32(aux[1]);
                            if (atualizacao.idCelular == Convert.ToInt32(aux[0]) && (atualizacao.maxIdProdutoPedido == null || atualizacao.maxIdProdutoPedido < id))
                                atualizacao.maxIdProdutoPedido = id;
                        }
                    }

                    atualizacao.produtospedido = produtospedido;
                    #endregion

                    #region Receber
                    command = new NpgsqlCommand(@"SELECT id, id_pedido, ordem, valor, vencimento, pagamento, alteracao
            FROM receber WHERE alteracao > @alt ORDER BY Id");
                    command.Parameters.Add("alt", NpgsqlDbType.Timestamp).Value = ultimaSincronizacao;
                    ds = bd.Query(command);
                    if (ds == null) return null;
                    dtr = ds.CreateDataReader();
                    List<ReceberWS> receber = new List<ReceberWS>();

                    while (dtr.Read())
                    {
                        receber.Add(new ReceberWS()
                        {
                            Id = dtr.GetString(0),
                            IdPedido = dtr.GetString(1),
                            Ordem = dtr.GetInt32(2),
                            Valor = dtr.GetDecimal(3),
                            Vencimento = dtr.GetDateTime(4),
                            Pagamento = dtr.GetDateTime(5),
                        });
                        if (atualizacao.dtAtualizado == null || atualizacao.dtAtualizado < dtr.GetDateTime(6))
                        {
                            atualizacao.dtAtualizado = dtr.GetDateTime(6);
                        }
                        if (buscarIds)
                        {
                            string[] aux = dtr.GetString(0).Split('/');
                            int id = Convert.ToInt32(aux[1]);
                            if (atualizacao.idCelular == Convert.ToInt32(aux[0]) && (atualizacao.maxIdReceber == null || atualizacao.maxIdReceber < id))
                                atualizacao.maxIdReceber = id;
                        }
                    }

                    atualizacao.receber = receber;
                    #endregion

                    #region Anotacao
                    command = new NpgsqlCommand(@"SELECT id, id_pedido, data, data_ultima_alteracao, texto, alteracao
            FROM anotacao WHERE alteracao > @alt ORDER BY Id");
                    command.Parameters.Add("alt", NpgsqlDbType.Timestamp).Value = ultimaSincronizacao;
                    ds = bd.Query(command);
                    if (ds == null) return null;
                    dtr = ds.CreateDataReader();
                    List<AnotacaoWS> anotacoes = new List<AnotacaoWS>();

                    while (dtr.Read())
                    {
                        anotacoes.Add(new AnotacaoWS()
                        {
                            Id = dtr.GetString(0),
                            IdPedido = dtr.GetString(1),
                            Data = dtr.GetDateTime(2),
                            DataUltimaAlteracao = dtr.GetDateTime(3),
                            Texto = dtr.GetString(4)
                        });
                        if (atualizacao.dtAtualizado == null || atualizacao.dtAtualizado < dtr.GetDateTime(5))
                        {
                            atualizacao.dtAtualizado = dtr.GetDateTime(5);
                        }
                        if (buscarIds)
                        {
                            string[] aux = dtr.GetString(0).Split('/');
                            int id = Convert.ToInt32(aux[1]);
                            if (atualizacao.idCelular == Convert.ToInt32(aux[0]) && (atualizacao.maxIdAnotacao == null || atualizacao.maxIdAnotacao < id))
                                atualizacao.maxIdAnotacao = id;
                        }
                    }

                    atualizacao.anotacoes = anotacoes;
                    #endregion

                    #region Vendedor
                    command = new NpgsqlCommand(@"SELECT id, nome, alteracao
            FROM vendedor WHERE alteracao > @alt ORDER BY Id");
                    command.Parameters.Add("alt", NpgsqlDbType.Timestamp).Value = ultimaSincronizacao;
                    ds = bd.Query(command);
                    if (ds == null) return null;
                    dtr = ds.CreateDataReader();
                    List<VendedorWS> vendedores = new List<VendedorWS>();

                    while (dtr.Read())
                    {
                        vendedores.Add(new VendedorWS()
                        {
                            Id = dtr.GetInt32(0),
                            Nome = dtr.GetString(1)
                        });
                        if (atualizacao.dtAtualizado == null || atualizacao.dtAtualizado < dtr.GetDateTime(2))
                        {
                            atualizacao.dtAtualizado = dtr.GetDateTime(2);
                        }
                    }

                    atualizacao.vendedores = vendedores;
                    #endregion

                    if (bd.CommitTransaction())
                        return atualizacao;
                    else
                        bd.RollbackTransaction();
                }
            }catch(Exception)
            {
                bd.RollbackTransaction();
            }
            return null;
        }