Ejemplo n.º 1
0
        /// <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);
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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());
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        /// <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);
            }
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        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);
            }
        }
Ejemplo n.º 13
0
        /// <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);
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
        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);
        }
Ejemplo n.º 16
0
        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);
        }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
        /// <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);
        }
Ejemplo n.º 19
0
        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);
            }
        }
Ejemplo n.º 20
0
        /// <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);
            }
        }
Ejemplo n.º 21
0
        /// <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);
            }
        }
Ejemplo n.º 22
0
        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;
            }
        }
Ejemplo n.º 23
0
        /// <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);
                }
            }
        }
Ejemplo n.º 24
0
        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;
            }
        }