Beispiel #1
0
        /// <summary>
        /// Realiza a validação da mensagem
        /// </summary>
        /// <param name="parametros"></param>
        /// <returns></returns>
        public ValidarMensagemResponse ValidarMensagem(ValidarMensagemRequest parametros)
        {
            // Referencia para a mensagem e para o tipo da mensagem
            object mensagem     = parametros.Mensagem;
            Type   tipoMensagem = mensagem.GetType();

            // Cria um contexto de validação
            ContextoValidacaoInfo contextoValidacao =
                new ContextoValidacaoInfo()
            {
                CodigoSessao = parametros.CodigoSessao,
                Mensagem     = parametros.Mensagem,
                TipoMensagem = tipoMensagem
            };

            // Pega lista de regras associadas a esse tipo

            // Chama os geradores de sequencia de regras para esse tipo
            if (_geradoresPorTipo.ContainsKey(tipoMensagem))
            {
                foreach (IGeradorRegra geradorRegra in _geradoresPorTipo[tipoMensagem])
                {
                    geradorRegra.GerarSequencia(contextoValidacao);
                }
            }

            // Faz a chamada das regras
            contextoValidacao.MensagemValida = true;
            foreach (RegraBase regra in contextoValidacao.RegrasAValidar)
            {
                contextoValidacao.MensagemValida =
                    regra.Validar(contextoValidacao) && contextoValidacao.MensagemValida;
            }

            // Se todas as regras não validaram, desfaz todas as validações
            if (!contextoValidacao.MensagemValida)
            {
                foreach (RegraBase regra in contextoValidacao.RegrasAValidar)
                {
                    regra.Desfazer(contextoValidacao);
                }
            }

            // Retorna
            return
                (new ValidarMensagemResponse()
            {
                ContextoValidacao = contextoValidacao,
                Criticas = contextoValidacao.Criticas
            });
        }
Beispiel #2
0
 /// <summary>
 /// Método para realizar a validação da mensagem.
 /// </summary>
 /// <param name="contexto"></param>
 /// <returns></returns>
 public bool Validar(ContextoValidacaoInfo contexto)
 {
     return(OnValidar(contexto));
 }
Beispiel #3
0
 /// <summary>
 /// Método para desfazer uma validação
 /// </summary>
 /// <param name="contexto"></param>
 public void Desfazer(ContextoValidacaoInfo contexto)
 {
     OnDesfazer(contexto);
 }
Beispiel #4
0
 /// <summary>
 /// Método virtual a ser sobrescrito pelas implementações de regras.
 /// </summary>
 /// <param name="contexto"></param>
 public virtual void OnDesfazer(ContextoValidacaoInfo contexto)
 {
 }
Beispiel #5
0
 /// <summary>
 /// Método virtual a ser sobrescrito pelas implementações das regras.
 /// </summary>
 /// <param name="contexto"></param>
 /// <returns></returns>
 protected virtual bool OnValidar(ContextoValidacaoInfo contexto)
 {
     return(false);
 }