public DTOTrilhaObjetivos ConsultarSolucoesPorObjetivo(string token, string chaveExterna)
        {
            if (autenticacao == null || !(segurancaAutenticacao.AutenticaFornecedor(autenticacao)))
            {
                throw new Exception("Usuário não autenticado pelo sistema.");
            }
            try
            {
                var manterUsuarioTrilha = new ManterUsuarioTrilha();

                var usuarioTrilha = manterUsuarioTrilha.ObterUsuarioPorToken(token);
                if (usuarioTrilha == null)
                {
                    throw new Exception("Usuário não autenticado pelo sistema.");
                }

                var objetivoTrilhaServices = new ObjetivosTrilhaServices();
                var result = objetivoTrilhaServices.ConsultarObjetivosPorChaveExterna(usuarioTrilha, chaveExterna);

                return(result);
            }
            catch (Exception ex)
            {
                //TODO: Realizar Tratamento de erro para o portal
                return(new DTOTrilhaObjetivos
                {
                    Status = false,
                    Msg = ex.Message
                });
            }
        }
Example #2
0
        public void CancelarMatriculaTrilha(int idUsuariotrilha, AuthenticationRequest autenticacao)
        {
            var manterUsuarioTrilha = new ManterUsuarioTrilha();

            var usuarioTrilha = manterUsuarioTrilha.ObterPorId(idUsuariotrilha);

            // Caso esteja inscrito ou não aprovado na prova pode ser cancelada a sua matrícula
            if (usuarioTrilha != null &&
                (usuarioTrilha.StatusMatricula == enumStatusMatricula.Inscrito ||
                 usuarioTrilha.StatusMatricula == enumStatusMatricula.Reprovado))
            {
                DateTime limiteCancelamentoUsuario = usuarioTrilha.TrilhaNivel.LimiteCancelamento > 0
                                   ? usuarioTrilha.DataInicio.AddDays(usuarioTrilha.TrilhaNivel.LimiteCancelamento)
                                   : usuarioTrilha.DataInicio.AddDays(usuarioTrilha.TrilhaNivel.QuantidadeDiasPrazo);

                if (DateTime.Now > limiteCancelamentoUsuario)
                {
                    //Passou do Limite para cancelamento
                    throw new AcademicoException("O prazo de cancelamento expirou");
                }

                // Atribuindo status a matrícula do usuário
                usuarioTrilha.DataFim             = DateTime.Now;
                usuarioTrilha.DataAlteracaoStatus = DateTime.Now;
                usuarioTrilha.StatusMatricula     = enumStatusMatricula.CanceladoAluno;
                manterUsuarioTrilha.Salvar(usuarioTrilha);
            }
            else
            {
                throw new AcademicoException("Não foi encontrada nenhuma matrícula com cancelamento permitido");
            }
        }
        private DTOMensagemGuia VerificarPrimeiraConclusaoMissao(UsuarioTrilha matricula, TrilhaNivel nivel)
        {
            // Refresh básico dos objetos. Foi mal, mas estamos com pressa.
            matricula = new ManterUsuarioTrilha().ObterPorId(matricula.ID);

            nivel = new ManterTrilhaNivel().ObterTrilhaNivelPorID(nivel.ID);

            var trilha = new ManterTrilha().ObterTrilhaPorId(matricula.TrilhaNivel.Trilha.ID);

            var momento = enumMomento.PrimeiraConclusaoMissao;

            if (matricula.ListaVisualizacoesMensagemGuia.All(x => x.MensagemGuia.ID != momento))
            {
                var primeiraConclusao =
                    nivel.ObterMissoes()
                    .FirstOrDefault(
                        m =>
                        m.UsuarioConcluiu(matricula)
                        );

                if (primeiraConclusao == null)
                {
                    return(null);
                }

                var mensagem = new ManterMensagemGuia().ObterPorId(momento);

                var visualizacao = RegistrarVisualizacao(matricula, mensagem, missao: primeiraConclusao);

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

            return(null);
        }
Example #4
0
        public object informarParticipacaoConheciGame(DTOParticipacaoConheciGame dtoParicipacao)
        {
            var manterItemTrilha = new ManterItemTrilha();
            var usuarioTrilha    = new ManterUsuarioTrilha().ObterPorId(dtoParicipacao.ID_UsuarioTrilha);
            var itemTrilha       = manterItemTrilha.ObterItemTrilhaPorID(dtoParicipacao.ID_ItemTrilha);

            if (dtoParicipacao.QuantidadeAcertos >= itemTrilha.QuantidadeAcertosTema && itemTrilha.Moedas.HasValue)
            {
                var manterMoedas = new ManterUsuarioTrilhaMoedas();

                if (!manterMoedas.ObterTodosIQueryable()
                    .Select(x => new { ID_ItemTrilha = x.ItemTrilha.ID, ID_UsuaioTrilha = x.UsuarioTrilha.ID })
                    .Any(x => x.ID_ItemTrilha == itemTrilha.ID && x.ID_UsuaioTrilha == usuarioTrilha.ID))
                {
                    manterMoedas.Incluir(usuarioTrilha, itemTrilha, null, 0, dtoParicipacao.QuantidadeAcertos);
                    return(new
                    {
                        Aprovado = true,
                        QuantidadeMoedas = itemTrilha.Moedas
                    });
                }
            }

            return(new
            {
                Aprovado = false,
                QuantidadeMoedas = itemTrilha.Moedas
            });
        }
        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);
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request["token"] == null)
            {
                return;
            }

            var jwtToken = Request["token"];

            var payload = JsonWebToken.DecodeToObject(jwtToken, "", false) as IDictionary <string, object>;

            if (payload != null)
            {
                var usuario = new ManterUsuario().ObterUsuarioPorID((int)payload["id"]);

                try
                {
                    if (usuario != null && usuario.TrilhaTokenExpiry > DateTime.Now)
                    {
                        JsonWebToken.Decode(jwtToken, usuario.TrilhaToken);

                        var nivel = new ManterTrilhaNivel().ObterTrilhaNivelPorID((int)payload["nid"]);

                        if (!nivel.UsuarioPossuiMatricula((int)payload["id"]))
                        {
                            return;
                        }

                        var matricula = new ManterUsuarioTrilha().ObterPorUsuarioNivel(usuario.ID, nivel.ID);

                        if (matricula == null)
                        {
                            return;
                        }

                        MatriculaSessao = matricula;

                        new ManterUsuario().AdicionarTempoTokenTrilha(usuario);

                        ltrNomeNivel.Text = matricula.TrilhaNivel.Nome;

                        rptLojas.DataSource =
                            matricula.TrilhaNivel.ListaPontoSebrae
                            .Where(
                                x =>
                                x.ListaMissoes.SelectMany(m => m.ListaItemTrilha).Any(
                                    it =>
                                    it.Usuario == null &&
                                    it.ObterStatusParticipacoesItemTrilha(matricula) ==
                                    enumStatusParticipacaoItemTrilha.Aprovado));

                        rptLojas.DataBind();
                    }
                }
                catch
                {
                    throw;
                }
            }
        }
        private DTOMensagemGuia VerificarConclusaoMetadeSolucoesLoja(UsuarioTrilha matricula, PontoSebrae pontoSebrae)
        {
            try
            {
                var trilha = new ManterTrilha().ObterTrilhaPorId(matricula.TrilhaNivel.Trilha.ID);

                // Refresh básico da loja. Foi mal, mas estamos com pressa.
                pontoSebrae = new ManterPontoSebrae().ObterPorId(pontoSebrae.ID);

                var momento = enumMomento.ConcluirMetadeSolucoesLoja;

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

                var solucoesSebrae = pontoSebrae.ObterItensTrilha();

                if (!new ManterUsuarioTrilhaMensagemGuia().ObterTodos()
                    .Any(
                        x =>
                        x.UsuarioTrilha.ID == matricula.ID &&
                        x.ItemTrilha.Missao.PontoSebrae.ID == pontoSebrae.ID && x.MensagemGuia.ID == momento))
                {
                    var concluidos =
                        solucoesSebrae
                        .Count(
                            x =>
                            x.Usuario == null && x.Missao.PontoSebrae.TrilhaNivel.ID == matricula.TrilhaNivel.ID && x.PodeExibir() &&
                            x.ObterStatusParticipacoesItemTrilha(matricula) == enumStatusParticipacaoItemTrilha.Aprovado && x.Ativo.Value);

                    if (concluidos > 0)
                    {
                        var mensagem = new ManterMensagemGuia().ObterPorId(momento);

                        var ids = solucoesSebrae.Select(x => new { x.ID }).Select(x => x.ID).ToList();

                        var solucaoSebraeMetade =
                            solucoesSebrae
                            .FirstOrDefault(x => ids.IndexOf(x.ID) >= concluidos / 2);

                        var visualizacao = RegistrarVisualizacao(matricula, mensagem, null, solucaoSebraeMetade);

                        return(new DTOMensagemGuia(visualizacao.ID,
                                                   mensagem.ObterTexto(trilha, matricula, solucaoSebrae: solucaoSebraeMetade, pontoSebrae: pontoSebrae)));
                    }
                }

                return(null);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Example #8
0
        //Enviar email informando que está liberado uma nova prova final
        public void EnviarEmailNovaProva()
        {
            var mail           = new ManterEmail();
            var confSistema    = new ManterConfiguracaoSistema().ObterConfiguracaoSistemaPorID((int)enumConfiguracaoSistema.EnderecoPortal30);
            var listaNovaProva = new ManterUsuarioTrilha().ObterTodosUsuarioTrilha()
                                 .Where(x => x.DataLimite != null && x.DataLiberacaoNovaProva != null && x.DataLiberacaoNovaProva.Value.Date == DateTime.Now.Date && x.Usuario.Email != null);

            foreach (var prova in listaNovaProva)
            {
                var mensagem = ObterMensagem(prova);
                var assunto  = "Nova data da prova final " + prova.TrilhaNivel.Trilha.Nome + " - " + prova.TrilhaNivel.Nome;
                mail.EnviarEmail(prova.Usuario.Email, assunto, mensagem, throwException: false);
            }
        }
 public DTOTrilhaObjetivos ConsultarObjetivosTrilha(string token)
 {
     if (autenticacao == null || !(segurancaAutenticacao.AutenticaFornecedor(autenticacao)))
     {
         throw new Exception("Usuário não autenticado pelo sistema.");
     }
     try
     {
         var manterUsuarioTrilha = new ManterUsuarioTrilha();
         var usuarioTrilha       = manterUsuarioTrilha.ObterUsuarioPorToken(token);
         if (usuarioTrilha == null)
         {
             throw new Exception("Usuário não autenticado pelo sistema.");
         }
         var objetivoTrilhaServices = new ObjetivosTrilhaServices();
         var result = objetivoTrilhaServices.ConsultarObjetivosTrilha(usuarioTrilha, usuarioTrilha.TrilhaNivel.ID);
         if (result == null)
         {
             result = new DTOTrilhaObjetivos
             {
                 Status = false,
                 Msg    = "Usuário não cadastrado no nível da trilha."
             };
         }
         else
         {
             result.Usuario = new DTOUsuarioObjetivo
             {
                 Nome   = usuarioTrilha.Usuario.Nome,
                 Cpf    = usuarioTrilha.Usuario.CPF,
                 NomeUF = usuarioTrilha.Usuario.UF.Nome,
                 UF     = usuarioTrilha.Usuario.UF.Sigla
             };
             result.Status = true;
         }
         return(result);
     }
     catch (Exception ex)
     {
         //TODO: Realizar Tratamento de erro para o portal
         return(new DTOTrilhaObjetivos
         {
             Status = false,
             Msg = ex.Message
         });
     }
 }
Example #10
0
        public object InformarAvaliacao(int idItemTrilha, string resenha, int avaliacao, UsuarioTrilha matricula)
        {
            var manter           = new ManterItemTrilhaAvaliacao();
            var manterItemTrilha = new ManterItemTrilha();

            var usuario    = new ManterUsuarioTrilha().ObterPorId(matricula.ID);
            var itemTrilha = manterItemTrilha.ObterItemTrilhaPorID(idItemTrilha);

            var avaliacaoSolucaoSebrae = new ItemTrilhaAvaliacao(resenha, avaliacao, usuario, itemTrilha);

            manter.Salvar(avaliacaoSolucaoSebrae);

            return(new
            {
                ItemTrilha = itemTrilha.ID,
                TotalAvaliacoes = itemTrilha.Avaliacoes.Count,
                MediaAvaliacoes = itemTrilha.ObterMediaAvaliacoes(),
                usuarioAvaliou = itemTrilha.ChecarAvaliacao(matricula)
            });
        }
        private List <DTOMensagemGuia> VerificarDemaisConclusoesSolucaoSebrae(UsuarioTrilha matricula)
        {
            var retorno = new List <DTOMensagemGuia>();

            if (matricula != null && matricula.ID != 0)
            {
                var trilha = new ManterTrilha().ObterTrilhaPorId(matricula.TrilhaNivel.Trilha.ID);

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

                var momento = enumMomento.DemaisConclusoesSolucaoSebrae;

                var visualizacoes =
                    matricula.ListaVisualizacoesMensagemGuia.Where(
                        x => x.MensagemGuia.ID == momento && x.Visualizacao == null && x.ItemTrilha != null).AsQueryable();

                // Contar a partir da segunda aprovação.
                if (matricula.ListaItemTrilhaParticipacao.Count(x => x.Autorizado == true) > 1 && visualizacoes.Any())
                {
                    foreach (var visualizacao in visualizacoes)
                    {
                        var mensagem = new ManterMensagemGuia().ObterPorId(momento);

                        // Salvar visualização dessa mensagem.
                        visualizacao.Visualizacao = DateTime.Now;
                        new ManterUsuarioTrilhaMensagemGuia().Salvar(visualizacao);

                        // Refresh básico da Solução Sebrae. Foi mal, mas estamos com pressa.
                        var solucaoSebrae = new ManterItemTrilha().ObterItemTrilhaPorID(visualizacao.ItemTrilha.ID);

                        retorno.Add(new DTOMensagemGuia(visualizacao.ID,
                                                        mensagem.ObterTexto(trilha, matricula, solucaoSebrae: solucaoSebrae)));
                    }
                }
            }

            return(retorno);
        }
        private List <DTOMensagemGuia> VerificarDemaisConclusoesMissao(UsuarioTrilha matricula, TrilhaNivel nivel)
        {
            var retorno = new List <DTOMensagemGuia>();

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

            var trilha = new ManterTrilha().ObterTrilhaPorId(matricula.TrilhaNivel.Trilha.ID);

            var idsMissoesConcluidasVisualizadas =
                matricula.ListaVisualizacoesMensagemGuia.Where(x => x.Missao != null).Select(x => x.Missao.ID).ToList();

            var missoes = nivel.ObterMissoes();

            // Obter missões concluídas que o usuário ainda não recebeu a mensagem.
            var missoesConcluidas =
                missoes.Where(
                    x =>
                    !idsMissoesConcluidasVisualizadas.Contains(x.ID))
                .ToList()
                .Where(x => x.UsuarioConcluiu(matricula));

            foreach (var missao in missoesConcluidas)
            {
                var mensagem = new ManterMensagemGuia().ObterPorId(enumMomento.DemaisConclusoesMissao);

                var visualizacao = RegistrarVisualizacao(matricula, mensagem, missao: missao);

                // Salvar visualização dessa mensagem.
                new ManterUsuarioTrilhaMensagemGuia().Salvar(visualizacao);

                retorno.Add(new DTOMensagemGuia(visualizacao.ID, mensagem.ObterTexto(trilha, matricula, missao: missao)));
            }

            return(retorno);
        }
        private DTOMensagemGuia VerificarEvolucaoPin(UsuarioTrilha matricula)
        {
            try
            {
                var trilha = new ManterTrilha().ObterTrilhaPorId(matricula.TrilhaNivel.Trilha.ID);

                var manterMatricula = new ManterUsuarioTrilha();
                var momento         = enumMomento.EvoluirPin;

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

                var moedasOuro  = new ManterUsuarioTrilhaMoedas().Obter(matricula, enumTipoMoeda.Ouro);
                var moedasNivel = new ManterTrilhaNivel().ObterTotalMoedasSolucoesSebrae(matricula.TrilhaNivel.ID);

                var tipoTrofeu = matricula.ObterTipoTrofeu(moedasOuro, moedasNivel);

                if (tipoTrofeu > matricula.TipoTrofeu && tipoTrofeu != enumTipoTrofeu.Bronze)
                {
                    matricula.TipoTrofeu = tipoTrofeu;
                    manterMatricula.Salvar(matricula);

                    var mensagem = new ManterMensagemGuia().ObterPorId(momento);

                    var visualizacao = RegistrarVisualizacao(matricula, mensagem);

                    return(new DTOMensagemGuia(visualizacao.ID,
                                               mensagem.ObterTexto(trilha, matricula, corPin: tipoTrofeu.ToString())));
                }

                return(null);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Example #14
0
        public DTOTrilhaObjetivos ConsultarObjetivosTrilha(UsuarioTrilha usuarioTrilha, int idTrilhaNivel)
        {
            var manterUsuariotrilha = new ManterUsuarioTrilha();

            var trilhaNivel = (new ManterTrilhaNivel()).ObterTrilhaNivelPorID(idTrilhaNivel);

            if (trilhaNivel == null)
            {
                return(null);
            }

            var lista = manterUsuariotrilha.ObterObjetivostrilha(usuarioTrilha.Usuario.ID, idTrilhaNivel);

            var manterItemTrilhaPart = new ManterItemTrilhaParticipacao();

            foreach (var objetivo in lista)
            {
                objetivo.StatusObjetivo       = manterItemTrilhaPart.UsuarioAprovadoObjetivo(usuarioTrilha, objetivo.IdObjetivo);
                objetivo.SolucoesObrigatorias = manterItemTrilhaPart.obtemSolucoesJogo(usuarioTrilha, objetivo.IdObjetivo);
            }

            var item = lista.FirstOrDefault();

            if (item == null)
            {
                return(null);
            }

            return(new DTOTrilhaObjetivos {
                Objetivos = lista.ToList(),
                IdTrilha = trilhaNivel.Trilha.ID,
                IdTrilhaNivel = trilhaNivel.ID,
                NomeTrilha = trilhaNivel.Trilha.Nome,
                NomeTrilhaNivel = trilhaNivel.Nome
            });
        }
        private DTOMensagemGuia VerificarPrimeiraConclusaoSolucaoSebrae(UsuarioTrilha matricula)
        {
            if (matricula != null && matricula.ID != 0)
            {
                // Refresh básico da matrícula. Foi mal, mas estamos com pressa.
                matricula = new ManterUsuarioTrilha().ObterPorId(matricula.ID);

                var trilha = new ManterTrilha().ObterTrilhaPorId(matricula.TrilhaNivel.Trilha.ID);

                var momento = enumMomento.PrimeiraConclusaoSolucaoSebrae;

                if (matricula.ListaVisualizacoesMensagemGuia.All(x => x.MensagemGuia.ID != momento))
                {
                    var primeiraConclusao =
                        matricula.ListaItemTrilhaParticipacao.OrderBy(x => x.DataEnvio)
                        .FirstOrDefault(x => x.Autorizado == true);

                    if (primeiraConclusao == null)
                    {
                        return(null);
                    }

                    var mensagem = new ManterMensagemGuia().ObterPorId(momento);

                    var visualizacao = RegistrarVisualizacao(matricula, mensagem);

                    // Refresh básico da Solução Sebrae. Foi mal, mas estamos com pressa.
                    var solucaoSebrae = new ManterItemTrilha().ObterItemTrilhaPorID(primeiraConclusao.ItemTrilha.ID);

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


            return(null);
        }
Example #16
0
        private void MontarPainelSe(int idParticipacao)
        {
            LimparObjetos();

            _ItemTrilhaParticipacao = new BMItemTrilhaParticipacao().ObterPorId(idParticipacao);


            if (_ItemTrilhaParticipacao != null)
            {
                List <ItemTrilhaParticipacao> listaHistorico = new BMItemTrilhaParticipacao().ObterParticipacoesUsuarioTrilha(_ItemTrilhaParticipacao.ItemTrilha.ID, _ItemTrilhaParticipacao.UsuarioTrilha.ID);

                if (listaHistorico != null && listaHistorico.Count > 0)
                {
                    listaHistorico = listaHistorico.Where(x => x.ID != idParticipacao).ToList();
                }

                var itemTrilha = (new BMItemTrilha()).ObterPorID(_ItemTrilhaParticipacao.ItemTrilha.ID);
                var se         = itemTrilha.SolucaoEducacionalAtividade;
                lblOrientacaoParticipacao.Text = string.IsNullOrEmpty(_ItemTrilhaParticipacao.Orientacao) ? (itemTrilha.Local ?? "Sem conteúdo.") : (_ItemTrilhaParticipacao.Orientacao ?? "Sem conteúdo.");
                lblObjetivo.Text                = itemTrilha.Objetivo != null ? itemTrilha.Objetivo.Nome : se == null ? "Sem conteúdo." : se.Objetivo ?? "Sem conteúdo.";
                lblFormaAquisicao.Text          = itemTrilha.FormaAquisicao != null ? itemTrilha.FormaAquisicao.Nome : "Sem conteúdo.";
                lblReferenciaBibliografica.Text = itemTrilha.ReferenciaBibliografica;
                if (!string.IsNullOrEmpty(itemTrilha.LinkConteudo))
                {
                    lblLinkConteudo.Text        = "Clique para acessar.";
                    lblLinkConteudo.NavigateUrl = itemTrilha.LinkConteudo;
                }
                else
                {
                    lblLinkConteudo.Text        = "Sem conteúdo.";
                    lblLinkConteudo.NavigateUrl = "#";
                }
                if (_ItemTrilhaParticipacao.ItemTrilha.FileServer != null && _ItemTrilhaParticipacao.ItemTrilha.FileServer.ID > 0)
                {
                    var file =
                        new ManterFileServer().ObterFileServerPorID(_ItemTrilhaParticipacao.ItemTrilha.FileServer.ID);

                    lblLinkAcessoConteudo.NavigateUrl = lblLinkAcessoConteudo.Text = ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.EnderecoSGUS).Registro + "/ExibirFileServer.ashx?Identificador=" + file.NomeDoArquivoNoServidor;
                }
                else
                {
                    lblLinkAcessoConteudo.Text        = "Sem Anexo";
                    lblLinkAcessoConteudo.NavigateUrl = "#";
                }

                divObjetivoServer.Visible = true;
                divFormaAquisicao.Visible = true;
                divReferenca.Visible      = true;
                divLinkConteudo.Visible   = true;
                divLinkAcesso.Visible     = true;

                var usuaroTrilha = new ManterUsuarioTrilha().ObterPorId(_ItemTrilhaParticipacao.UsuarioTrilha.ID);

                txtUsuarioModal.Text             = usuaroTrilha.Usuario.Nome;
                txtTrilhaModal.Text              = itemTrilha.Missao.PontoSebrae.TrilhaNivel.Trilha.Nome;
                txtNivelModal.Text               = itemTrilha.Missao.PontoSebrae.TrilhaNivel.Nome;
                txtPontoSebraeModal.Text         = itemTrilha.Missao.PontoSebrae.NomeExibicao;
                txtSolucaoEducacionalModal.Text  = itemTrilha.Nome;
                txtParticipacaoModal.Text        = _ItemTrilhaParticipacao.TextoParticipacao;
                txtObservacao.Text               = string.Empty;
                txtAutorizado.Text               = _ItemTrilhaParticipacao.AutorizadoFormatado;
                rblAutorizadoModal.SelectedIndex = -1;

                WebFormHelper.PreencherGrid(listaHistorico.OrderByDescending(x => x.DataAlteracao).ToList(), gvHistoricoParticipacaoModal);
                hplnkCaminhoArquivo.Visible = false;
                if (_ItemTrilhaParticipacao.FileServer != null && _ItemTrilhaParticipacao.FileServer.ID > 0)
                {
                    MontarLinkDownload(_ItemTrilhaParticipacao.FileServer);
                }
            }
        }
Example #17
0
        protected void btnVerificar_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                try
                {
                    var codigo = txtCodigo.Text.Trim();

                    if (!string.IsNullOrWhiteSpace(codigo))
                    {
                        dynamic objetoCertificado = new ExpandoObject();

                        // Caso seja certificado de tutor, fazer as verificações.
                        if (codigo.Length < 32 && codigo.StartsWith("cr"))
                        {
                            var verificarCertificado = new ManterCertificadoTemplate().VerificarCertificadoTutor(codigo);

                            if (verificarCertificado.Valido)
                            {
                                var turmaProfessor =
                                    new ManterTurmaProfessor().ObterTurmaProfessorPorTurma(verificarCertificado.IdTurma)
                                    .FirstOrDefault(x => x.Professor.ID == verificarCertificado.IdProfessor);

                                if (turmaProfessor != null)
                                {
                                    objetoCertificado.Nome = turmaProfessor.Professor.Nome;

                                    if (turmaProfessor.Turma.DataFinal.HasValue)
                                    {
                                        objetoCertificado.DataGeracao = turmaProfessor.Turma.DataFinal.Value.ToString("dd/MM/yyyy");
                                    }

                                    objetoCertificado.Curso = turmaProfessor.Turma.Oferta.SolucaoEducacional.Nome;
                                    objetoCertificado.Tipo  = "Declaração de tutoria";
                                }
                            }
                        }
                        else
                        {
                            var manterMatriculaOferta = new ManterMatriculaOferta();

                            var buscaMatOferta = manterMatriculaOferta.ObterPorCodigoCertificado(codigo);

                            if (buscaMatOferta != null)
                            {
                                objetoCertificado.Nome = buscaMatOferta.Usuario.Nome;

                                if (buscaMatOferta.DataGeracaoCertificado != null)
                                {
                                    objetoCertificado.DataGeracao =
                                        buscaMatOferta.DataGeracaoCertificado.Value.ToString("dd/MM/yyyy");
                                }

                                objetoCertificado.Curso = buscaMatOferta.Oferta.SolucaoEducacional.Nome;
                                objetoCertificado.Tipo  = "Curso Regular";
                            }
                            else
                            {
                                var manterUsuarioTrilha = new ManterUsuarioTrilha();
                                var buscaUsuarioTrilha  = manterUsuarioTrilha.ObterPorCodigoCertificao(codigo);

                                if (buscaUsuarioTrilha != null)
                                {
                                    objetoCertificado.Nome  = buscaUsuarioTrilha.Usuario.Nome;
                                    objetoCertificado.Curso = buscaUsuarioTrilha.TrilhaNivel.Trilha.Nome;
                                    objetoCertificado.Tipo  = "Trilha";

                                    if (buscaUsuarioTrilha.DataGeracaoCertificado != null)
                                    {
                                        objetoCertificado.DataGeracao =
                                            buscaUsuarioTrilha.DataGeracaoCertificado.Value.ToString("dd/MM/yyyy");
                                    }
                                }
                            }
                        }

                        // Fazer output da validação do certificado a partir do objeto anônimo.
                        if (((IDictionary <string, object>)objetoCertificado).ContainsKey("Nome"))
                        {
                            LimparPnlNaoEncontrado();
                            pnlResultadoVerificacao.Visible = true;

                            lblResultado.Text = "O código informado pertence a um certificado válido.";

                            lblNome.Text  = objetoCertificado.Nome;
                            lblCurso.Text = objetoCertificado.Curso;
                            lblTipo.Text  = objetoCertificado.Tipo;

                            if (objetoCertificado.DataGeracao != null)
                            {
                                lblDataGeracao.Text = objetoCertificado.DataGeracao;
                            }
                        }
                        else
                        {
                            LimparPnlResultado();
                            pnlNaoEncontrado.Visible = true;
                            lblNaoEncontrado.Text    = "O código informado não pertence a nenhum certificado válido.";
                        }
                    }
                    else
                    {
                        LimparPnlNaoEncontrado();
                        LimparPnlResultado();
                        WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Informe o código do certificado.");
                    }
                }
                catch (AcademicoException ex)
                {
                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
                }
            }
        }
Example #18
0
        public object ObterDadosMochila(int usuarioId, UserIdentity acessoAtual)
        {
            // Obter os dados da matrícula.
            var usuarioTrilha =
                new ManterUsuarioTrilha().ObterTodosIQueryable()
                .Where(x => x.Usuario.ID == usuarioId && x.TrilhaNivel.ID == acessoAtual.Nivel.ID && x.StatusMatricula != enumStatusMatricula.CanceladoAluno)
                .Select(x => new UsuarioTrilha
            {
                ID          = x.ID,
                TrilhaNivel = new TrilhaNivel
                {
                    ID = x.TrilhaNivel.ID,
                    PorcentagensTrofeus = x.TrilhaNivel.PorcentagensTrofeus
                }
            })
                .FirstOrDefault();

            if (usuarioTrilha == null)
            {
                throw new ResponseException(enumResponseStatusCode.UsuarioNaoMatriculado);
            }

            var liderancasAsync = ObterLiderancasAsync(usuarioTrilha);

            var statusMissoesAsync = ObterStatusMissoesAsync(usuarioTrilha);

            var dadosMochila = new BMMochilaTrilhas().ObterDadosMochila(usuarioId, acessoAtual.Nivel.ID);

            var solucoes = new BMSolucoesTrilhas().ObterSolucoesMochila(usuarioId, usuarioTrilha.ID);

            ObterLinkAcesso(solucoes);

            var imagensAsync = ObterImagensAsync(solucoes.Select(x => x.FormaAquisicaoId).Distinct().ToList());

            statusMissoesAsync.Wait();
            var missoes = statusMissoesAsync.Result;

            // Obter o nível do usuário no jogo. Precisa das moedas de ouro do usuário.
            var nivelNoJogo = usuarioTrilha.ObterNivel(dadosMochila.MoedasOuro, dadosMochila.TotalMoedasNivel);

            imagensAsync.Wait();
            liderancasAsync.Wait();

            var retorno = new
            {
                Nome = Usuario.ObterPrimeirosNomes(dadosMochila.Nome).ToUpper(),
                dadosMochila.MoedasOuro,
                dadosMochila.MoedasPrata,
                dadosMochila.Unidade,
                dadosMochila.Medalhas,
                Nivel = nivelNoJogo > 0 ? nivelNoJogo : 1,
                dadosMochila.Foto,
                SolucoesSebrae    = solucoes.Where(x => x.Origem == enumOrigemItemTrilha.SolucaoSebrae).ToList(),
                SolucoesTrilheiro = solucoes.Where(x => x.Origem == enumOrigemItemTrilha.SolucaoTrilheiro).ToList(),
                Missoes           = missoes,
                Liderancas        = liderancasAsync.Result,
                dadosMochila.Ranking,
                dadosMochila.TutorialLido,
                ExibirExtrato = usuarioId == acessoAtual.Usuario.ID,
                Imagens       = imagensAsync.Result
            };

            return(retorno);
        }
Example #19
0
        public void Initialize(IPipelines pipelines)
        {
            StatelessAuthentication.Enable(pipelines, new StatelessAuthenticationConfiguration(ctx =>
            {
                if (ctx.Request.Method == "OPTIONS")
                {
                    return(null);
                }

                var manterUsuario       = new ManterUsuario();
                var manterUsuarioTrilha = new ManterUsuarioTrilha();
                var manterTrilhaNivel   = new ManterTrilhaNivel();
                var manterFornecedor    = new ManterFornecedor();

                try
                {
                    var jwtToken = ctx.Request.Headers.Authorization;

                    if (string.IsNullOrEmpty(jwtToken))
                    {
                        return(null);
                    }

                    var payload = JsonWebToken.DecodeToObject(jwtToken, "", false) as IDictionary <string, object>;

                    if (payload != null)
                    {
                        var usuario = manterUsuario.ObterTodosIQueryable().Where(x => x.ID == (int)payload["id"])
                                      .Select(x => new Usuario
                        {
                            ID   = x.ID,
                            Nome = x.Nome,
                            CPF  = x.CPF,
                            TrilhaTokenExpiry = x.TrilhaTokenExpiry,
                            TrilhaToken       = x.TrilhaToken,
                            Senha             = x.Senha
                        })
                                      .FirstOrDefault();

                        if (usuario != null && usuario.TrilhaTokenExpiry > DateTime.Now)
                        {
                            JsonWebToken.Decode(jwtToken, usuario.TrilhaToken);

                            TrilhaNivel nivel       = manterTrilhaNivel.ObterTrilhaNivelPorID((int)payload["nid"]);
                            UsuarioTrilha matricula = null;

                            if (payload.ContainsKey("experimenta") && !payload["experimenta"].Equals("experimente"))
                            {
                                if (!nivel.UsuarioPossuiMatricula((int)payload["id"]))
                                {
                                    return(null);
                                }

                                matricula = manterUsuarioTrilha.ObterPorUsuarioNivel(usuario.ID, nivel.ID);

                                if (matricula == null)
                                {
                                    return(null);
                                }
                            }
                            else
                            {
                                matricula = new UsuarioTrilha
                                {
                                    ID              = 0,
                                    TrilhaNivel     = nivel,
                                    StatusMatricula = Dominio.Enumeracao.enumStatusMatricula.Inscrito
                                };
                            }

                            manterUsuario.AdicionarTempoTokenTrilha(usuario);

                            return(new UserIdentity
                            {
                                UserName = usuario.CPF,
                                Usuario = usuario,
                                Matricula = matricula,
                                Nivel = nivel,
                                Payload = payload,
                                JwtToken = jwtToken
                            });
                        }

                        // Se chegou até aqui, verifica se o acesso é de fornecedor.
                        // Trazer os fornecedores apenas com os campos que interessam.
                        var fornecedores = manterFornecedor.ObterTodosIQueryable().Select(x => new Fornecedor
                        {
                            ID   = x.ID,
                            Nome = x.Nome,
                            TextoCriptografia = x.TextoCriptografia
                        }).ToList();

                        // Tentar decodificar o JWT para verificar se o acesso é de fornecedor.
                        foreach (var fornecedor in fornecedores)
                        {
                            try
                            {
                                JsonWebToken.Decode(jwtToken, fornecedor.TextoCriptografia);

                                return(new UserIdentity()
                                {
                                    UserName = fornecedor.Nome,
                                    Fornecedor = fornecedor,
                                    Payload = payload
                                });
                            }
                            catch
                            {
                                // Ignored.
                            }
                        }
                    }

                    return(null);
                }
                catch (Exception ex)
                {
                    return(null);
                }
                finally
                {
                    manterUsuario.Dispose();
                    manterUsuarioTrilha.Dispose();
                    manterTrilhaNivel.Dispose();
                    manterFornecedor.Dispose();;
                }
            }));
        }
        private DTOMensagemGuia VerificarConclusaoTodasSolucoesLoja(UsuarioTrilha matricula, PontoSebrae pontoSebrae)
        {
            try
            {
                var trilha = new ManterTrilha().ObterTrilhaPorId(matricula.TrilhaNivel.Trilha.ID);

                // Refresh básico da loja. Foi mal, mas estamos com pressa.
                pontoSebrae = new ManterPontoSebrae().ObterPorId(pontoSebrae.ID);

                var momento = enumMomento.ConclusoesTodasSolucoesLoja;

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

                if (
                    !new ManterUsuarioTrilhaMensagemGuia().ObterTodos()
                    .Any(
                        x =>
                        x.UsuarioTrilha.ID == matricula.ID &&
                        x.ItemTrilha.Missao.PontoSebrae.ID == pontoSebrae.ID && x.MensagemGuia.ID == momento))
                {
                    var total =
                        pontoSebrae.ObterItensTrilha()
                        .Count(
                            x =>
                            x.Usuario == null && x.Missao.PontoSebrae.TrilhaNivel.ID == matricula.TrilhaNivel.ID &&
                            x.PodeExibir() && x.Ativo.Value);

                    var concluidos =
                        pontoSebrae.ObterItensTrilha()
                        .Count(
                            x =>
                            x.Usuario == null && x.Missao.PontoSebrae.TrilhaNivel.ID == matricula.TrilhaNivel.ID &&
                            x.PodeExibir() &&
                            x.ObterStatusParticipacoesItemTrilha(matricula) == enumStatusParticipacaoItemTrilha.Aprovado && x.Ativo.Value);

                    if (total > 0 && concluidos == total)
                    {
                        var mensagem = new ManterMensagemGuia().ObterPorId(momento);

                        var ultimaSolucaoSebrae =
                            pontoSebrae.ObterItensTrilha()
                            .LastOrDefault(
                                x =>
                                x.Missao.PontoSebrae.ID == pontoSebrae.ID &&
                                x.ListaItemTrilhaParticipacao.Any() &&
                                x.ListaItemTrilhaParticipacao.FirstOrDefault().UsuarioTrilha.ID == matricula.ID);

                        var visualizacao = RegistrarVisualizacao(matricula, mensagem, null, ultimaSolucaoSebrae);

                        return(new DTOMensagemGuia(visualizacao.ID,
                                                   mensagem.ObterTexto(trilha, matricula, solucaoSebrae: ultimaSolucaoSebrae, pontoSebrae: pontoSebrae)));
                    }
                }

                return(null);
            }
            catch
            {
                return(null);
            }
        }