예제 #1
0
        public void AnalisarESalvar()
        {
            using (var db = new AplicativoContext())
            {
                List <NFeDI> Adicionar = new List <NFeDI>();
                List <NFeDI> Atualizar = new List <NFeDI>();

                if (NotasFiscais != null)
                {
                    for (int i = 0; i < NotasFiscais.Length; i++)
                    {
                        var novo  = NotasFiscais[i];
                        var atual = db.NotasFiscais.FirstOrDefault(x => x.Id == novo.Id);
                        if (atual == null)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Adicionar.Add(novo);
                        }
                        else if (novo.UltimaData > atual.UltimaData)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Atualizar.Add(novo);
                        }
                    }
                }

                db.AddRange(Adicionar);
                db.UpdateRange(Atualizar);
                db.SaveChanges();
            }
        }
예제 #2
0
        public void AnalisarESalvar()
        {
            List <AlteracaoEstoque>[]    AlteracoesEstoque = null;
            List <ProdutoSimplesVenda>[] ProdutosVendas    = null;

            using (var db = new AplicativoContext())
            {
                List <object> Adicionar = new List <object>();
                List <object> Atualizar = new List <object>();

                if (Clientes != null)
                {
                    for (int i = 0; i < Clientes.Length; i++)
                    {
                        var novo  = Clientes[i];
                        var atual = db.Clientes.FirstOrDefault(x => x.Id == novo.Id);
                        if (atual == null)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Adicionar.Add(novo);
                        }
                        else if (novo.UltimaData > atual.UltimaData)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Atualizar.Add(novo);
                        }
                    }
                }

                if (Emitentes != null)
                {
                    for (int i = 0; i < Emitentes.Length; i++)
                    {
                        var novo  = Emitentes[i];
                        var atual = db.Emitentes.FirstOrDefault(x => x.Id == novo.Id);
                        if (atual == null)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Adicionar.Add(novo);
                        }
                        else if (novo.UltimaData > atual.UltimaData)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Atualizar.Add(novo);
                        }
                    }
                }

                if (Motoristas != null)
                {
                    for (int i = 0; i < Motoristas.Length; i++)
                    {
                        var novo  = Motoristas[i];
                        var atual = db.Motoristas.FirstOrDefault(x => x.Id == novo.Id);
                        if (atual == null)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Adicionar.Add(novo);
                        }
                        else if (novo.UltimaData > atual.UltimaData)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Atualizar.Add(novo);
                        }
                    }
                }

                if (Vendedores != null)
                {
                    for (int i = 0; i < Vendedores.Length; i++)
                    {
                        var novo  = Vendedores[i];
                        var atual = db.Vendedores.FirstOrDefault(x => x.Id == novo.Id);
                        if (atual == null)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Adicionar.Add(novo);
                        }
                        else if (novo.UltimaData > atual.UltimaData)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Atualizar.Add(novo);
                        }
                    }
                }

                if (Produtos != null)
                {
                    for (int i = 0; i < Produtos.Length; i++)
                    {
                        var novo  = Produtos[i];
                        var atual = db.Produtos.FirstOrDefault(x => x.Id == novo.Id);
                        if (atual == null)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Adicionar.Add(novo);
                        }
                        else if (novo.UltimaData > atual.UltimaData)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Atualizar.Add(novo);
                        }
                    }
                }

                if (Veiculos != null)
                {
                    for (int i = 0; i < Veiculos.Length; i++)
                    {
                        var novo  = Veiculos[i];
                        var atual = db.Veiculos.FirstOrDefault(x => x.Id == novo.Id);
                        if (atual == null)
                        {
                            Adicionar.Add(novo);
                        }
                    }
                }

                if (Cancelamentos != null)
                {
                    for (int i = 0; i < Cancelamentos.Length; i++)
                    {
                        var novo  = Cancelamentos[i];
                        var atual = db.Cancelamentos.FirstOrDefault(x => x.ChaveNFe == novo.ChaveNFe);
                        if (atual == null)
                        {
                            Adicionar.Add(novo);
                        }
                    }
                }

                if (CancelamentosRegistroVenda != null)
                {
                    for (int i = 0; i < CancelamentosRegistroVenda.Length; i++)
                    {
                        var novo  = CancelamentosRegistroVenda[i];
                        var atual = db.CancelamentosRegistroVenda.FirstOrDefault(x => x.Id == novo.Id);
                        if (atual == null)
                        {
                            Adicionar.Add(novo);
                        }
                    }
                }

                if (Inutilizacoes != null)
                {
                    for (int i = 0; i < Inutilizacoes.Length; i++)
                    {
                        var novo  = Inutilizacoes[i];
                        var atual = db.Inutilizacoes.FirstOrDefault(x => x.Id == novo.Id);
                        if (atual == null)
                        {
                            Adicionar.Add(novo);
                        }
                    }
                }

                if (Imagens != null)
                {
                    for (int i = 0; i < Imagens.Length; i++)
                    {
                        var novo  = Imagens[i];
                        var atual = db.Imagens.FirstOrDefault(x => x.Id == novo.Id);
                        if (atual == null)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Adicionar.Add(novo);
                        }
                        else if (novo.UltimaData > atual.UltimaData)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Atualizar.Add(novo);
                        }
                    }
                }

                if (Compradores != null)
                {
                    for (int i = 0; i < Compradores.Length; i++)
                    {
                        var novo  = Compradores[i];
                        var atual = db.Compradores.FirstOrDefault(x => x.Id == novo.Id);
                        if (atual == null)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Adicionar.Add(novo);
                        }
                        else if (novo.UltimaData > atual.UltimaData)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Atualizar.Add(novo);
                        }
                    }
                }

                if (Estoque != null)
                {
                    AlteracoesEstoque = new List <AlteracaoEstoque> [Estoque.Length];
                    for (int i = 0; i < Estoque.Length; i++)
                    {
                        var novo  = Estoque[i];
                        var atual = db.Estoque.FirstOrDefault(x => x.Id == novo.Id);
                        if (atual == null)
                        {
                            AlteracoesEstoque[i] = novo.Alteracoes;
                            novo.Alteracoes      = null;

                            novo.UltimaData = InstanteSincronizacao;
                            Adicionar.Add(novo);
                        }
                        else if (novo.UltimaData > atual.UltimaData || novo.Alteracoes.Count > atual.Alteracoes.Count)
                        {
                            AlteracoesEstoque[i] = novo.Alteracoes;
                            novo.Alteracoes      = null;

                            novo.UltimaData = InstanteSincronizacao;
                            Atualizar.Add(novo);
                        }
                        else
                        {
                            AlteracoesEstoque[i] = null;
                        }
                    }
                }

                if (Vendas != null)
                {
                    ProdutosVendas = new List <ProdutoSimplesVenda> [Vendas.Length];
                    for (int i = 0; i < Vendas.Length; i++)
                    {
                        var novo = Vendas[i];
                        if (novo.Produtos.Count == 0)
                        {
                            ProdutosVendas[i] = null;
                        }
                        else
                        {
                            var atual = db.Vendas.Include(x => x.Produtos).FirstOrDefault(x => x.Id == novo.Id);
                            if (atual == null)
                            {
                                ProdutosVendas[i] = novo.Produtos;
                                novo.Produtos     = null;

                                novo.UltimaData = InstanteSincronizacao;
                                Adicionar.Add(novo);
                            }
                            else if ((novo.UltimaData > atual.UltimaData || atual.Produtos.Count == 0) && novo.Produtos.Count > 0)
                            {
                                var prods = novo.Produtos;
                                ProdutosVendas[i] = prods;
                                novo.Produtos     = null;

                                novo.UltimaData = InstanteSincronizacao;
                                Atualizar.Add(novo);

                                db.RemoveRange(atual.Produtos);
                            }
                            else
                            {
                                ProdutosVendas[i] = null;
                            }
                        }
                    }
                }

                if (Fornecedores != null)
                {
                    for (int i = 0; i < Fornecedores.Length; i++)
                    {
                        var novo  = Fornecedores[i];
                        var atual = db.Fornecedores.FirstOrDefault(x => x.Id == novo.Id);
                        if (atual == null)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Adicionar.Add(novo);
                        }
                        else if (novo.UltimaData > atual.UltimaData)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Atualizar.Add(novo);
                        }
                    }
                }

                if (Categorias != null)
                {
                    for (int i = 0; i < Categorias.Length; i++)
                    {
                        var novo  = Categorias[i];
                        var atual = db.Categorias.FirstOrDefault(x => x.Id == novo.Id);
                        if (atual == null)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Adicionar.Add(novo);
                        }
                        else if (novo.UltimaData > atual.UltimaData)
                        {
                            novo.UltimaData = InstanteSincronizacao;
                            Atualizar.Add(novo);
                        }
                    }
                }

                db.AddRange(Adicionar);
                db.UpdateRange(Atualizar);
                db.SaveChanges();
            }

            // Salvar itens secundários
            using (var db = new AplicativoContext())
            {
                if (AlteracoesEstoque != null)
                {
                    for (int i = 0; i < Estoque.Length; i++)
                    {
                        var alteracoes = AlteracoesEstoque[i];
                        if (alteracoes == null)
                        {
                            continue;
                        }
                        var novo     = Estoque[i];
                        var original = db.Estoque.Include(x => x.Alteracoes).FirstOrDefault(x => x.Id == novo.Id);
                        if (original.Alteracoes.Count > 0)
                        {
                            db.AddRange(alteracoes);
                        }
                        else
                        {
                            var maiorData = original.Alteracoes.Max(k => k.MomentoRegistro);
                            db.AddRange(alteracoes.Where(x => x.MomentoRegistro > maiorData));
                        }
                    }
                }

                if (ProdutosVendas != null)
                {
                    for (int i = 0; i < Vendas.Length; i++)
                    {
                        var produtos = ProdutosVendas[i];
                        if (produtos == null)
                        {
                            continue;
                        }
                        db.AddRange(produtos);
                    }
                }

                db.SaveChanges();
            }

            // Associar itens secundários aos itens pai
            using (var db = new AplicativoContext())
            {
                if (AlteracoesEstoque != null)
                {
                    for (int i = 0; i < Estoque.Length; i++)
                    {
                        if (AlteracoesEstoque[i] == null)
                        {
                            continue;
                        }
                        var alteracao = Estoque[i];
                        alteracao.Alteracoes = AlteracoesEstoque[i];
                        db.Estoque.Update(alteracao);
                    }
                }

                if (ProdutosVendas != null)
                {
                    for (int i = 0; i < Vendas.Length; i++)
                    {
                        if (ProdutosVendas[i] == null)
                        {
                            continue;
                        }
                        var venda = Vendas[i];
                        venda.Produtos = ProdutosVendas[i];
                        db.Vendas.Update(venda);
                    }
                }
                db.SaveChanges();
            }
        }