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(); } }
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(); } }