private DTOMensagemGuia VerificarMoedasProvaFinal(UsuarioTrilha matricula)
        {
            try
            {
                var trilha = new ManterTrilha().ObterTrilhaPorId(matricula.TrilhaNivel.Trilha.ID);

                var momento = enumMomento.PossuirMoedasProvaFinal;

                // Refresh básico da matrícula. Foi mal, mas estamos com pressa.
                matricula = new ManterUsuarioTrilha().ObterPorId(matricula.ID);

                var moedas = new ManterUsuarioTrilhaMoedas().Obter(matricula, enumTipoMoeda.Ouro);

                var minimoMoedas = matricula.TrilhaNivel.QuantidadeMoedasProvaFinal;

                var jaVisualizou =
                    new ManterUsuarioTrilhaMensagemGuia().ObterTodos()
                    .Any(x => x.UsuarioTrilha.ID == matricula.ID && x.MensagemGuia.ID == momento);

                if (minimoMoedas > 0 && moedas >= minimoMoedas && !jaVisualizou)
                {
                    var mensagem = new ManterMensagemGuia().ObterPorId(momento);

                    var visualizacao = RegistrarVisualizacao(matricula, mensagem);

                    return(new DTOMensagemGuia(visualizacao.ID, mensagem.ObterTexto(trilha, matricula)));
                }

                return(null);
            }
            catch (Exception)
            {
                return(null);
            }
        }
        public static UsuarioTrilhaMensagemGuia RegistrarVisualizacao(UsuarioTrilha matricula, MensagemGuia mensagem,
                                                                      LogLider logLider = null, ItemTrilha itemTrilha = null, Missao missao = null, bool salvarData = true)
        {
            using (var manterTrilhaMensagemGuia = new ManterUsuarioTrilhaMensagemGuia())
            {
                var usuarioTrilhaMensagemGuia = new UsuarioTrilhaMensagemGuia
                {
                    UsuarioTrilha = matricula,
                    MensagemGuia  = mensagem,
                    Visualizacao  = salvarData ? (DateTime?)DateTime.Now : null,
                    LogLider      = logLider,
                    ItemTrilha    = itemTrilha,
                    Missao        = missao
                };

                return(manterTrilhaMensagemGuia.Salvar(usuarioTrilhaMensagemGuia));
            }
        }