/// <summary> /// /// </summary> private void procExportPend() { while (bKeepRunning || filaExportacao.Count > 0) { CMRocketProcessoInfo info = null; if (filaExportacao.TryDequeue(out info)) { // Segundo conversa com RSG em 2016-12-20 // Marcar a pendencia cadastral Rocket como resolvido if (info.AprovacaoAutomatica) { Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Info, String.Format("{0}: {1}", Gradual.Utils.MethodHelper.GetCurrentMethod(), String.Format("Capivara [{0}] do CPF [{1}] reprovado, removendo pendencia cadastral Rocket", info.IDCapivara, info.Cpf)), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }); PersistenciaDB db = new PersistenciaDB(); if (info.IDPendenciaCadastral > 0) { db.ResolverPendenciaCadastral(info.IDPendenciaCadastral); } Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Info, String.Format("{0}: {1}", Gradual.Utils.MethodHelper.GetCurrentMethod(), String.Format("Capivara [{0}] do CPF [{1}] eleito para exportacao automatica", info.IDCapivara, info.Cpf)), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }); } else { } continue; } Thread.Sleep(250); } }
public ProdutoClienteResponse SelecionarProdutoClienteOperador(ProdutoClienteRequest pRequest) { ProdutoClienteResponse lRetorno = new ProdutoClienteResponse(); try { PersistenciaDB lDb = new PersistenciaDB(); gLogger.Info("Chek operador " + pRequest.ProdutoCliente.CheckOperador.ToString()); lRetorno = lDb.SelecionarProdutoClienteOperador(pRequest); lRetorno.StatusResposta = MensagemResponseStatusEnum.OK; lRetorno.DataResposta = DateTime.Now; gLogger.Info(string.Concat("Entrou no SelecionarProdutoClienteOperador para selecionar uma lista de produtos para o operador que vai comprar os ativos.")); } catch (Exception ex) { lRetorno.StatusResposta = MensagemResponseStatusEnum.ErroPrograma; lRetorno.DescricaoResposta = ex.ToString(); gLogger.ErrorFormat("Erro em SelecionarProdutoClienteOperador - {0} - StackTrace - {1}", ex.Message, ex.StackTrace); } return(lRetorno); }
public AplicacaoResponse InserirAtualizarAplicacao(AplicacaoRequest pRequest) { AplicacaoResponse lRetorno = new AplicacaoResponse(); try { PersistenciaDB lDb = new PersistenciaDB(); lRetorno = lDb.InserirAtualizarAplicacao(pRequest); lRetorno.StatusResposta = MensagemResponseStatusEnum.OK; lRetorno.DataResposta = DateTime.Now; gLogger.Info(string.Concat("Entrou no InserirAtualizarAplicacao e inseriu um produto")); } catch (Exception ex) { lRetorno.StatusResposta = MensagemResponseStatusEnum.ErroPrograma; lRetorno.DescricaoResposta = ex.ToString(); gLogger.ErrorFormat("Erro em InserirAtualizarAplicacao - {0} - StackTrace - {1}", ex.Message, ex.StackTrace); } return(lRetorno); }
public ClienteVencimentoHistoricoResponse InserirClienteVencimentoHistorico() { ClienteVencimentoHistoricoResponse lRetorno = new ClienteVencimentoHistoricoResponse(); try { PersistenciaDB lDb = new PersistenciaDB(); lDb.InserirClienteVencimentoHistorico(); lRetorno.StatusResposta = MensagemResponseStatusEnum.OK; lRetorno.DataResposta = DateTime.Now; gLogger.Info(string.Concat("Entrou no InserirClienteVencimentoHistorico")); } catch (Exception ex) { lRetorno.StatusResposta = MensagemResponseStatusEnum.ErroPrograma; lRetorno.DescricaoResposta = ex.ToString(); gLogger.ErrorFormat("Erro em InserirClienteVencimentoHistorico - {0} - StackTrace - {1}", ex.Message, ex.StackTrace); } return(lRetorno); }
public List <string> ListarLinhasArquivoCCOUPoupe() { List <string> lRetorno = new List <string>(); PersistenciaDB lDb = new PersistenciaDB(); decimal valorDisponivelCC = 0; ClienteCCOResponse cliente = lDb.SelecionarClientesArquivoCCOU(); if (cliente.ListaClienteCCOUInfo.Count > 0) { //Header do arquivo lRetorno.Add("00OUTROS OUT".PadRight(250, ' ')); foreach (ClienteCCOUInfo item in cliente.ListaClienteCCOUInfo) { valorDisponivelCC = lDb.SelecionaValorDisponivel(item.CodigoClientePrincipal); if (valorDisponivelCC >= item.ValorProduto) //Verifica se o cliente possui valor disponível em conta para débido do produto. { //escreve as linhas de dentro do arquivo lRetorno.Add(this.MontaDetalheArquivoCodigoPrincipal(item)); lRetorno.Add(this.MontaDetalheArquivoCodigoPoupe(item)); } } //Trailer do arquivo lRetorno.Add("99OUTROSOUT".PadRight(250, ' ')); } return(lRetorno); }
private string MontaDetalheArquivoCodigoPoupe(ClienteCCOUInfo Cliente) { StringBuilder lDetalhe = new StringBuilder(); PersistenciaDB lDb = new PersistenciaDB(); DateTime dataArquivo = lDb.RetornarDiaUtil(); lDetalhe.Append("01"); //-- Tipo de registro FIXO '01' lDetalhe.Append(dataArquivo.ToString("dd/MM/yyyy")); //-- Data vencimento dd/mm/yyyy lDetalhe.Append(Cliente.CodigoClientePoupe.ToString().PadLeft(7, '0')); //-- Código do cliente '7' lDetalhe.Append("1021"); //-- Histórico: está com 1021 Descrição aplicação POUPE GRADUAL //Preciso do preço lDetalhe.Append(Cliente.ValorProduto.ToString().Replace(".", "").Replace(",", "").PadLeft(15, '0')); //-- Lançamento lDetalhe.Append(string.Empty.PadLeft(94, ' ')); lDetalhe.Append(string.Empty.PadLeft(95, ' ')); lDetalhe.Append("OUTNOUT 000000000000000"); return(lDetalhe.ToString()); }
public ClienteVencimentoResponse SelecionarClienteVencimento(ClienteVencimentoRequest pRequest) { ClienteVencimentoResponse lRetorno = new ClienteVencimentoResponse(); try { PersistenciaDB lDb = new PersistenciaDB(); lRetorno = lDb.SelecionarClienteVencimento(pRequest); lRetorno.StatusResposta = MensagemResponseStatusEnum.OK; lRetorno.DataResposta = DateTime.Now; gLogger.Info(string.Concat("Entrou no SelecionarClienteVencimento para selecionar uma lista de cliente vencimento.")); } catch (Exception ex) { lRetorno.StatusResposta = MensagemResponseStatusEnum.ErroPrograma; lRetorno.DescricaoResposta = ex.ToString(); gLogger.ErrorFormat("Erro em SelecionarClienteVencimento - {0} - StackTrace - {1}", ex.Message, ex.StackTrace); } return(lRetorno); }
public CustodiaValorizadaResponse SelecionarCustodiaValorizada(CustodiaValorizadaRequest pRequest) { CustodiaValorizadaResponse lRetorno = new CustodiaValorizadaResponse(); try { PersistenciaDB lDb = new PersistenciaDB(); lRetorno = lDb.SelecionarCustodiaValorizada(pRequest); lRetorno.StatusResposta = MensagemResponseStatusEnum.OK; lRetorno.DataResposta = DateTime.Now; } catch (Exception ex) { lRetorno.StatusResposta = MensagemResponseStatusEnum.ErroPrograma; lRetorno.DescricaoResposta = ex.ToString(); gLogger.ErrorFormat("Erro em SelecionarCustodiaValorizada - {0} - StackTrace - {1}", ex.Message, ex.StackTrace); } return(lRetorno); }
private int incluirPendenciaCadastral(CMRocketProcessoInfo info) { int retorno = -1; try { if (ConfigurationManager.AppSettings["DescricaoPendenciaRocket"] == null || ConfigurationManager.AppSettings["IDPendenciaRocket"] == null) { return(retorno); } int idPendenciaRocket = Convert.ToInt32(ConfigurationManager.AppSettings["IDPendenciaRocket"].ToString()); string descPendenciaRocket = ConfigurationManager.AppSettings["DescricaoPendenciaRocket"].ToString(); PersistenciaDB db = new PersistenciaDB(); CMRocketFields campos = JsonConvert.DeserializeObject <CMRocketFields>(info.JsonInput); DateTime dataNascFund; if (DateTime.TryParseExact(campos.DATA_NASCIMENTO, "dd/MM/yyyy", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out dataNascFund)) { Tuple <int, int> cliente = db.ObterIDCliente(info.Cpf, dataNascFund); retorno = db.InserirPendenciaCadastral(cliente.Item1, cliente.Item2, idPendenciaRocket, descPendenciaRocket); } } catch (Exception ex) { Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Error, Gradual.Utils.MethodHelper.GetCurrentMethod(), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }, ex); } return(retorno); }
/// <summary> /// /// </summary> /// <param name="functionName"></param> public void ExecutarScriptOracle(string fullFileName) { try { string scriptPath = ConfigurationManager.AppSettings["DiretorioScripts"].ToString(); string scriptFilename = scriptPath + Path.DirectorySeparatorChar + fullFileName; logger.Info("ExecutarScriptOracle carregando script [" + scriptFilename + "]"); string scriptSQL = File.ReadAllText(scriptFilename); PersistenciaDB db = new PersistenciaDB(); if (!db.ExecutarScript(scriptSQL)) { logger.Error("Erro ao executar script (" + scriptFilename + ")"); return; } } catch (Exception ex) { logger.Error("ExecutarScriptOracle(" + fullFileName + "): " + ex.Message, ex); } }
public DataSet GetInactiveAccounts(string Cd_Usuario, string Ds_Senha) { DataSet retorno = new DataSet("NewDataSet"); logger.Info("Inicio GetInactiveAccounts() Remote IP [" + this.Context.Request.UserHostAddress + "]"); try { string user = ConfigurationManager.AppSettings["username"].ToString(); string pwd = ConfigurationManager.AppSettings["password"].ToString(); if (user.Equals(Cd_Usuario) == false || pwd.Equals(Ds_Senha) == false) { logger.Fatal("Usuario / senha invalidos"); return(RetornaErro("Usuario / senha invalidos")); } logger.Debug("Buscando a lista de clientes ativos"); PersistenciaDB db = new PersistenciaDB(ConfigurationManager.ConnectionStrings["TRADE"].ConnectionString); List <InativacaoClienteInfo> ret = db.BuscarClientesAtivos(); logger.Debug("Lista de clientes ativos com " + ret.Count + " itens."); DataTable table = new DataTable("Table1"); DataColumn col = new DataColumn("CD_CLIENTE"); table.Columns.Add(col); col = new DataColumn("CLIENTE_PLURAL"); table.Columns.Add(col); col = new DataColumn("STATUS"); table.Columns.Add(col); retorno.Tables.Add(table); foreach (InativacaoClienteInfo info in ret) { DataRow dr = retorno.Tables["Table1"].NewRow(); dr["CD_CLIENTE"] = info.CDClienteGradual; dr["CLIENTE_PLURAL"] = info.CDClientePlural; dr["STATUS"] = info.StatusCliente; retorno.Tables["Table1"].Rows.Add(dr); } logger.Info("Final GetInactiveAccounts() Remote IP [" + this.Context.Request.UserHostAddress + "]"); } catch (Exception ex) { logger.Error("Erro GetInactiveAccounts():" + ex.Message, ex); return(RetornaErro("Erro ao processar consulta")); } return(retorno); }
public void IniciarServico() { try { Gradual.Utils.Logger.Initialize(); Gradual.Utils.Logger.Log("Monitor", Gradual.Utils.LoggingLevel.Info, String.Format("{0}: {1}", Gradual.Utils.MethodHelper.GetCurrentMethod(), "Iniciando serviço"), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }); bKeepRunning = true; Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Info, String.Format("{0}: {1}", Gradual.Utils.MethodHelper.GetCurrentMethod(), "Carregando processos pendentes"), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }); PersistenciaDB db = new PersistenciaDB(); List <CMRocketProcessoInfo> processos = db.CarregarProcessosPendentes(); foreach (CMRocketProcessoInfo processo in processos) { if (processo.StatusProcesso.Equals(CMRocketProcessoInfo.STATUS_ROCKET_ESPERA)) { filaRequisicaoRocket.Enqueue(processo); } if (processo.StatusProcesso.Equals(CMRocketProcessoInfo.STATUS_ROCKET_SOLICITADO) || processo.StatusProcesso.Equals(CMRocketProcessoInfo.STATUS_ROCKET_EM_PROCESSAMENTO)) { filaMonitoracaoRocket.Enqueue(processo); } if (processo.StatusProcesso.Equals(CMRocketProcessoInfo.STATUS_ROCKET_DISPONIVEL)) { filaRelatorioRocket.Enqueue(processo); } } thSolicitacaoRocket = new Thread(new ThreadStart(monitorSolicitacoesRocket)); thSolicitacaoRocket.Start(); thExportacaoPendencia = new Thread(new ThreadStart(procExportPend)); thExportacaoPendencia.Start(); _status = ServicoStatus.EmExecucao; Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Info, String.Format("{0}: {1}", Gradual.Utils.MethodHelper.GetCurrentMethod(), "Serviço inciado"), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }); } catch (Exception ex) { Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Error, Gradual.Utils.MethodHelper.GetCurrentMethod(), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }, ex); } }
/// <summary> /// /// </summary> /// <param name="request"></param> /// <returns></returns> public ValidarCadastroResponse ValidarCadastro(ValidarCadastroRequest request) { ValidarCadastroResponse response = new ValidarCadastroResponse(); try { OperationContext context = OperationContext.Current; MessageProperties prop = context.IncomingMessageProperties; RemoteEndpointMessageProperty endpoint = prop[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty; string ip = endpoint.Address; Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Info, String.Format("{0}: {1}", Gradual.Utils.MethodHelper.GetCurrentMethod(), String.Format("ValidarCadastro para CPF [{0}] IP[{1}]", request.CamposRocket.CPF, ip)), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }); CMRocketProcessoInfo info = new CMRocketProcessoInfo(); info.Cpf = request.CamposRocket.CPF; info.DataAtualizacao = DateTime.Now; info.DataSolicitacaoRocket = DateTime.Today; info.DataSolicitacaoIntranet = DateTime.Now; info.StatusProcesso = CMRocketProcessoInfo.STATUS_ROCKET_ESPERA; info.JsonInput = JsonConvert.SerializeObject(request.CamposRocket); info.IPOrigem = ip; PersistenciaDB db = new PersistenciaDB(); int idCapivara = db.InserirProcessoRocket(info); info.IDCapivara = idCapivara; response.IDCapivara = idCapivara; Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Info, String.Format("{0}: {1}", Gradual.Utils.MethodHelper.GetCurrentMethod(), String.Format("Processo do CPF [{0}] inserido na base com ID [{1}]", info.Cpf, info.IDCapivara)), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }); filaRequisicaoRocket.Enqueue(info); Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Info, String.Format("{0}: {1}", Gradual.Utils.MethodHelper.GetCurrentMethod(), String.Format("Processo do CPF [{0}] enfileirado, aguardando solicitacao de processamento", info.Cpf)), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }); } catch (Exception ex) { Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Error, Gradual.Utils.MethodHelper.GetCurrentMethod(), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }, ex); response.StatusResposta = MensagemResponseStatusEnum.ErroPrograma; response.DescricaoResposta = ex.Message; } response.StatusResposta = MensagemResponseStatusEnum.OK; return(response); }
public InserirSolicitacaoDocumentacaoResponse InserirSolicitacaoDocumentos(InserirSolicitacaoDocumentacaoRequest pParametros) { InserirSolicitacaoDocumentacaoResponse lRetorno = new InserirSolicitacaoDocumentacaoResponse(); try { PersistenciaDB db = new PersistenciaDB(); lRetorno = db.InserirSolicitacaoDocumentos(pParametros); } catch (Exception ex) { Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Error, Gradual.Utils.MethodHelper.GetCurrentMethod(), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }, ex); } return(lRetorno); }
public ObterDescricoesResponse ObterDescricoes(ObterDescricoesRequest pParametros) { ObterDescricoesResponse response = new ObterDescricoesResponse(); try { PersistenciaDB db = new PersistenciaDB(); List <CMRocketDescricao> lDescricoes = db.ObterDescricoes(pParametros); response.Descricoes = lDescricoes; response.StatusResposta = MensagemResponseStatusEnum.OK; } catch (Exception ex) { response.StatusResposta = MensagemResponseStatusEnum.ErroPrograma; Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Error, Gradual.Utils.MethodHelper.GetCurrentMethod(), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }, ex); } return(response); }
public ObterRelatorioDetalhadoResponse ObterRelatorios(ObterRelatorioDetalhadoRequest pParametros) { ObterRelatorioDetalhadoResponse response = new ObterRelatorioDetalhadoResponse(); try { PersistenciaDB db = new PersistenciaDB(); List <CMRocketProcessoDetalheInfo> capivaras = db.ObterRelatorios(pParametros); response.Capivaras = capivaras; response.StatusResposta = MensagemResponseStatusEnum.OK; } catch (Exception ex) { response.StatusResposta = MensagemResponseStatusEnum.ErroPrograma; Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Error, Gradual.Utils.MethodHelper.GetCurrentMethod(), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }, ex); } return(response); }
public ObterEvolucaoProcessoResponse ObterEvolucaoProcesso(ObterEvolucaoProcessoRequest request) { ObterEvolucaoProcessoResponse response = new ObterEvolucaoProcessoResponse(); try { PersistenciaDB db = new PersistenciaDB(); List <CMRocketEvolucaoProcessoInfo> evolucoes = db.ObterEvolucaoProcesso(request.IDCapivara); response.Evolucao = evolucoes; response.StatusResposta = MensagemResponseStatusEnum.OK; } catch (Exception ex) { response.StatusResposta = MensagemResponseStatusEnum.ErroPrograma; Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Error, Gradual.Utils.MethodHelper.GetCurrentMethod(), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }, ex); } return(response); }
/// <summary> /// /// </summary> /// <param name="request"></param> /// <returns></returns> public ObterDetalheRelatorioResponse ObterDetalhamentoRelatorio(ObterDetalheRelatorioRequest request) { ObterDetalheRelatorioResponse response = new ObterDetalheRelatorioResponse(); try { PersistenciaDB db = new PersistenciaDB(); string json = db.ObterDetalhamento(request.idCapivara); CMRocketReport report = JsonConvert.DeserializeObject <CMRocketReport>(json); response.Relatorio = report; response.StatusResposta = MensagemResponseStatusEnum.OK; } catch (Exception ex) { response.StatusResposta = MensagemResponseStatusEnum.ErroPrograma; Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Error, Gradual.Utils.MethodHelper.GetCurrentMethod(), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }, ex); } return(response); }
public void MonitorarRoboPlural() { try { PersistenciaDB db = new PersistenciaDB(ConfigurationManager.ConnectionStrings["TRADE"].ConnectionString); Dictionary <int, ComitenteDiaInfo> dctComit = db.BuscarComitentesDia(lastMonitor); logger.Info("Monitorou comitentes no dia com " + dctComit.Count + " itens"); if (DateTime.Now.Hour >= 10 && DateTime.Now.Hour < 18) { if (dctComit.Count == 0) { logger.Warn("NAO RETORNOU NOVOS REGISTROS DESDE [" + lastMonitor.ToString("dd/MM/yyyy HH:mm:ss") + "]"); string message = "NAO RETORNOU NOVOS REGISTROS DESDE [" + lastMonitor.ToString("dd/MM/yyyy HH:mm:ss") + "]."; message += Environment.NewLine + "Verificar robo da Brasil Plural."; string subject = "Alerta Servico RecalculoFinanceiroBRP: " + DateTime.Now.ToString("HH:mm:ss"); Utilities.EnviarEmail(subject, message); lastRun = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 8, 0, 0); } else { lastMonitor = DateTime.Now; } } } catch (Exception ex) { logger.Error("MonitorarRoboPlural(): " + ex.Message, ex); } }
/// <summary> /// /// </summary> /// <param name="functionName"></param> public void GerarBase(string functionName) { try { logger.Info("GerarBase(" + functionName + ")"); if (!dctParametros.ContainsKey(functionName)) { logger.Error("GerarBase(" + functionName + ") nao ha parametros definidos"); return; } BaseParam parametros = dctParametros[functionName]; string scriptPath = ConfigurationManager.AppSettings["DiretorioScripts"].ToString(); string sheetPath = ConfigurationManager.AppSettings["DiretorioPlanilhas"].ToString(); string rede = ""; if (ConfigurationManager.AppSettings["DiretorioRede"] != null) { rede = ConfigurationManager.AppSettings["DiretorioRede"].ToString(); } string scriptFilename = scriptPath + Path.DirectorySeparatorChar + parametros.ScriptFile; string excelFile = sheetPath + Path.DirectorySeparatorChar + parametros.ExcelFilePrefix + "-" + DateTime.Now.ToString("yyyMMdd-HHmmss") + ".xlsx"; logger.Info("GerarBase(" + functionName + ") Carregando script: " + scriptFilename); string scriptSQL = File.ReadAllText(scriptFilename); PersistenciaDB db = new PersistenciaDB(); logger.Info("GerarBase(" + functionName + ") executando script"); DataSet ds = db.ExecutarScriptRetDS(scriptSQL); if (ds.Tables.Count == 0 || (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count == 0)) { logger.Error("GerarBase(" + functionName + ") Nao ha registros para se gerar uma planilha"); return; } logger.Info("GerarBase(" + functionName + ") dataset carregado, gerando planilha"); if (ExcelCreator.CreateExcel(ds, excelFile, parametros.WorksheetName)) { logger.Info("GerarBase(" + functionName + ") planilha gerada com sucesso"); string subject = parametros.Subject + " - " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"); string message = "Planilha " + functionName + " gerada as " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"); message += "\n\n"; message += "Gravado em [" + excelFile + "]"; if (!String.IsNullOrEmpty(rede)) { message += "\n\n"; message += "Disponivel na pasta de rede: [" + rede + "]"; } if (!String.IsNullOrEmpty(parametros.Message)) { message += "\n\n" + parametros.Message; } message += "\n\n"; string [] anexos = new string[1]; anexos[0] = excelFile; MailUtil.EnviarPlanilhaPorEmail(parametros.MailFrom, parametros.MailTo, null, null, subject, message, anexos); } try { if (!String.IsNullOrEmpty(rede)) { FileInfo excelInfo = new FileInfo(excelFile); rede += Path.DirectorySeparatorChar; rede += excelInfo.Name; logger.Info("GerarBase(" + functionName + ") Copiando arquivo [" + excelFile + "] para [" + rede + "]"); File.Copy(excelFile, rede); } else { logger.Info("GerarBase(" + functionName + ") Chave appsettings 'DiretorioRede' nao existe para copia do arquivo!"); } } catch (Exception ex) { logger.Error("GerarBase(" + functionName + "): Erro ao copiar para pasta de rede"); logger.Error("GerarBase(" + functionName + "): " + ex.Message, ex); } } catch (Exception ex) { logger.Error("GerarBase(" + functionName + "): " + ex.Message, ex); } }
/// <summary> /// Gera o relatorio de usuarios logados no HB e saldo /// quebrou o esquema, pq tem que buscar a relacao de contas x assessor do oracle pra cruzar com /// a consulta do MSSQL /// </summary> /// <param name="functionName"></param> public void GenerateLogadosHBSaldo(string functionName) { try { logger.Info("GenerateLogadosHBSaldo(" + functionName + ")"); if (!dctParametros.ContainsKey(functionName)) { logger.Error("GenerateLogadosHBSaldo(" + functionName + ") nao ha parametros definidos"); return; } BaseParam parametros = dctParametros[functionName]; string scriptPath = ConfigurationManager.AppSettings["DiretorioScripts"].ToString(); string sheetPath = ConfigurationManager.AppSettings["DiretorioPlanilhas"].ToString(); string rede = ""; if (ConfigurationManager.AppSettings["DiretorioRede"] != null) { rede = ConfigurationManager.AppSettings["DiretorioRede"].ToString(); } string scriptFilename = scriptPath + Path.DirectorySeparatorChar + parametros.ScriptFile; string scriptAssessores = scriptPath + Path.DirectorySeparatorChar + "getassess.sql"; string excelFile = sheetPath + Path.DirectorySeparatorChar + parametros.ExcelFilePrefix + "-" + DateTime.Now.ToString("yyyMMdd-HHmmss") + ".xlsx"; logger.Info("GenerateLogadosHBSaldo(" + functionName + ") Carregando script: " + scriptFilename); PersistenciaDB db = new PersistenciaDB(); string idlogins = "select distinct(IdLogin) from tb_logacesso where Sistema='Portal' and DataLogIn > DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))"; DataSet dsLogins = db.ExecutarScriptSqlServer("ControleAcesso", idlogins); string idClientes = "select C.cd_codigo,L.id_login from tb_cliente_conta C, tb_cliente L where C.cd_sistema = 'BOL' and L.id_cliente = C.id_cliente"; DataSet dsClientes = db.ExecutarScriptSqlServer("Cadastro", idClientes); string scriptAssessor = File.ReadAllText(scriptAssessores); logger.Info("GenerateLogadosHBSaldo(" + functionName + ") obtendo tabela assessores"); DataSet dsAss = db.ExecutarScriptRetDS(scriptAssessor); logger.Info("GenerateLogadosHBSaldo(" + functionName + ") executando script"); string scriptSQL = File.ReadAllText(scriptFilename); DataSet ds = db.ExecutarScriptSqlServer(parametros.ConnStringName, scriptSQL); if (ds.Tables.Count == 0 || (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count == 0)) { logger.Error("GenerateLogadosHBSaldo(" + functionName + ") Nao ha registros para se gerar uma planilha"); return; } var query = from record in ds.Tables[0].AsEnumerable() join assessor in dsAss.Tables[0].AsEnumerable() on record.Field <string>("Cliente") equals assessor.Field <string>("Cliente") select new { Cliente = record.Field <string>("Cliente").Trim(), Nome = assessor.Field <string>("Nome").Trim(), CpfCnpj = assessor.Field <string>("CPF/CNPJ").Trim(), Assessor = assessor.Field <string>("Assessor").Trim(), NomeAssessor = assessor.Field <string>("Nome Assessor").Trim(), Titulo = record.Field <string>("Titulo").Trim(), Aplicacao = record.Field <string>("Aplicacao").Trim(), Vencimento = record.Field <string>("Vencimento").Trim(), Taxa = record.Field <string>("Taxa").Trim(), Quantidade = record.Field <string>("Quantidade").Trim(), Indice = record.Field <string>("Indice").Trim(), ValorOriginal = record.Field <string>("ValorOriginal").Trim(), IRRF = record.Field <string>("IRRF").Trim(), IOF = record.Field <string>("IOF").Trim(), SaldoLiquido = record.Field <string>("SaldoLiquido").Trim(), DataAtualizacao = record.Field <string>("DataAtualizacao").Trim(), }; DataSet ds1 = new DataSet(); ds1.Tables.Add(query.ToDataTable()); logger.Info("GenerateVctosRendaFixa(" + functionName + ") dataset carregado, gerando planilha"); if (ExcelCreator.CreateExcel(ds1, excelFile, parametros.WorksheetName)) { logger.Info("GenerateVctosRendaFixa(" + functionName + ") planilha gerada com sucesso"); string subject = parametros.Subject + " - " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"); string message = "Planilha " + functionName + " gerada as " + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"); message += "\n\n"; message += "Gravado em [" + excelFile + "]"; if (!String.IsNullOrEmpty(rede)) { message += "\n\n"; message += "Disponivel na pasta de rede: [" + rede + "]"; } if (!String.IsNullOrEmpty(parametros.Message)) { message += "\n\n" + parametros.Message; } message += "\n\n"; string[] anexos = new string[1]; anexos[0] = excelFile; MailUtil.EnviarPlanilhaPorEmail(parametros.MailFrom, parametros.MailTo, null, null, subject, message, anexos); } try { if (!String.IsNullOrEmpty(rede)) { FileInfo excelInfo = new FileInfo(excelFile); rede += Path.DirectorySeparatorChar; rede += excelInfo.Name; logger.Info("GenerateVctosRendaFixa(" + functionName + ") Copiando arquivo [" + excelFile + "] para [" + rede + "]"); File.Copy(excelFile, rede); } else { logger.Info("GenerateVctosRendaFixa(" + functionName + ") Chave appsettings 'DiretorioRede' nao existe para copia do arquivo!"); } } catch (Exception ex) { logger.Error("GenerateVctosRendaFixa(" + functionName + "): Erro ao copiar para pasta de rede"); logger.Error("GenerateVctosRendaFixa(" + functionName + "): " + ex.Message, ex); } } catch (Exception ex) { logger.Error("GenerateVctosRendaFixa(" + functionName + "): " + ex.Message, ex); } }
public void InserirMovimentoClienteRetroativo() { PersistenciaDB lDb = new PersistenciaDB(); MovimentoCCSinacorResponse _movimentoCCSinacor; CompraETFResponse _CompraETFResponse; ClienteMovCCRequest _clienteMovCCRequest = new ClienteMovCCRequest(); CustodiaValorizadaRequest _CustodiaValorizadaRequest; decimal ValorAplicacao = 0; decimal ValorCompra = 0; decimal ValorResquiso = 0; decimal ValorPrecoMedio = 0; DateTime dataTransacao = DateTime.Now; AcessaDados _AcessaDados = new AcessaDados(); _AcessaDados.ConnectionStringName = PersistenciaDB.ConexaoSQL; _AcessaDados.Conexao._ConnectionStringName = PersistenciaDB.ConexaoSQL; DbTransaction transacao; DbConnection ConnectionSql; ConnectionSql = _AcessaDados.Conexao.CreateIConnection(); ConnectionSql.Open(); transacao = ConnectionSql.BeginTransaction(); try { ClienteProdutoResponse ClienteSemMovimentoMes = lDb.SelecionarClienteRentabilidadeRetroativa(48054, new DateTime(2011, 11, 25)); //seleciona os clientes do poupe direct com data de movimento para hoje DateTime dataInicioVencimento = DateTime.MinValue; DateTime dataFimVencimento = DateTime.MinValue; decimal _CustoPapelHoje = 0; decimal _PercentualVariazao = 0; decimal _ValorPapelRentabilizado = 0; gLogger.InfoFormat("Quantidade de clientes com vencimento hoje - {0} .", ClienteSemMovimentoMes.ListaClienteProduto.Count); foreach (ClienteProdutoInfo clienteProduto in ClienteSemMovimentoMes.ListaClienteProduto) { _movimentoCCSinacor = new MovimentoCCSinacorResponse(); dataFimVencimento = clienteProduto.DtInicioTrocaPlano.Value.AddDays(-1); dataInicioVencimento = clienteProduto.DtVencimento.Value.AddDays(-clienteProduto.QtdDiasVencimento); _movimentoCCSinacor = lDb.SelecionarMovimentoCliente(clienteProduto.CodigoClientePoupe, dataInicioVencimento, dataFimVencimento); //Seleciona do SINACOR movimento do mes corrente _CompraETFResponse = lDb.SelecionarMovimentoCompraETF(clienteProduto.CodigoClientePoupe, dataInicioVencimento, dataFimVencimento, clienteProduto.CodigoAtivo); //Seleciona a compra de ETFs if (_movimentoCCSinacor.ListaMovimentoCCSinacor.Count > 0 && _CompraETFResponse.ListaCompraETF.Count > 0) { gLogger.InfoFormat("Usuário - {0} - vai ser rentabilizado.", clienteProduto.CodigoClientePoupe); ValorAplicacao = _movimentoCCSinacor.ListaMovimentoCCSinacor[0].ValorLancamento; ValorCompra = _CompraETFResponse.ListaCompraETF[0].ValorLiquido < 0 ? _CompraETFResponse.ListaCompraETF[0].ValorLiquido * -1 : _CompraETFResponse.ListaCompraETF[0].ValorLiquido; ValorResquiso = ValorAplicacao - ValorCompra; ValorResquiso = ValorAplicacao - ValorCompra; ValorPrecoMedio = lDb.ObterPrecoMedio(clienteProduto.CodigoClientePoupe, dataInicioVencimento, dataFimVencimento, clienteProduto.CodigoAtivo); _clienteMovCCRequest.ClienteMovCC = new ClienteMovCCInfo(); _clienteMovCCRequest.ClienteMovCC.CodigoClienteProduto = clienteProduto.CodigoClienteProduto; _clienteMovCCRequest.ClienteMovCC.CodigoCliente = clienteProduto.CodigoCliente; _clienteMovCCRequest.ClienteMovCC.ValorAplicacao = ValorAplicacao; _clienteMovCCRequest.ClienteMovCC.ValorConsumido = ValorCompra; _clienteMovCCRequest.ClienteMovCC.ValorResquicio = ValorResquiso; _clienteMovCCRequest.ClienteMovCC.ValorCorretagem = _CompraETFResponse.ListaCompraETF[0].ValorCorretagem;//tenho que definir de onde vem _clienteMovCCRequest.ClienteMovCC.DtSistema = DateTime.Now; _clienteMovCCRequest.ClienteMovCC.DtTransacao = _CompraETFResponse.ListaCompraETF[0].DataNegocio; _clienteMovCCRequest.ClienteMovCC.DescMovCC = "Movimento Sinacor para POUPE DIRECT"; lDb.InserirAtualizarClienteMovCC(_clienteMovCCRequest, transacao, _AcessaDados); //inseri na tabela tb_cliente_mov_cc _CustodiaValorizadaRequest = new CustodiaValorizadaRequest(); _CustodiaValorizadaRequest.CustodiaValorizada = new CustodiaValorizadaInfo(); _CustoPapelHoje = lDb.ObterPosicaoFechamentoCotacao(clienteProduto.CodigoAtivo); _PercentualVariazao = ((_CustoPapelHoje - _CompraETFResponse.ListaCompraETF[0].ValorPapel) * 100) / _CompraETFResponse.ListaCompraETF[0].ValorPapel; _ValorPapelRentabilizado = _CompraETFResponse.ListaCompraETF[0].QuantidadePapel * _CustoPapelHoje; RentabilidadeInfo rentabilidade = lDb.RentabilizarCarteira(clienteProduto.CodigoCliente, clienteProduto.CodigoProduto, _ValorPapelRentabilizado, _PercentualVariazao); _CustodiaValorizadaRequest.CustodiaValorizada.CodigoClienteProduto = clienteProduto.CodigoClienteProduto; _CustodiaValorizadaRequest.CustodiaValorizada.CodigoCliente = clienteProduto.CodigoCliente; _CustodiaValorizadaRequest.CustodiaValorizada.CodigoProduto = clienteProduto.CodigoProduto; _CustodiaValorizadaRequest.CustodiaValorizada.ValorAplicacao = ValorAplicacao; _CustodiaValorizadaRequest.CustodiaValorizada.ValorConsumido = ValorCompra; _CustodiaValorizadaRequest.CustodiaValorizada.ValorResquicio = ValorResquiso; _CustodiaValorizadaRequest.CustodiaValorizada.ValorCarteira = rentabilidade.ValorTotalCarteira + ValorResquiso; _CustodiaValorizadaRequest.CustodiaValorizada.ValorCustoMedio = ValorPrecoMedio; _CustodiaValorizadaRequest.CustodiaValorizada.DtRentabilizacao = DateTime.Now; _CustodiaValorizadaRequest.CustodiaValorizada.QtdTitulos = _CompraETFResponse.ListaCompraETF[0].QuantidadePapel; _CustodiaValorizadaRequest.CustodiaValorizada.PercentVariacao = rentabilidade.PercentVariacaoTotal; _CustodiaValorizadaRequest.CustodiaValorizada.CodigoAtivo = clienteProduto.CodigoAtivo; _CustodiaValorizadaRequest.CustodiaValorizada.ValorAtivo = _CompraETFResponse.ListaCompraETF[0].ValorPapel; lDb.InserirAtualizarCustodiaValorizada(_CustodiaValorizadaRequest, transacao, _AcessaDados); //inseri na tabela TB_CUSTODIA_VALORIZADA } //zera as variáveis ValorAplicacao = 0; ValorCompra = 0; ValorResquiso = 0; } transacao.Commit(); } catch (Exception ex) { transacao.Rollback(); gLogger.ErrorFormat("Erro ao Pegar o movimento do cliente para o poupe - {0} - StackTrace - {1}", ex.Message, ex.StackTrace); } finally { ConnectionSql.Close(); ConnectionSql.Dispose(); ConnectionSql = null; transacao = null; } }
/// <summary> /// /// </summary> private void monitorSolicitacoesRocket() { Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Info, String.Format("{0}: {1}", Gradual.Utils.MethodHelper.GetCurrentMethod(), "Iniciando monitorSolicitacoesRocket()"), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }); CMRocketProcessoInfo info = null; long lastLoop = 0; // O loop de processamento trata primeiro todas as solicitacoes de processamento, // entao todos os acompanhamentos de status, e por fim, em obter todos os processos // disponibilizados pelo rocket while (bKeepRunning) { try { TimeSpan sp = new TimeSpan(DateTime.Now.Ticks - lastLoop); if ((filaMonitoracaoRocket.Count == 0 && filaRequisicaoRocket.Count == 0 && filaRelatorioRocket.Count == 0) || sp.TotalSeconds < 15) { Thread.Sleep(250); continue; } lastLoop = DateTime.Now.Ticks; Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Info, String.Format("{0}: {1}", Gradual.Utils.MethodHelper.GetCurrentMethod(), String.Format("Fila de processos para enviar ao rocket com {0} itens", filaRequisicaoRocket.Count)), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }); for (int i = 0; i < filaRequisicaoRocket.Count; i++) { if (this.filaRequisicaoRocket.TryDequeue(out info)) { TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - info.DataSolicitacaoRocket.Ticks); if (info.StatusProcesso.Equals(CMRocketProcessoInfo.STATUS_ROCKET_ESPERA) && ts.TotalMinutes > 3) { Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Info, String.Format("{0}: {1}", Gradual.Utils.MethodHelper.GetCurrentMethod(), String.Format("Solicitando processamento do CPF [{0}]", info.Cpf)), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }); DateTime dtEvolStart = DateTime.Now; if (solicitarProcessamentoRocket(ref info)) { Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Info, String.Format("{0}: {1}", Gradual.Utils.MethodHelper.GetCurrentMethod(), String.Format("Processamento solicitado com sucesso CPF [{0}] HASH [{1}] TICKET [{2}]", info.Cpf, info.Hash, info.Ticket)), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }); info.StatusProcesso = CMRocketProcessoInfo.STATUS_ROCKET_SOLICITADO; info.IDPendenciaCadastral = incluirPendenciaCadastral(info); } DateTime dtEvolStop = DateTime.Now; info.DataAtualizacao = DateTime.Now; info.DataSolicitacaoRocket = DateTime.Now; PersistenciaDB db = new PersistenciaDB(); db.AtualizarProcessoRocket(info); db.InserirEvolucaoProcessoRocket(info.IDCapivara, dtEvolStart, dtEvolStop, info.StatusProcesso); // Coloca o processo na fila de monitoracao do status se a solicitacao // foi feita com sucesso if (info.StatusProcesso.Equals(CMRocketProcessoInfo.STATUS_ROCKET_SOLICITADO)) { filaMonitoracaoRocket.Enqueue(info); continue; } } filaRequisicaoRocket.Enqueue(info); } } } catch (Exception ex) { Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Error, Gradual.Utils.MethodHelper.GetCurrentMethod(), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }, ex); } Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Info, String.Format("{0}: {1}", Gradual.Utils.MethodHelper.GetCurrentMethod(), String.Format("Fila de processos para pesquisar status com {0} itens", filaMonitoracaoRocket.Count)), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }); try { for (int i = 0; i < filaMonitoracaoRocket.Count; i++) { if (this.filaMonitoracaoRocket.TryDequeue(out info)) { TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - info.DataAtualizacao.Ticks); if ((info.StatusProcesso.Equals(CMRocketProcessoInfo.STATUS_ROCKET_SOLICITADO) || info.StatusProcesso.Equals(CMRocketProcessoInfo.STATUS_ROCKET_EM_PROCESSAMENTO)) && ts.TotalMinutes > 1) { Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Info, String.Format("{0}: {1}", Gradual.Utils.MethodHelper.GetCurrentMethod(), String.Format("Solicitando status do processamento do CPF [{0}]", info.Cpf)), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }); DateTime dtEvolStart = DateTime.Now; if (solicitarStatusRocket(ref info)) { Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Info, String.Format("{0}: {1}", Gradual.Utils.MethodHelper.GetCurrentMethod(), String.Format("Status com sucesso CPF [{0}] HASH [{1}] TICKET [{2}] STATUS[{3}]", info.Cpf, info.Hash, info.Ticket, info.StatusProcesso)), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }); DateTime dtEvolStop = DateTime.Now; info.DataAtualizacao = DateTime.Now; PersistenciaDB db = new PersistenciaDB(); db.AtualizarProcessoRocket(info); db.InserirEvolucaoProcessoRocket(info.IDCapivara, dtEvolStart, dtEvolStop, info.StatusProcesso); //Se estiver disponivel, coloca na outra fila if (info.StatusProcesso.Equals(CMRocketProcessoInfo.STATUS_ROCKET_DISPONIVEL)) { filaRelatorioRocket.Enqueue(info); continue; } } } filaMonitoracaoRocket.Enqueue(info); } } } catch (Exception ex) { Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Error, Gradual.Utils.MethodHelper.GetCurrentMethod(), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }, ex); } Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Info, String.Format("{0}: {1}", Gradual.Utils.MethodHelper.GetCurrentMethod(), String.Format("Fila de processos disponibilizados com {0} itens", filaRelatorioRocket.Count)), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }); try { for (int i = 0; i < filaRelatorioRocket.Count; i++) { if (this.filaRelatorioRocket.TryDequeue(out info)) { TimeSpan ts = new TimeSpan(DateTime.Now.Ticks - info.DataAtualizacao.Ticks); if (info.StatusProcesso.Equals(CMRocketProcessoInfo.STATUS_ROCKET_DISPONIVEL) && ts.TotalMinutes > 1) { Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Info, String.Format("{0}: {1}", Gradual.Utils.MethodHelper.GetCurrentMethod(), String.Format("Solicitando relatorio do processamento do CPF [{0}]", info.Cpf)), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }); DateTime dtEvolStart = DateTime.Now; if (solicitarRelatorioRocket(ref info)) { Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Info, String.Format("{0}: {1}", Gradual.Utils.MethodHelper.GetCurrentMethod(), String.Format("Relatorio obtido com sucesso CPF [{0}] HASH [{1}] TICKET [{2}] STATUS[{3}]", info.Cpf, info.Hash, info.Ticket, info.StatusProcesso)), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }); info.StatusProcesso = CMRocketProcessoInfo.STATUS_ROCKET_RELATORIO_FINALIZADO; info.DataAtualizacao = DateTime.Now; PersistenciaDB db = new PersistenciaDB(); db.AtualizarProcessoRocket(info); db.InserirEvolucaoProcessoRocket(info.IDCapivara, dtEvolStart, DateTime.Now, info.StatusProcesso); //Exporta ou cadastra pendencia filaExportacao.Enqueue(info); continue; } } filaRelatorioRocket.Enqueue(info); } } } catch (Exception ex) { Gradual.Utils.Logger.Log("Servico", Gradual.Utils.LoggingLevel.Error, Gradual.Utils.MethodHelper.GetCurrentMethod(), new { User = Gradual.Utils.Settings.User, Environment = Gradual.Utils.Settings.Environment }, ex); } } }
public void RecalcularFinanceiro(string param) { bool bIgnoreTimestamp = false; if (!String.IsNullOrEmpty(param)) { if (param.ToLowerInvariant().Equals("ignoretimestamp")) { bIgnoreTimestamp = true; EnviarRelatorioRecalculoUltimaHora(); dctRecalculado.Clear(); initialRun = lastRun; lastRun = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 8, 0, 0); logger.Info("IGNORANDO TIMESTAMP DA ORDEM"); } else { if (bRecalculando) { logger.Warn("Loop de recalculo em andamento, deixando para proxima rodada"); return; } } } bRecalculando = true; logger.Info("Recalculando ordens executadas desde [" + lastRun.ToString("dd/MM/yyyy HH:mm:ss.fff") + "]"); ConfigurationManager.RefreshSection("appSettings"); int faxProcedureInterval = 10 * 1000; if (ConfigurationManager.AppSettings["FaxProcedureInterval"] != null) { faxProcedureInterval = Convert.ToInt32(ConfigurationManager.AppSettings["FaxProcedureInterval"].ToString()); } try { PersistenciaDB db = new PersistenciaDB(ConfigurationManager.ConnectionStrings["TRADE"].ConnectionString); Dictionary <int, ComitenteDiaInfo> dctComit = db.BuscarComitentesDia(lastRun.AddMinutes(-5)); lastRun = DateTime.Now; logger.Info("Comitentes no dia com " + dctComit.Count + " itens"); foreach (int account in dctComit.Keys) { try { db = new PersistenciaDB(ConfigurationManager.ConnectionStrings["SINACOR"].ConnectionString); if (db.EfetuarRecalculo(account, DateTime.Now)) { logger.Info("Recalculo da conta [" + account + "] chamada com sucesso"); if (!dctRecalculado.ContainsKey(account) && !bIgnoreTimestamp) { dctRecalculado.Add(account, account); } } else { logger.Error("Erro no recalculo da conta [" + account + "]"); } if (!bIgnoreTimestamp) { // Calcula o intervalo correto para efetuar todos os recalculos // em 58s faxProcedureInterval = 58000 / dctComit.Keys.Count; Thread.Sleep(faxProcedureInterval); } } catch (Exception ex) { logger.Error("Erro no recalculo da conta [" + account + "]: " + ex.Message, ex); } } } catch (Exception ex) { logger.Error("RecalcularFinanceiro(): " + ex.Message, ex); } finally { bRecalculando = false; } }