Exemplo n.º 1
0
        /// <summary>
        /// Renovar composicao atual de uma carteira recomendada.
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public RenovarResponse SolicitarRenovacao(RenovarRequest request)
        {
            RenovarResponse response = new RenovarResponse();
            PersistenciaCarteiraRecomendada persistenciaCarteiraRecomendada = new PersistenciaCarteiraRecomendada();

            try
            {
                logger.Info("Preparando solicitação de renovação de carteira recomendada");
                logger.Info("Descrição: " + request.dsRenovacao);
                logger.Info("Tipo de solicitação: Renovação");

                logger.Info("Chamando o método Renovacao() para efetuar a transacao no banco de dados");
                bool bTransacao = persistenciaCarteiraRecomendada.Renovacao(request);
                logger.Info("Transacao efetuada com sucesso");

                response.DataResposta      = DateTime.Now;
                response.bSucesso          = bTransacao;
                response.CriticaResposta   = StatusRespostaEnum.Sucesso;
                response.DescricaoResposta = SUCESSO;
            }
            catch (Exception ex)
            {
                response.DataResposta      = DateTime.Now;
                response.CriticaResposta   = StatusRespostaEnum.ErroPrograma;
                response.DescricaoResposta = ERROPROGRAMA;
                response.Exception         = ex;
            }

            logger.Info("Retorna resposta");
            return(response);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Adesao do cliente a uma Carteira Recomendada (associada ao produto informado)
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public AdesaoClienteResponse SolicitarAdesaoCliente(AdesaoClienteRequest request)
        {
            AdesaoClienteResponse           response = null;
            PersistenciaCarteiraRecomendada persistenciaCarteiraRecomendada = new PersistenciaCarteiraRecomendada();

            try
            {
                logger.Info("Preparando solicitação de adesão de cliente a carteira recomendada");
                logger.Info("Código do Cliente: " + request.IdCliente.ToString());
                logger.Info("Código do Produto: " + request.IdProduto.ToString());
                logger.Info("Tipo de solicitação: Inclusão");

                logger.Info("Avaliando Risco do Cliente");
                response = CalcularRiscoCliente(request);
                if (response.bSucesso == false)
                {
                    return(response);
                }

                logger.Info("Preenchendo a classe ClienteProdutoInfo");
                ClienteProdutoInfo clienteProdutoInfo = new ClienteProdutoInfo();
                clienteProdutoInfo.IdCliente = request.IdCliente;
                clienteProdutoInfo.IdProduto = request.IdProduto;
                clienteProdutoInfo.StAtivo   = 'S';
                clienteProdutoInfo.IP        = request.IP;
                clienteProdutoInfo.Descricao = "Cliente[" + request.IdCliente.ToString() + "] aderiu ao Produto[" + request.IdProduto.ToString() + "]";

                logger.Info("Chamando o método AdesaoCliente() para efetuar a transacao no banco de dados");
                bool bTransacao = true; // persistenciaCarteiraRecomendada.AdesaoCliente(clienteProdutoInfo);
                logger.Info("Transacao efetuada com sucesso");

                response.DataResposta      = DateTime.Now;
                response.bSucesso          = bTransacao;
                response.CriticaResposta   = StatusRespostaEnum.Sucesso;
                response.DescricaoResposta = SUCESSO;
            }
            catch (Exception ex)
            {
                response.DataResposta      = DateTime.Now;
                response.CriticaResposta   = StatusRespostaEnum.ErroPrograma;
                response.DescricaoResposta = ERROPROGRAMA;
                response.Exception         = ex;
            }

            logger.Info("Retorna resposta");
            return(response);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Cancelamento de carteira recomendada
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public CancelarResponse SolicitarCancelamento(CancelarRequest request)
        {
            CancelarResponse response = new CancelarResponse();
            PersistenciaCarteiraRecomendada persistenciaCarteiraRecomendada = new PersistenciaCarteiraRecomendada();

            try
            {
                logger.Info("Preparando solicitação de cancelamento de cliente de carteira recomendada");
                logger.Info("Código do cliente: " + request.IdCliente.ToString());
                logger.Info("Código do produto: " + request.IdProduto.ToString());
                logger.Info("Tipo de solicitação: Cancelamento");

                logger.Info("Preenchendo a classe ClienteProdutoInfo");

                ClienteProdutoInfo clienteProdutoInfo = new ClienteProdutoInfo();

                clienteProdutoInfo.IdCliente = request.IdCliente;
                clienteProdutoInfo.IdProduto = request.IdProduto;
                clienteProdutoInfo.StAtivo   = 'N';
                clienteProdutoInfo.IP        = request.IP;
                clienteProdutoInfo.Descricao = "Cliente[" + request.IdCliente.ToString() + "] teve cancelado adesão ao Produto[" + request.IdProduto.ToString() + "]";

                logger.Info("Chamando o método Cancelamento() para efetuar a transacao no banco de dados");
                bool bTransacao = persistenciaCarteiraRecomendada.Cancelamento(clienteProdutoInfo);
                logger.Info("Transacao efetuada com sucesso");

                response.DataResposta      = DateTime.Now;
                response.bSucesso          = bTransacao;
                response.CriticaResposta   = StatusRespostaEnum.Sucesso;
                response.DescricaoResposta = SUCESSO;
            }
            catch (Exception ex)
            {
                response.DataResposta      = DateTime.Now;
                response.CriticaResposta   = StatusRespostaEnum.ErroPrograma;
                response.DescricaoResposta = ERROPROGRAMA;
                response.Exception         = ex;
            }

            logger.Info("Retorna resposta");
            return(response);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Listar composição da Carteira Recomendada informada.
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public ListarComposicaoResponse SolicitarListaComposicao(ListarComposicaoRequest request)
        {
            ListarComposicaoResponse        response = new ListarComposicaoResponse();
            PersistenciaCarteiraRecomendada persistenciaCarteiraRecomendada = new PersistenciaCarteiraRecomendada();

            try
            {
                logger.Info("Preparando solicitação de lista de Composicao de Carteira Recomendada");
                logger.Info("Id da Carteira: " + request.idCarteiraRecomendada.ToString());
                logger.Info("Tipo de solicitação: Lista");

                logger.Info("Chamando o método ListaComposicao() para efetuar a transacao no banco de dados");
                response = persistenciaCarteiraRecomendada.ListaComposicao(request);
                logger.Info("Transacao efetuada com sucesso");

                if (response.listaComposicao.Count == 0)
                {
                    response.DescricaoResposta = "Nenhuma ativo encontrado na composição da Carteira Recomendada";
                    response.DataResposta      = DateTime.Now;
                    response.CriticaResposta   = StatusRespostaEnum.ErroNegocio;
                }
                else
                {
                    response.DescricaoResposta = response.listaComposicao.Count.ToString() + " ativo(s) encontrado(s)";
                    response.DataResposta      = DateTime.Now;
                    response.CriticaResposta   = StatusRespostaEnum.Sucesso;
                }
            }
            catch (Exception ex)
            {
                response.DataResposta      = DateTime.Now;
                response.CriticaResposta   = StatusRespostaEnum.ErroPrograma;
                response.DescricaoResposta = ERROPROGRAMA;
                response.Exception         = ex;
            }

            logger.Info("Retorna a resposta");
            return(response);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Listar todos os assessores existentes no Sinacor.
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public ListarAssessoresResponse SolicitarListaAssessores()
        {
            PersistenciaCarteiraRecomendada persistenciaCarteiraRecomendada = new PersistenciaCarteiraRecomendada();
            ListarAssessoresResponse        response = new ListarAssessoresResponse();

            try
            {
                logger.Info("Preparando solicitação de lista de Assessores");
                logger.Info("Tipo de solicitação: Lista");

                logger.Info("Chamando o método ListaAssessores() para efetuar a transacao no banco de dados");
                response = persistenciaCarteiraRecomendada.ListaAssessores();
                logger.Info("Transacao efetuada com sucesso");

                if (response.Lista.Count == 0)
                {
                    response.DescricaoResposta = "Nenhum Assessor encontrado";
                    response.DataResposta      = DateTime.Now;
                    response.CriticaResposta   = StatusRespostaEnum.ErroNegocio;
                }
                else
                {
                    response.DescricaoResposta = response.Lista.Count.ToString() + " assessor(es) encontrado(s)";
                    response.DataResposta      = DateTime.Now;
                    response.CriticaResposta   = StatusRespostaEnum.Sucesso;
                }
            }
            catch (Exception ex)
            {
                response.DataResposta      = DateTime.Now;
                response.CriticaResposta   = StatusRespostaEnum.ErroPrograma;
                response.DescricaoResposta = ERROPROGRAMA;
                response.Exception         = ex;
            }

            logger.Info("Retorna a resposta");
            return(response);
        }
Exemplo n.º 6
0
        private ValidacaoRiscoResponse VenderCarteiraRecomendada(ValidacaoRiscoRequest pParametros, string CodigoCarteiraRecomendada)
        {
            ValidacaoRiscoResponse     PipeLineResponse      = new ValidacaoRiscoResponse();
            List <PipeLineCriticaInfo> CriticaInfoCollection = new List <PipeLineCriticaInfo>();
            PipeLineCriticaInfo        CriticaInfo           = null;


            logger.Info("Inicia Rotina de validação de compra de ações, cliente: " + pParametros.EnviarOrdemRequest.OrdemInfo.Account.ToString());

            logger.Info("Caracteristicas da ordem");
            logger.Info("Cliente             :" + pParametros.EnviarOrdemRequest.OrdemInfo.Account.ToString());
            logger.Info("Operação            : Compra");
            logger.Info("Instrumento         :" + pParametros.EnviarOrdemRequest.OrdemInfo.Symbol);
            logger.Info("Quantidade          :" + pParametros.EnviarOrdemRequest.OrdemInfo.OrderQty.ToString());
            logger.Info("Preco               : ORDEM A MERCADO ");
            logger.Info("DtVencimento        :" + pParametros.EnviarOrdemRequest.OrdemInfo.ExpireDate.ToString());
            logger.Info("ClasseCliente       : Institucional");


            CadastroPapeisRequest _CadastroPapeisRequest = new CadastroPapeisRequest();

            _CadastroPapeisRequest.Instrumento = pParametros.EnviarOrdemRequest.OrdemInfo.Symbol;

            CadastroPapeisResponse <CadastroPapelInfo> CadastroPapeis = new PersistenciaCarteiraRecomendada().ObterInformacoesPapeis(_CadastroPapeisRequest);


            int FatorCotacao = int.Parse(CadastroPapeis.Objeto.FatorCotacao);

            // TRATAMENTO [ FRACIONARIO / INTEGRAL ]
            int LoteNegociacao       = int.Parse(CadastroPapeis.Objeto.LoteNegociacao);
            int ModuloLoteNegociacao = pParametros.EnviarOrdemRequest.OrdemInfo.OrderQty % LoteNegociacao;

            if (pParametros.EnviarOrdemRequest.OrdemInfo.OrderQty >= LoteNegociacao)
            {
                // ENVIAR INTEGRAL
                pParametros.EnviarOrdemRequest.OrdemInfo.OrderQty -= ModuloLoteNegociacao;
                logger.Info("Inicia operação de compra de: " + pParametros.EnviarOrdemRequest.OrdemInfo.Symbol + " no mercado Integral");

                // Inseri a Ordem solicitada no banco de dados
                if (InserirOrdemCliente(pParametros.EnviarOrdemRequest))
                {
                    //TODO: COMPRA O PAPEL COM O SERVICO DE ORDENS
                    logger.Info("Compra de: " + pParametros.EnviarOrdemRequest.OrdemInfo.Symbol + " no mercado integral efetuada com sucesso.");

                    logger.Info("Envia a ordem para o roteador de ordens");

                    pParametros.EnviarOrdemRequest.OrdemInfo.Account = RetornaCodigoCliente(227, pParametros.EnviarOrdemRequest.OrdemInfo.Account);

                    ExecutarOrdemResponse RespostaRoteador = this.EnviarOrdemRoteador(pParametros.EnviarOrdemRequest.OrdemInfo);

                    pParametros.EnviarOrdemRequest.OrdemInfo.Account = int.Parse(pParametros.EnviarOrdemRequest.OrdemInfo.Account.ToString().Remove(pParametros.EnviarOrdemRequest.OrdemInfo.Account.ToString().Length - 1, 1));

                    // VERIFICA SE A ORDEM FOI ENVIADA COM SUCESSO PARA O ROTEADOR
                    if (RespostaRoteador.DadosRetorno.StatusResposta == StatusRoteamentoEnum.Sucesso)
                    {
                        logger.Info("Ordem institucional enviada com sucesso para o Roteador de Ordens");

                        PipeLineResponse.DataResposta      = DateTime.Now;
                        PipeLineResponse.DescricaoResposta = RespostaRoteador.DadosRetorno.Ocorrencias[0].Ocorrencia;
                        PipeLineResponse.StatusResposta    = OMS.Risco.Lib.Enum.CriticaRiscoEnum.Sucesso;
                    }
                    else
                    {
                        logger.Info("Ocorreu um erro ao enviar a ordem para o roteador de Ordens");

                        CriticaInfo                 = new PipeLineCriticaInfo();
                        CriticaInfo.Critica         = RespostaRoteador.DadosRetorno.Ocorrencias[0].Ocorrencia;
                        CriticaInfo.CriticaTipo     = OMS.Ordens.Lib.Enum.CriticaRiscoEnum.ErroRoteadorOrdem;
                        CriticaInfo.DataHoraCritica = DateTime.Now;

                        // Adiciona as criticas no pipeline de risco.
                        CriticaInfoCollection.Add(CriticaInfo);
                    }
                }

                if (ModuloLoteNegociacao > 0)
                {
                    // ENVIAR FRACIONARIO
                    logger.Info("Calcula restante a ser enviado para o mercado fracionário");

                    // ENVIAR FRACIONARIO
                    pParametros.EnviarOrdemRequest.OrdemInfo.OrderQty = ModuloLoteNegociacao;
                    pParametros.EnviarOrdemRequest.OrdemInfo.Symbol  += "F";
                    pParametros.EnviarOrdemRequest.OrdemInfo.ClOrdID  = this.CtrlNumber(CodigoCarteiraRecomendada);

                    logger.Info("Inicia compra de: " + pParametros.EnviarOrdemRequest.OrdemInfo.Symbol + " no mercado fracionário");

                    // Inseri a Ordem solicitada no banco de dados
                    if (InserirOrdemCliente(pParametros.EnviarOrdemRequest))
                    {
                        //TODO: COMPRA O PAPEL COM O SERVICO DE ORDENS
                        logger.Info("Compra de: " + pParametros.EnviarOrdemRequest.OrdemInfo.Symbol + " no mercado fracionario efetuada com sucesso.");

                        logger.Info("Envia a ordem para o roteador de ordens");

                        pParametros.EnviarOrdemRequest.OrdemInfo.Account = RetornaCodigoCliente(227, pParametros.EnviarOrdemRequest.OrdemInfo.Account);

                        ExecutarOrdemResponse RespostaRoteador = this.EnviarOrdemRoteador(pParametros.EnviarOrdemRequest.OrdemInfo);

                        pParametros.EnviarOrdemRequest.OrdemInfo.Account = int.Parse(pParametros.EnviarOrdemRequest.OrdemInfo.Account.ToString().Remove(pParametros.EnviarOrdemRequest.OrdemInfo.Account.ToString().Length - 1, 1));

                        // VERIFICA SE A ORDEM FOI ENVIADA COM SUCESSO PARA O ROTEADOR
                        if (RespostaRoteador.DadosRetorno.StatusResposta == StatusRoteamentoEnum.Sucesso)
                        {
                            logger.Info("Ordem enviada com sucesso para o Roteador de Ordens");

                            PipeLineResponse.DataResposta      = DateTime.Now;
                            PipeLineResponse.DescricaoResposta = RespostaRoteador.DadosRetorno.Ocorrencias[0].Ocorrencia;
                            PipeLineResponse.StatusResposta    = OMS.Risco.Lib.Enum.CriticaRiscoEnum.Sucesso;
                        }
                        else
                        {
                            logger.Info("Ocorreu um erro ao enviar a ordem para o roteador de Ordens");

                            CriticaInfo                 = new PipeLineCriticaInfo();
                            CriticaInfo.Critica         = RespostaRoteador.DadosRetorno.Ocorrencias[0].Ocorrencia;
                            CriticaInfo.CriticaTipo     = OMS.Ordens.Lib.Enum.CriticaRiscoEnum.ErroRoteadorOrdem;
                            CriticaInfo.DataHoraCritica = DateTime.Now;

                            // Adiciona as criticas no pipeline de risco.
                            CriticaInfoCollection.Add(CriticaInfo);
                        }
                    }
                }
            }
            else
            {
                //FRACIONARIO
                pParametros.EnviarOrdemRequest.OrdemInfo.Symbol += "F";

                logger.Info("Inicia compra de: " + pParametros.EnviarOrdemRequest.OrdemInfo.Symbol + " no mercado fracionário");

                // Inseri a Ordem solicitada no banco de dados
                if (InserirOrdemCliente(pParametros.EnviarOrdemRequest))
                {
                    //TODO: COMPRA O PAPEL COM O SERVICO DE ORDENS
                    logger.Info("Compra de: " + pParametros.EnviarOrdemRequest.OrdemInfo.Symbol + " no mercado fracionário efetuada com sucesso.");

                    //ENVIA ORDEM PARA O ROTEADOR
                    pParametros.EnviarOrdemRequest.OrdemInfo.Account = RetornaCodigoCliente(227, pParametros.EnviarOrdemRequest.OrdemInfo.Account);

                    logger.Info("Envia a ordem para o roteador de ordens");


                    var RespostaRoteador = this.EnviarOrdemRoteador(pParametros.EnviarOrdemRequest.OrdemInfo);

                    pParametros.EnviarOrdemRequest.OrdemInfo.Account = int.Parse(pParametros.EnviarOrdemRequest.OrdemInfo.Account.ToString().Remove(pParametros.EnviarOrdemRequest.OrdemInfo.Account.ToString().Length - 1, 1));

                    //// VERIFICA SE A ORDEM FOI ENVIADA COM SUCESSO PARA O ROTEADOR
                    if (RespostaRoteador.DadosRetorno.StatusResposta == StatusRoteamentoEnum.Sucesso)
                    {
                        logger.Info("Ordem enviada com sucesso para o Roteador de Ordens");

                        PipeLineResponse.DataResposta      = DateTime.Now;
                        PipeLineResponse.DescricaoResposta = RespostaRoteador.DadosRetorno.Ocorrencias[0].Ocorrencia;
                        PipeLineResponse.StatusResposta    = OMS.Risco.Lib.Enum.CriticaRiscoEnum.Sucesso;
                    }
                    else
                    {
                        logger.Info("Ocorreu um erro ao enviar a ordem para o roteador de Ordens");

                        CriticaInfo                 = new PipeLineCriticaInfo();
                        CriticaInfo.Critica         = RespostaRoteador.DadosRetorno.Ocorrencias[0].Ocorrencia;
                        CriticaInfo.CriticaTipo     = OMS.Ordens.Lib.Enum.CriticaRiscoEnum.ErroRoteadorOrdem;
                        CriticaInfo.DataHoraCritica = DateTime.Now;

                        // Adiciona as criticas no pipeline de risco.
                        CriticaInfoCollection.Add(CriticaInfo);
                    }
                }
            }

            return(PipeLineResponse);
        }