public void ImportarValores(MetadaUnidade metaUnidade, string pathTemp, Enum.OrcamentodaUnidade.Trimestres?trimestre = null) { int quantidadePorLote = 1000; var trace = new Trace("Meta-Supervisor-IMPORTAR" + metaUnidade.ID.Value); trace.Add(" --------------------------- Iniciando --------------------------- "); try { var listaErros = new Dictionary <Guid, string>(); var mensagemErro = new StringBuilder(); // Atualizar Status metaUnidade.MensagemdeProcessamento = string.Format("{0} - Iniciando Importação do Supervisor{1}{2}", DateTime.Now, Environment.NewLine + Environment.NewLine, metaUnidade.MensagemdeProcessamento).Truncate(1000); RepositoryService.MetadaUnidade.Update(new MetadaUnidade(metaUnidade.OrganizationName, metaUnidade.IsOffline) { ID = metaUnidade.ID, RazaodoStatusMetaSupervisor = (int)Enum.MetaUnidade.RazaodoStatusMetaSupervisor.ImportandoPlanilhaMetaSupervisor, MensagemdeProcessamento = metaUnidade.MensagemdeProcessamento }); #region Criando níveis da meta // Supervisor listaErros = AtualizarValoresPotencialSupervisor(metaUnidade, quantidadePorLote); if (listaErros.Count > 0) { mensagemErro.AppendLine("Atualização do Potencial por Supervisor!"); foreach (var item in listaErros) { mensagemErro.AppendLine(item.Key + " - " + item.Value); } } // Trimestre listaErros = AtualizarValoresPotencialTrimestre(metaUnidade, quantidadePorLote, trimestre); if (listaErros.Count > 0) { mensagemErro.AppendLine("Atualização do Potencial por Trimestre!"); foreach (var item in listaErros) { mensagemErro.AppendLine(item.Key + " - " + item.Value); } } // Segmento listaErros = AtualizarValoresPotencialSegmento(metaUnidade, quantidadePorLote, trimestre); if (listaErros.Count > 0) { mensagemErro.AppendLine("Atualização do Potencial por Segmento!"); foreach (var item in listaErros) { mensagemErro.AppendLine(item.Key + " - " + item.Value); } } // Familia listaErros = AtualizarValoresPotencialFamilia(metaUnidade, quantidadePorLote, trimestre); if (listaErros.Count > 0) { mensagemErro.AppendLine("Atualização do Potencial por Supervisor!"); foreach (var item in listaErros) { mensagemErro.AppendLine(item.Key + " - " + item.Value); } } // Subfamilia listaErros = AtualizarValoresPotencialSubfamilia(metaUnidade, quantidadePorLote, trimestre); if (listaErros.Count > 0) { mensagemErro.AppendLine("Atualização do Potencial por Supervisor!"); foreach (var item in listaErros) { mensagemErro.AppendLine(item.Key + " - " + item.Value); } } // Produto if (trimestre.HasValue) { listaErros = AtualizarValoresPotencialProduto(metaUnidade, quantidadePorLote, trimestre.Value); if (listaErros.Count > 0) { mensagemErro.AppendLine("Atualização do Potencial por Produto!"); foreach (var item in listaErros) { mensagemErro.AppendLine(item.Key + " - " + item.Value); } } listaErros = AtualizarValoresPotencialProdutoMes(metaUnidade, quantidadePorLote, trimestre.Value); if (listaErros.Count > 0) { mensagemErro.AppendLine("Atualização do Potencial por Produto Mes!"); foreach (var item in listaErros) { mensagemErro.AppendLine(item.Key + " - " + item.Value); } } } else { listaErros = AtualizarValoresPotencialProduto(metaUnidade, quantidadePorLote); if (listaErros.Count > 0) { mensagemErro.AppendLine("Atualização do Potencial por Produto!"); foreach (var item in listaErros) { mensagemErro.AppendLine(item.Key + " - " + item.Value); } } listaErros = AtualizarValoresPotencialProdutoMes(metaUnidade, quantidadePorLote); if (listaErros.Count > 0) { mensagemErro.AppendLine("Atualização do Potencial por Produto Mes!"); foreach (var item in listaErros) { mensagemErro.AppendLine(item.Key + " - " + item.Value); } } } #endregion if (mensagemErro.Length == 0) { trace.Add("{0} - Alterando status de registro do CRM", DateTime.Now); metaUnidade.MensagemdeProcessamento = string.Format("{0} - Finalizando Importação do Supervisor{1}{2}", DateTime.Now, Environment.NewLine, metaUnidade.MensagemdeProcessamento).Truncate(1000); RepositoryService.MetadaUnidade.Update(new MetadaUnidade(metaUnidade.OrganizationName, metaUnidade.IsOffline) { ID = metaUnidade.ID, RazaodoStatusMetaSupervisor = (int)Enum.MetaUnidade.RazaodoStatusMetaSupervisor.PlanilhaMetaSupervisorImportadaSucesso, StatusCode = (int)Enum.OrcamentodaUnidade.StatusCodeOrcamento.ImportarPlanilhaOrcamento, MensagemdeProcessamento = metaUnidade.MensagemdeProcessamento }); } else { trace.Add("{0} - Alterando status de registro do CRM", DateTime.Now); metaUnidade.MensagemdeProcessamento = string.Format("{0} - Erro Importação do Supervisor{1}{2}", DateTime.Now, Environment.NewLine, metaUnidade.MensagemdeProcessamento).Truncate(1000); RepositoryService.MetadaUnidade.Update(new MetadaUnidade(metaUnidade.OrganizationName, metaUnidade.IsOffline) { ID = metaUnidade.ID, RazaodoStatusMetaKARepresentante = (int)Enum.MetaUnidade.RazaodoStatusMetaKARepresentante.ErroImportarMetaKARepresentante, MensagemdeProcessamento = metaUnidade.MensagemdeProcessamento }); trace.Add("{0} - Criando arquivo de log", DateTime.Now); string file = pathTemp + "Log Error Metas.txt"; new ArquivoService(RepositoryService).CriarArquivoLog(metaUnidade, mensagemErro.ToString(), file); } } catch (Exception ex) { string mensagem = Error.Handler(ex); trace.Add(ex); metaUnidade.MensagemdeProcessamento = string.Format("{0} - Erro Importação: {1}{2}{3}", DateTime.Now, mensagem, Environment.NewLine, metaUnidade.MensagemdeProcessamento).Truncate(1000); RepositoryService.MetadaUnidade.Update(new MetadaUnidade(metaUnidade.OrganizationName, metaUnidade.IsOffline) { ID = metaUnidade.ID, RazaodoStatusMetaSupervisor = (int)Enum.MetaUnidade.RazaodoStatusMetaSupervisor.ErroImportarMetaSupervisor, MensagemdeProcessamento = metaUnidade.MensagemdeProcessamento }); } finally { trace.SaveClear(); } }
private Dictionary <Guid, string> AtualizarValoresPotencialProduto(MetadaUnidade metaUnidade, int quantidadePorLote, Enum.OrcamentodaUnidade.Trimestres trimeste) { var listaTodos = RepositoryService.PotencialdoSupervisorporProduto.ListarValoresPorUnidadeNegocio(metaUnidade.UnidadedeNegocios.Id, metaUnidade.Ano.Value, trimeste); var listaExistentes = RepositoryService.PotencialdoSupervisorporProduto.ListarPorUnidadeNegocio(metaUnidade.UnidadedeNegocios.Id, metaUnidade.Ano.Value, trimeste); var listaPotencialSubfamilia = RepositoryService.PotencialdoSupervisorporSubfamilia.ListarPorUnidadeNegocio(metaUnidade.UnidadedeNegocios.Id, metaUnidade.Ano.Value, trimeste); var listaError = new Dictionary <Guid, string>(); var listaCreate = new List <PotencialdoSupervisorporProduto>(); var listaUpdate = new List <PotencialdoSupervisorporProduto>(); foreach (var item in listaTodos) { var itemExistente = listaExistentes.Find(x => x.Trimestre.Value == item.Trimestre.Value && x.Produto.Id == item.Produto.Id && x.Supervisor.Id == item.Supervisor.Id); if (itemExistente == null) { var potencialSubfamilia = listaPotencialSubfamilia.Find(x => x.SubfamiliadeProduto.Id == item.Subfamilia.Id && x.Supervisor.Id == item.Supervisor.Id); item.UnidadeNegocio = metaUnidade.UnidadedeNegocios; item.Nome = string.Format("{0} - {1}", metaUnidade.UnidadedeNegocios.Name, item.Produto.Name); item.PotencialdoSupervisorPorProduto = new Lookup(potencialSubfamilia.ID.Value, potencialSubfamilia.Nome, SDKore.Crm.Util.Utility.GetEntityName(potencialSubfamilia)); item.RazaoStatus = (int)Domain.Enum.PotencialdoSupervisorporProduto.StatusCode.Ativa; listaCreate.Add(item); } else { item.ID = itemExistente.ID; listaUpdate.Add(item); } } // Update em lote for (int i = 0; i < listaUpdate.Count; i += quantidadePorLote) { var retorno = RepositoryService.PotencialdoSupervisorporProduto.Update(listaUpdate.Skip(i).Take(quantidadePorLote).ToList()); foreach (var item in retorno) { listaError.Add(item.Key, item.Value); } } // Create em lote for (int i = 0; i < listaCreate.Count; i += quantidadePorLote) { var listaEmLote = listaCreate.Skip(i).Take(quantidadePorLote).ToList(); DomainExecuteMultiple retorno = RepositoryService.PotencialdoSupervisorporProduto.Create(listaEmLote); if (retorno.IsFaulted) { for (int x = 0; x < retorno.List.Length; x++) { var item = retorno.List[x]; listaError.Add(Guid.Empty, item.Message); } } } return(listaError); }
private Dictionary <Guid, string> AtualizarValoresPotencialSupervisor(MetadaUnidade metaUnidade, int quantidadePorLote) { var listaTodos = RepositoryService.PotencialdoSupervisor.ListarValoresPorUnidadeNegocio(metaUnidade.UnidadedeNegocios.Id, metaUnidade.Ano.Value); var listaExistentes = RepositoryService.PotencialdoSupervisor.ListarPorUnidadeNegocio(metaUnidade.UnidadedeNegocios.Id, metaUnidade.Ano.Value); var listaError = new Dictionary <Guid, string>(); var listaCreate = new List <PotencialdoSupervisor>(); var listaUpdate = new List <PotencialdoSupervisor>(); foreach (var item in listaTodos) { var itemExistente = listaExistentes.Find(x => x.Supervisor.Id == item.Supervisor.Id); if (itemExistente == null) { item.UnidadedeNegocio = metaUnidade.UnidadedeNegocios; item.Ano = metaUnidade.Ano; item.Nome = string.Format("{0} - {1}", metaUnidade.UnidadedeNegocios.Name, item.Supervisor.Name); item.RazaoStatus = (int)Domain.Enum.PotencialdoSupervisor.StatusCode.Ativa; listaCreate.Add(item); } else { item.ID = itemExistente.ID; listaUpdate.Add(item); } } // Update em lote for (int i = 0; i < listaUpdate.Count; i += quantidadePorLote) { var retorno = RepositoryService.PotencialdoSupervisor.Update(listaUpdate.Skip(i).Take(quantidadePorLote).ToList()); foreach (var item in retorno) { listaError.Add(item.Key, item.Value); } } // Create em lote for (int i = 0; i < listaCreate.Count; i += quantidadePorLote) { var listaEmLote = listaCreate.Skip(i).Take(quantidadePorLote).ToList(); DomainExecuteMultiple retorno = RepositoryService.PotencialdoSupervisor.Create(listaEmLote); if (retorno.IsFaulted) { for (int x = 0; x < retorno.List.Length; x++) { var item = retorno.List[x]; if (item.IsFaulted) { listaError.Add(Guid.Empty, item.Message); } } } } return(listaError); }