示例#1
0
 private void comporMensagem(MensagemRequestBase mensagem)
 {
     if (mensagem.GetType() == typeof(ExecutarOrdemRequest))
     {
         ExecutarOrdemRequest msg = (ExecutarOrdemRequest)mensagem;
         msg.ClOrdID        = _servicoOrdens.GerarCodigoMensagem("ORD");
         msg.CodigoCliente  = "123";
         msg.DataReferencia = DateTime.Now;
         msg.CodigoBolsa    = "BMF";
         msg.TransactTime   = DateTime.Now.Date;
         msg.Price          = 100;
         msg.OrderQty       = 10;
     }
     else if (mensagem.GetType() == typeof(CancelarOrdemRequest))
     {
         CancelarOrdemRequest msg = (CancelarOrdemRequest)mensagem;
         msg.ClOrdID       = _servicoOrdens.GerarCodigoMensagem("CNC");
         msg.CodigoBolsa   = "BMF";
         msg.CodigoCliente = "123";
     }
     else
     {
         mensagem.CodigoMensagem = _servicoOrdens.GerarCodigoMensagem("MSG");
     }
 }
示例#2
0
 private void mostrarMensagem(MensagemRequestBase mensagem)
 {
     lstMensagem.SelectedItem = mensagem.GetType();
     _mensagemRequest         = mensagem;
     comporMensagem(_mensagemRequest);
     ppg.SelectedObject = _mensagemRequest;
     tab.SelectedTab    = tabEnviarMensagem;
 }
示例#3
0
        public MensagemResponseBase ProcessarMensagem(MensagemRequestBase parametros)
        {
            Type lTipoParametro = parametros.GetType();

            if (lTipoParametro == typeof(AutenticarUsuarioRequest))
            {
                AutenticarUsuarioResponse lResposta = new AutenticarUsuarioResponse();

                lResposta.StatusResposta = MensagemResponseStatusEnum.OK;

                lResposta.Sessao = new SessaoInfo();

                lResposta.Sessao.CodigoSessao = Guid.NewGuid().ToString();

                return(lResposta);
            }
            else if (lTipoParametro == typeof(ValidarItemSegurancaRequest))
            {
                ValidarItemSegurancaResponse lResposta = new ValidarItemSegurancaResponse();

                lResposta.StatusResposta = MensagemResponseStatusEnum.OK;

                lResposta.ItensSeguranca = ((ValidarItemSegurancaRequest)parametros).ItensSeguranca;

                foreach (ItemSegurancaInfo lItem in lResposta.ItensSeguranca)
                {
                    lItem.Valido = true;
                }

                return(lResposta);
            }
            else if (lTipoParametro == typeof(ListarUsuariosRequest))
            {
                ListarUsuariosResponse lResposta = new ListarUsuariosResponse();

                lResposta.Usuarios = new List <UsuarioInfo>();

                lResposta.Usuarios.Add(new UsuarioInfo()
                {
                    Nome          = "Teste",
                    Email         = "*****@*****.**",
                    CodigoUsuario = "1"
                });

                return(lResposta);
            }
            else
            {
                throw new NotImplementedException(string.Format("Mock não implementado para [{0}]", lTipoParametro));
            }
        }
示例#4
0
        /// <summary>
        /// Processa a mensagem solicitada.
        /// Faz o roteamento da mensagem para o devido serviço
        /// </summary>
        /// <param name="parametros"></param>
        /// <returns></returns>
        public MensagemResponseBase ProcessarMensagem(MensagemRequestBase parametros)
        {
            // Prepara resposta
            MensagemResponseBase resposta = null;

            // Bloco de controle
            try
            {
                // Passa a mensagem pela validação
                ValidarMensagemResponse respostaValidacao =
                    _servicoValidacao.ValidarMensagem(
                        new ValidarMensagemRequest()
                {
                    CodigoSessao = parametros.CodigoSessao,
                    Mensagem     = parametros
                });

                // Verifica o retorno da validação
                if (respostaValidacao.ContextoValidacao.MensagemValida)
                {
                    // Tipo da mensagem
                    Type tipoMensagem = parametros.GetType();

                    // Acha o método que processa este tipo de mensagem
                    MethodInfo metodo = _tiposConhecidos[tipoMensagem];

                    // Tipo do servico
                    Type tipoServico = metodo.ReflectedType;

                    // Pega instancia do servico
                    object servico = Ativador.Get(tipoServico);

                    // Executa
                    resposta = (MensagemResponseBase)metodo.Invoke(servico, new object[] { parametros });

                    // Faz o log da mensagem
                    logger.Info("ServicoMensageria.ProcessarMensagem: " + Serializador.TransformarEmString(parametros));
                }
                else
                {
                    // Cria resposta
                    resposta = criarResponsePadrao(parametros.GetType());

                    // Preenche a resposta
                    resposta.CodigoMensagemRequest = parametros.CodigoMensagem;
                    resposta.Criticas          = respostaValidacao.Criticas;
                    resposta.StatusResposta    = MensagemResponseStatusEnum.ErroValidacao;
                    resposta.DescricaoResposta = constDescricaoErroValidacao;

                    // Faz o log
                    logger.Error("ServicoMensageria.ProcessarMensagem (Erro de Validação): " + Serializador.TransformarEmString(respostaValidacao));
                }
            }
            catch (Exception ex)
            {
                // Faz o log
                logger.Error("Erro ao processar mensagem: " + parametros.CodigoMensagem, ex);

                // Cria resposta
                resposta = criarResponsePadrao(parametros.GetType());

                // Preenche a resposta
                resposta.CodigoMensagemRequest = parametros.CodigoMensagem;
                resposta.StatusResposta        = MensagemResponseStatusEnum.ErroPrograma;
                resposta.DescricaoResposta     = ex.ToString();
            }

            // Retorna
            return(resposta);
        }