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