/// <summary>
        /// Método responsável por tratar MensagensDto que possuem um vetor de usuários
        /// (Mensagem Sintetizada)
        /// </summary>
        /// <param name="mensagemTemporaria">MensagemDto</param>
        private void RnEnviarMensagensQuePossuemUsuarios(MensagemDto mensagemTemporaria)
        {
            //Caso seja nula não fazer nada
            if (mensagemTemporaria == null)
            {
                return;
            }

            mensagemTemporaria = RemoverProprioUsuarioDoVetorUsuariosDaMensagemDto(mensagemTemporaria);

            //Caso não contenha o indice usuários não fazer nada
            if (!mensagemTemporaria.Propriedades.ContainsKey(Constantes.USUARIOS))
            {
                return;
            }

            string[] usuarios = (string[])mensagemTemporaria.Propriedades[Constantes.USUARIOS];
            if (usuarios.Length > 0)
            {
                RnEnviarMensagemAoAccessClient(mensagemTemporaria);
            }
            else
            {
                LogDebug(string.Format("\nManager não enviou {2} - Client#{0} - Cronograma:{1}\nObs:não foi enviada por não conter usuários!", LoginCliente, OidCronograma, mensagemTemporaria.Tipo));
            }
        }
        /// <summary>
        /// Método responsável pelo envio da mensagem ao WexMultiAccessClient
        /// </summary>
        /// <param name="mensagemTemporaria">Mensagem a ser comunicada ao AccessClient</param>
        private void RnEnviarMensagemAoAccessClient(MensagemDto mensagemTemporaria)
        {
            string autorAcao;

            if (mensagemTemporaria.Propriedades.ContainsKey(Constantes.AUTOR_ACAO))
            {
                autorAcao = mensagemTemporaria.Propriedades[Constantes.AUTOR_ACAO] as string;
            }
            else
            {
                autorAcao = "-";
            }

            if (mensagemTemporaria == null || !TcpUtil.ConexaoTcpValida(TcpCliente))
            {
                if (mensagemTemporaria != null)
                {
                    LogDebug(string.Format("\n{4} não enviou {0} -  Client#{1} - Cronograma {2} - Autor Mensagem:{3} \nObs.: conexão tcp inválida ou encerrada!", mensagemTemporaria.Tipo, LoginCliente, OidCronograma, autorAcao, Thread.CurrentThread.Name));
                }
                else
                {
                    LogDebug(string.Format("\n{4} não comunicou mensagem - Client#{0} Cronograma:{1} - Autor:{2},\nObs.: mensagem nula!", LoginCliente, OidCronograma, autorAcao, Thread.CurrentThread.Name));
                }

                return;
            }

            string mensagemJson = JsonConvert.SerializeObject(mensagemTemporaria);

            LogDebug(string.Format("\n{4} enviou {0}(Enum - {1}) - Client#{2} - Autor - {3}\nMensagem Json:{5}", mensagemTemporaria.Tipo, (int)mensagemTemporaria.Tipo, LoginCliente, autorAcao, Thread.CurrentThread.Name, mensagemJson));
            mensagemJson = TcpUtil.AdicionarStringProtecaoDeIntegridade(mensagemJson);
            TcpUtil.EnviarMensagemTcp(mensagemJson, TcpCliente);
            LogarEnvio(mensagemTemporaria);
        }
        public void EntaoOServidorDeveSerComunicadoQueATarefaDoCronogramaEstaSendoEditadaPeloColaborador(string tarefa, string cronograma, string login)
        {
            string             oidCronograma    = StepCronograma.CronogramasDic[cronograma].Oid.ToString();
            string             oidTarefa        = StepCronograma.CronogramaTarefasDic[cronograma][tarefa].Oid.ToString();
            List <MensagemDto> mensagens        = null;
            MensagemDto        mensagemFiltrada = null;

            ControleDeEsperaUtil.AguardarAte(() =>
            {
                mensagens = new List <MensagemDto>(manager.ListaTodasMensagensProcessadas);

                mensagemFiltrada = mensagens.FirstOrDefault
                                       (o =>
                                       o.Tipo == CsTipoMensagem.InicioEdicaoTarefa &&
                                       o.Propriedades[Constantes.AUTOR_ACAO].ToString() == login &&
                                       o.Propriedades[Constantes.OIDTAREFA].ToString() == oidTarefa
                                       );

                return(mensagemFiltrada != null);
            });

            Assert.IsNotNull(mensagemFiltrada, "Não deveria ter sido nula, colaborador deveria ter recebido a mensagem pesquisada");
            Assert.AreEqual(login, mensagemFiltrada.Propriedades[Constantes.AUTOR_ACAO].ToString(), string.Format("O colaborador autor da mensagem deveria ser {0}", login));
            Assert.AreEqual(oidTarefa, mensagemFiltrada.Propriedades[Constantes.OIDTAREFA].ToString(), string.Format("O Oid da tarefa editada deveria ser {0}", oidTarefa));
            Assert.AreEqual(oidCronograma, mensagemFiltrada.Propriedades[Constantes.OIDCRONOGRAMA].ToString(),
                            string.Format("O Oid do Cronograma atual deveria ser {0}", oidCronograma));
        }
        public void RnProcessarEventosFinalizarEdicaoTarefa()
        {
            int contador = 0;
            WexMultiAccessClientMock cliente = new WexMultiAccessClientMock()
            {
                TcpAdapterStubAtivo = true
            };
            TcpAdapterPool pool = new TcpAdapterPool();

            #region Preenchendo informações do cliente
            cliente.EnderecoIp    = ipServidor;
            cliente.OidCronograma = "C1";
            cliente.Porta         = porta;
            cliente.Login         = "******";
            cliente.Conectar();
            pool.AceitarConexao(cliente);
            cliente.AoSerFinalizadaEdicaoTarefaPorOutroUsuario += (mensagem) => { contador++; };
            cliente.AoServidorDesconectar += (mensagemDto) => { };
            #endregion

            //Criando a mensagem de fim de edição de uma tarefa por outro colaborador
            MensagemDto mensagemFimDeEdicao = Mensagem.RnCriarMensagemFinalizarEdicaoTarefa("T1", "Marcos", "C1");
            string      mensagemJson        = JsonConvert.SerializeObject(mensagemFimDeEdicao);
            mensagemJson = TcpUtil.AdicionarStringProtecaoDeIntegridade(mensagemJson);

            pool.EnviarMensagemPara(cliente, mensagemJson);

            ControleDeEsperaUtil.AguardarAte(() => { return(contador == 1); });
            Assert.AreEqual(1, contador, "Deveria ter sido disparado o evento AoEdicaoTarefaSerRecusada");
            cliente.RnDesconectar();
        }
Пример #5
0
        /// <summary>
        /// Simulação do envio removendo o usuário dono da mensagem da propria mensagem utilizado no teste EfetuarCopiaDaMensagemDtoTest
        /// </summary>
        /// <param name="mensagem">Cópia de mensagem original</param>
        /// <param name="login">Distinatário receptor da mensagem</param>
        /// <param name="mensagens"> Dicionário de mensagens para armazenar o a mensagem alterada para comparação posterior no teste unitário</param>
        public static void SimularModificacaoColecaoDaMensagem(MensagemDto mensagem, string login, Dictionary <string, MensagemDto> mensagens)
        {
            //removendo o próprio usuário da mensagem
            if (mensagem.Propriedades.ContainsKey(login))
            {
                mensagem.Propriedades.Remove(login);
            }
            string msg;

            //caso contenha mais de uma propriedade ou seja mais do que a propriedade "cronogramaOid" é reportado sobre o envio da mensagem
            if (mensagem.Propriedades.Count > 1)
            {
                msg = String.Format("Mensagem  do tipo{0} enviada para {1} Contendo:\n", mensagem.Tipo, login);
                foreach (DictionaryEntry item in mensagem.Propriedades)
                {
                    msg += String.Format("\"{0}\": \"{1}\"\n", item.Key, item.Value);
                }
            }
            else
            {
                msg = "Não foi enviada mensagem para" + login;
            }
            Debug.WriteLine(msg);
            //adicao da mensagem modificada para o devido usuário no dicionário de mensagens modificadas para utilização no teste unitário
            mensagens.Add(login, mensagem);
        }
        public void RnComunicarInicioExclusaoTarefaTest()
        {
            const string ipServidor = "127.0.0.1";
            const int    porta      = 8086;
            TcpListener  servidor   = new TcpListener(IPAddress.Parse(ipServidor), porta);

            servidor.Start();
            WexMultiAccessClientMock cliente = new WexMultiAccessClientMock()
            {
                EnderecoIp    = ipServidor,
                OidCronograma = "C1",
                Porta         = porta,
                Login         = "******"
            };

            cliente.AoServidorDesconectar += (mensagem) => { };
            cliente.Conectar();
            TcpClient tcpEmServidor = servidor.AcceptTcpClient();

            //interceptando  a mensagem de conexão
            TcpUtil.ReceberMensagemTcp(tcpEmServidor);
            cliente.RnComunicarInicioExclusaoTarefa(new string[] { "T1", "T2", "T3" });
            string resposta = TcpUtil.ReceberMensagemTcp(tcpEmServidor);

            resposta = TcpUtil.RemoverStringProtecaoDeIntegridade(resposta);
            MensagemDto mensagemDto = Mensagem.DeserializarMensagemDto(resposta);

            Assert.AreEqual(CsTipoMensagem.ExclusaoTarefaIniciada, mensagemDto.Tipo, "A mensagem recebida veio com tipo diferente do original");
            Assert.IsTrue(mensagemDto.Propriedades.ContainsKey(Constantes.AUTOR_ACAO), "A mensagem deveria conter o usuário que solicitou a exclusão");
            Assert.AreEqual("Joao", (string)mensagemDto.Propriedades[Constantes.AUTOR_ACAO], "O usuário deveria ser o Joao");
            Assert.IsTrue(mensagemDto.Propriedades.ContainsKey(Constantes.TAREFAS), "A mensagem deveria conter tarefas");
            CollectionAssert.AreEquivalent(new string[] { "T1", "T2", "T3" }, (string[])mensagemDto.Propriedades["tarefas"], "A mensagem recebida deveria possuir as mesmas tarefas que foram enviadas");
        }
        public void MultiAccessClientComunicarManagerSobreFimEdicaoTarefa()
        {
            const string ipServidor = "127.0.0.1";
            const int    porta      = 8086;
            TcpListener  servidor   = new TcpListener(IPAddress.Parse(ipServidor), porta);

            servidor.Start();

            WexMultiAccessClientMock cliente = new WexMultiAccessClientMock()
            {
                EnderecoIp = ipServidor, Porta = porta, Login = "******", OidCronograma = "C1"
            };

            cliente.AoServidorDesconectar += (mensagemDto) => { };
            cliente.Conectar();

            TcpClient conexaoTcpEmServidor = servidor.AcceptTcpClient();

            //efetuando a leitura da primeira mensagem do cliente mensagemd e autenticação
            TcpUtil.ReceberMensagemTcp(conexaoTcpEmServidor);
            ///Comunicando o fim da tarefa
            cliente.RnComunicarFimEdicaoTarefa("T2");
            string mensagemJson = TcpUtil.ReceberMensagemTcp(conexaoTcpEmServidor);

            mensagemJson = TcpUtil.RemoverStringProtecaoDeIntegridade(mensagemJson);
            MensagemDto mensagem = Mensagem.DeserializarMensagemDto(mensagemJson);

            Assert.AreEqual(cliente.OidCronograma, (string)mensagem.Propriedades[Constantes.OIDCRONOGRAMA], "Deveria ser o mesmo cronograma em que esta conectado o client");
            Assert.IsTrue(mensagem.Propriedades.ContainsKey(Constantes.AUTOR_ACAO), "Deveria conter o login do colaborador que esta editou a tarefa");
            Assert.AreEqual("T2", (string)mensagem.Propriedades[Constantes.OIDTAREFA], "Deveria ser a mesma tarefa comunicada na mensagem de fim de edição");
            cliente.RnDesconectar();
            servidor.Stop();
        }
Пример #8
0
        /// <summary>
        /// Método responsável por comunicar ao MultiAccessManager de que uma tarefa persistida está sendo editada
        /// </summary>
        /// <param name="oidTarefa">guid da tarefa editada</param>
        /// <param name="autoSalvarEdicao">boolean para informar se deve auto salvar a edição caso receba a resposta de autorização da edição da tarefa</param>
        public void RnComunicarInicioEdicaoTarefa(string oidTarefa, string idRequisicao = "")
        {
            Debug.WriteLine(String.Format("Enviando Requisicao: {0} - OidTarefa: {1} - Autor: {2}", idRequisicao, oidTarefa, Login));
            MensagemDto mensagem = Mensagem.RnCriarMensagemInicioEdicaoTarefa(oidTarefa, Login, OidCronograma, idRequisicao);

            RnEnviarMensagem(mensagem);
        }
Пример #9
0
        public void EfetuarTratamentoExtracaoDicionarioDaMensagemQuandoReceberUmaMensagemDtoComODicionarioSerializadoEmHashtable()
        {
            Dictionary <string, Int16> tarefasImpactadas = new Dictionary <string, short>();

            tarefasImpactadas.Add("T2", 2);
            tarefasImpactadas.Add("T3", 3);
            tarefasImpactadas.Add("T4", 4);
            tarefasImpactadas.Add("T5", 5);
            tarefasImpactadas.Add("T6", 6);
            tarefasImpactadas.Add("T7", 7);
            tarefasImpactadas.Add("T8", 8);
            tarefasImpactadas.Add("T9", 9);

            DateUtil.CurrentDateTime = DateTime.Now;

            MensagemDto mensagem = Mensagem.RnCriarMensagemMovimentacaoTarefa(1, 10, "T1", tarefasImpactadas, "Joao", "C1", DateUtil.CurrentDateTime);

            string mensagemJson = JsonConvert.SerializeObject(mensagem);

            MensagemDto mensagemEsperada = JsonConvert.DeserializeObject <MensagemDto>(mensagemJson);

            mensagemEsperada = Mensagem.EfetuarTratamentoExtracaoDicionarioDaMensagem <string, Int16>(mensagemEsperada, Constantes.TAREFAS_IMPACTADAS);

            CollectionAssert.AreEqual((Dictionary <string, Int16>)mensagem.Propriedades[Constantes.TAREFAS_IMPACTADAS], (Dictionary <string, Int16>)mensagemEsperada.Propriedades[Constantes.TAREFAS_IMPACTADAS]);
            Assert.AreEqual(DateUtil.CurrentDateTime, mensagem.Propriedades[Constantes.DATAHORA_ACAO]);
        }
        public void RnComunicarAlteracaoNomeCronogramaTest()
        {
            //inicializar o Dicionário tarefasGrid
            const string ipServidor = "127.0.0.1";
            const int    porta      = 8093;

            TcpListener servidor = new TcpListener(IPAddress.Parse(ipServidor), porta);

            servidor.Start();

            WexMultiAccessClientMock client = new WexMultiAccessClientMock();

            client.Porta         = porta;
            client.EnderecoIp    = ipServidor;
            client.Login         = "******";
            client.OidCronograma = "C1";
            client.Conectar();
            client.AoServidorDesconectar += (mensagemDto) => { };
            TcpClient conexaoClienteNoServidor = servidor.AcceptTcpClient();

            //efetuar a leitura da autenticacao do client
            TcpUtil.ReceberMensagemTcp(conexaoClienteNoServidor);
            client.RnComunicarAlteracaoDadosCronograma();
            ControleDeEsperaUtil.AguardarAte(() => { return(conexaoClienteNoServidor.Available > 0); });
            string mensagemJson = TcpUtil.ReceberMensagemTcp(conexaoClienteNoServidor);

            mensagemJson = TcpUtil.RemoverStringProtecaoDeIntegridade(mensagemJson);
            MensagemDto mensagemRecebida = JsonConvert.DeserializeObject <MensagemDto>(mensagemJson);

            Assert.AreEqual(client.Login, (string)mensagemRecebida.Propriedades[Constantes.AUTOR_ACAO], "O nome do autor da ação deveria corresponder ao nome esperado");
            Assert.AreEqual(client.OidCronograma, (string)mensagemRecebida.Propriedades[Constantes.OIDCRONOGRAMA], "O oid do cronograma atual deveria corresponder ao oid atual");
        }
        public void RnProcessarEventosDispararEventoAoReceberMensagemDeServidorDesconectando()
        {
            int            contador      = 0;
            string         oidCronograma = Guid.NewGuid().ToString();
            TcpAdapterPool poolTcp       = new TcpAdapterPool();

            //Criando a mensagem de desconexão do servidor
            MensagemDto mensagemTemporaria = Mensagem.RnCriarMensagemServidorDesconectando("Servidor Efetuando Processo de Desligamento!");
            string      mensagemJson       = JsonConvert.SerializeObject(mensagemTemporaria);

            mensagemJson = TcpUtil.AdicionarStringProtecaoDeIntegridade(mensagemJson);
            WexMultiAccessClientMock client = new WexMultiAccessClientMock()
            {
                EnderecoIp          = ipServidor,
                Porta               = porta,
                Login               = "******",
                OidCronograma       = oidCronograma,
                TcpAdapterStubAtivo = true
            };

            client.Conectar();
            poolTcp.AceitarConexao(client);
            client.AoServidorDesconectar += (mensagem) => { contador++; };

            poolTcp.ServerBroadCast(mensagemJson);

            ControleDeEsperaUtil.AguardarAte(() => { return(contador > 0); });
            Assert.AreEqual(1, contador, "O contador adicionado ao Evento AoServidorDesconectar deveria ter sido contado 1 vez");
            client.RnDesconectar();
        }
Пример #12
0
 /// <summary>
 /// Método responsável por acionar evento de AoSerFinalizadaEdicaoTarefaPorOutroUsuario e validar
 /// seu disparo
 /// </summary>
 /// <param name="mensagem">MensagemDto do Tipo FinalizarEdicaoTarefa</param>
 public virtual void AcionarEventoAoSerFinalizadaEdicaoTarefaPorOutroUsuario(MensagemDto mensagem)
 {
     if (AoSerFinalizadaEdicaoTarefaPorOutroUsuario == null)
     {
         throw new EventoNuloException("Deve ser associado um comportamento ao evento AoSerFinalizadaEdicaoTarefaPorOutroUsuario");
     }
     AoSerFinalizadaEdicaoTarefaPorOutroUsuario(mensagem);
 }
Пример #13
0
 /// <summary>
 /// Método responsável por disparar o evento ao ser criada uma nova tarefa
 /// </summary>
 /// <param name="mensagem">mensagem de CriacaoNovaTarefa</param>
 public virtual void AcionarEventoAoNovaTarefaSerCriada(MensagemDto mensagem)
 {
     if (AoSerCriadaNovaTarefa == null)
     {
         throw new EventoNuloException("Deve ser associado um comportamento ao evento AoSerCriadaNovaTarefa");
     }
     AoSerCriadaNovaTarefa(mensagem);
 }
Пример #14
0
 /// <summary>
 /// Método executado quando o servidor é desconectado
 /// </summary>
 /// <param name="mensagem">Mensagem de servidor desconectado</param>
 protected virtual void AcionarEventoAoServidorDesconectar(MensagemDto mensagem)
 {
     if (AoServidorDesconectar == null)
     {
         throw new EventoNuloException("Deve ser associado um comportamento ao evento AoServidorDesconectar");
     }
     AoServidorDesconectar(mensagem);
 }
Пример #15
0
 /// <summary>
 /// Método responsável por disparar o evento quando outro usuário se desconecta
 /// </summary>
 /// <param name="mensagem">MensagemDto do tipo UsuarioDesconectado</param>
 public virtual void AcionarEventoAoUsuarioDesconectar(MensagemDto mensagem)
 {
     if (AoUsuarioDesconectar == null)
     {
         throw new EventoNuloException("Deve ser associado um comportamento ao evento AoUsuarioDesconectar");
     }
     AoUsuarioDesconectar(mensagem);
 }
Пример #16
0
 /// <summary>
 /// Método responsável por disparar o evento de recusa de conexão
 /// </summary>
 /// <param name="mensagem">Motivo de recusa de conexão</param>
 protected virtual void AcionarEventoAoServidorRecusarConexao(MensagemDto mensagem)
 {
     if (AoReceberConexaoRecusada == null)
     {
         throw new EventoNuloException("Deve ser associado um comportamento ao evento AoReceberConexaoRecusada");
     }
     AoReceberConexaoRecusada(mensagem);
 }
Пример #17
0
 /// <summary>
 /// Método responsável por acionar evento de ExecutarExclusaoTarefa e validar
 /// seu disparo
 /// </summary>
 /// <param name="mensagem">MensagemDto do Tipo PermitirExclusaoTarefa</param>
 public virtual void AcionarEventoExecutarExclusaoTarefa(MensagemDto mensagem)
 {
     if (ExecutarExclusaoTarefa == null)
     {
         throw new EventoNuloException("Deve ser associado um comportamento ao evento ExecutarExclusaoTarefa");
     }
     ExecutarExclusaoTarefa(mensagem);
 }
Пример #18
0
 /// <summary>
 /// Método responsável por acionar evento de UsuarioConectadoComSucesso e validar
 /// seu disparo
 /// </summary>
 /// <param name="mensagem">MensagemDto do Tipo ConexaoEfetuadaComSucesso</param>
 public virtual void AcionarEventoDeAutorizacaoEdicaoTarefa(MensagemDto mensagem)
 {
     if (AoSerAutorizadaEdicaoTarefa == null)
     {
         throw new EventoNuloException("Deve ser associado um comportamento ao evento AoSerAutorizadaEdicaoTarefa");
     }
     AoSerAutorizadaEdicaoTarefa(mensagem);
 }
Пример #19
0
 /// <summary>
 /// Método utilizado para sinalizar a permissão de edição do nome do cronograma
 /// </summary>
 /// <param name="objetoMensagem"></param>
 public virtual void AcionarEventoAoPermitirEdicaoNomeCronograma(MensagemDto objetoMensagem)
 {
     if (AoSerPermitidaEdicaoDadosCronograma == null)
     {
         throw new EventoNuloException("Deve ser associado um comportamento ao evento AoSerPermitidaEdicaoNomeCronograma");
     }
     AoSerPermitidaEdicaoDadosCronograma(objetoMensagem);
 }
Пример #20
0
 /// <summary>
 /// Método responsável por acionar evento de UsuarioConectadoComSucesso e validar
 /// seu disparo
 /// </summary>
 /// <param name="mensagem">MensagemDto do Tipo ConexaoEfetuadaComSucesso</param>
 public virtual void AcionarEventoDeConexaoEfetuadaComSucesso(MensagemDto mensagem)
 {
     if (AoSerAutenticadoComSucesso == null)
     {
         throw new EventoNuloException("Deve ser associado um comportamento ao evento AoSerAutenticadoComSucesso");
     }
     AoSerAutenticadoComSucesso(mensagem);
 }
Пример #21
0
 /// <summary>
 /// Método responsável por disparar o evento ao Conectar um Novo Usuário
 /// </summary>
 public virtual void AcionarEventoAoConectarNovoUsuario(MensagemDto mensagem, string login)
 {
     if (AoConectarNovoUsuario == null)
     {
         throw new EventoNuloException("Deve ser associado um comportamento ao evento AoConectarNovoUsuario");
     }
     AoConectarNovoUsuario(mensagem, login);
 }
 /// <summary>
 /// Responsável por efetuar correção da serialização de um vetor contido em algum indice da hashtable
 /// </summary>
 /// <param name="mensagem">MensagemDto que possua uma Hashtable com um vetor armazenado</param>
 /// /// <param name="indice">Indice da Hashtable que possui um vetor armazenado</param>
 /// <returns>MensagemDto com serialização Corrigida</returns>
 private static MensagemDto EfetuarTratamentoExtracaoVetorDaMensagem(MensagemDto mensagem, string indice)
 {
     if (mensagem.Propriedades.ContainsKey(indice) && mensagem.Propriedades[indice] != null)
     {
         mensagem.Propriedades[indice] = JsonConvert.DeserializeObject <string[]>(mensagem.Propriedades[indice].ToString());
     }
     return(mensagem);
 }
 public static void CorrigirDeserializacaoPropriedade <TResult>(MensagemDto mensagem, string nomePropriedade)
 {
     if (!mensagem.Propriedades.ContainsKey(nomePropriedade) || mensagem.Propriedades[nomePropriedade] == null)
     {
         return;
     }
     mensagem.Propriedades[nomePropriedade] = JsonConvert.DeserializeObject <TResult>(mensagem.Propriedades[nomePropriedade].ToString());
 }
 /// <summary>
 /// Responsável por criar uma MensagemDto de recusa de Conexão com o servidor
 /// </summary>
 /// <param name="motivo">Motivo da falha na conexão</param>
 /// <returns>Uma MensagemDto de Recusa de Conexão</returns>
 public static MensagemDto RnCriarMensagemConexaoRecusada(string motivo)
 {
     objetoMensagem = new MensagemDto()
     {
         Tipo = CsTipoMensagem.ConexaoRecusadaServidor
     };
     objetoMensagem.Propriedades.Add(Constantes.MOTIVO, motivo);
     return(objetoMensagem);
 }
 /// <summary>
 /// Responsável por criar uma MensagemDto de aviso de que o servidor está desconectando
 /// </summary>
 /// <returns>MensagemDto do Tipo ServidorDesconectado</returns>
 public static MensagemDto RnCriarMensagemServidorDesconectando(string motivo)
 {
     objetoMensagem = new MensagemDto()
     {
         Tipo = CsTipoMensagem.ServidorDesconectando
     };
     objetoMensagem.Propriedades.Add(Constantes.MOTIVO, motivo);
     return(objetoMensagem);
 }
 /// <summary>
 /// Método responsável por validar se ainda há autoresAcao nas mensagens de ações resumidas
 /// </summary>
 /// <param name="mensagem"></param>
 /// <returns></returns>
 public static bool AindaContemAutoresAcao(MensagemDto mensagem)
 {
     if (mensagem.Propriedades.ContainsKey(Constantes.AUTORES_ACAO) && mensagem.Propriedades[Constantes.AUTORES_ACAO] != null)
     {
         Dictionary <string, string> autoresAcao = (Dictionary <string, string>)mensagem.Propriedades[Constantes.AUTORES_ACAO];
         return(autoresAcao.Count > 0);
     }
     return(false);
 }
Пример #27
0
 /// <summary>
 /// Método de Auxilio em testes unitários sobrescrevendo o comportarmento atual
 /// acrescentando a interceptação da MensagemDto Atual.
 /// </summary>
 /// <param name="mensagem">MensagemDto do Tipo Permitir</param>
 public override void RnResponderSolicitacaoExclusaoTarefa(MensagemDto mensagem)
 {
     lock (ListaTodasMensagensProcessadas)
     {
         ListaTodasMensagensProcessadas.Add(mensagem);
     }
     ContadorMensagens[(int)mensagem.Tipo]++;
     base.RnResponderSolicitacaoExclusaoTarefa(mensagem);
 }
Пример #28
0
        /// <summary>
        /// Método responsável por acionar evento de MovimentacaoPosicaoTarefa e validar
        /// seu disparo
        /// </summary>
        /// <param name="mensagem">MensagemDto do Tipo MovimentacaoPosicaoTarefa</param>
        public virtual void AcionarEventoMovimentacaoPosicaoTarefa(MensagemDto mensagem)
        {
            if (AoOcorrerMovimentacaoPosicaoTarefa == null)
            {
                throw new EventoNuloException("Deve ser associado um comportamento ao evento AoOcorrerMovimentacaoPosicaoTarefa");
            }

            AoOcorrerMovimentacaoPosicaoTarefa(mensagem);
        }
Пример #29
0
        /// <summary>
        /// Método responsável por acionar evento de MovimentacaoPosicaoTarefa e validar
        /// seu disparo
        /// </summary>
        /// <param name="mensagem">MensagemDto do Tipo MovimentacaoPosicaoTarefa</param>
        public virtual void AcionarEventoAoSerNotificadoModificacaoDadosCronograma(MensagemDto mensagem)
        {
            if (AoSerNotificadoAlteracaoDadosCronograma == null)
            {
                throw new EventoNuloException("Deve ser associado um comportamento ao evento AoSerNotificadoAlteracaoNomeCronograma");
            }

            AoSerNotificadoAlteracaoDadosCronograma(mensagem);
        }
        public void RnComunicarCriacaoNovaTarefaQuandoEnviarMensagemNovaTarefaTest()
        {
            int                      contador = 0;
            TcpAdapterPool           poolTcp  = new TcpAdapterPool();
            WexMultiAccessClientMock cliente  = new WexMultiAccessClientMock()
            {
                EnderecoIp          = ipServidor,
                OidCronograma       = "C1",
                Porta               = porta,
                Login               = "******",
                TcpAdapterStubAtivo = true
            };

            WexMultiAccessClientMock cliente2 = new WexMultiAccessClientMock()
            {
                EnderecoIp          = ipServidor,
                OidCronograma       = "C1",
                Porta               = porta,
                Login               = "******",
                TcpAdapterStubAtivo = true
            };

            cliente.Conectar();
            poolTcp.AceitarConexao(cliente);

            cliente2.Conectar();
            poolTcp.AceitarConexao(cliente2);

            cliente.AoServidorDesconectar  += (mensagemDto) => { };
            cliente2.AoServidorDesconectar += (mensagemDto) => { };
            Dictionary <string, Int16> tarefasImpactadas = new Dictionary <string, short>();

            tarefasImpactadas.Add("T2", 3);
            tarefasImpactadas.Add("T3", 4);
            tarefasImpactadas.Add("T4", 5);
            tarefasImpactadas.Add("T5", 6);
            tarefasImpactadas.Add("T6", 7);
            tarefasImpactadas.Add("T7", 8);



            DateUtil.CurrentDateTime = DateTime.Now;
            cliente.RnComunicarNovaTarefaCriada("T1", "C1", null, DateUtil.CurrentDateTime);
            int codigoTipoMensagem = (int)CsTipoMensagem.NovaTarefaCriada;

            ControleDeEsperaUtil.AguardarAte(() => { return(cliente2.contagemTiposMensagemDtoRecebidas.ContainsKey(codigoTipoMensagem) && cliente2.contagemTiposMensagemDtoRecebidas[codigoTipoMensagem] > 0); });

            MensagemDto mensagemRecebida = cliente2.MensagensRecebidas.FirstOrDefault(o => o.Tipo.Equals(CsTipoMensagem.NovaTarefaCriada));

            MensagemDto objetoMensagemEsperado = Mensagem.RnCriarMensagemNovaTarefaCriada("T1", cliente.Login, "C1", null, DateUtil.CurrentDateTime);

            Assert.AreEqual(objetoMensagemEsperado.Propriedades[OIDTAREFA], mensagemRecebida.Propriedades[OIDTAREFA]);
            Assert.AreEqual(objetoMensagemEsperado.Propriedades[LOGIN], mensagemRecebida.Propriedades[LOGIN]);
            Assert.AreEqual(objetoMensagemEsperado.Propriedades[OIDCRONOGRAMA], mensagemRecebida.Propriedades[OIDCRONOGRAMA]);
            Assert.AreEqual(objetoMensagemEsperado.Propriedades[DATAHORA_ACAO], mensagemRecebida.Propriedades[DATAHORA_ACAO]);
        }