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 }); } }
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); }
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); } }
//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 }); } }
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); } }
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); }
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); } } }
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); } } }
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); }
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); } }