public List <DTOMensagemGuia> ObterMensagensGuiaCambio(UsuarioTrilha matricula)
        {
            var retorno = new List <DTOMensagemGuia>();

            // Primeiro câmbio.
            var mensagemPrimeiroCambio = VerificarPrimeiraTentativaCambio(matricula);

            if (mensagemPrimeiroCambio != null)
            {
                retorno.Add(mensagemPrimeiroCambio);
            }

            // Possuí o mínimo de moedas para prova final
            var mensagensPossuiMoedasProvaFinal = VerificarMoedasProvaFinal(matricula);

            if (mensagensPossuiMoedasProvaFinal != null)
            {
                retorno.Add(mensagensPossuiMoedasProvaFinal);
            }

            var mensagemEvolucaoPin = VerificarEvolucaoPin(matricula);

            if (mensagemEvolucaoPin != null)
            {
                retorno.Add(mensagemEvolucaoPin);
            }

            return(retorno);
        }
        public List <DTOMensagemGuia> ObterMensagensGuiaMapa(UsuarioTrilha matricula)
        {
            var retorno = new List <DTOMensagemGuia>();

            // Primeiro acesso ao mapa
            var mensagemPrimeiroAcesso = VerificarPrimeiroAcesso(matricula, enumMomento.PrimeiroAcessoMapa);

            if (mensagemPrimeiroAcesso != null)
            {
                retorno = mensagemPrimeiroAcesso;
            }

            // Possuí o mínimo de moedas para prova final
            var mensagensPossuiMoedasProvaFinal = VerificarMoedasProvaFinal(matricula);

            if (mensagensPossuiMoedasProvaFinal != null)
            {
                retorno.Add(mensagensPossuiMoedasProvaFinal);
            }

            var mensagemEvolucaoPin = VerificarEvolucaoPin(matricula);

            if (mensagemEvolucaoPin != null)
            {
                retorno.Add(mensagemEvolucaoPin);
            }

            return(retorno);
        }
        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 List <DTOMensagemGuia> ObterMensagensGuiaConclusaoSolucaoSebrae(UsuarioTrilha matricula,
                                                                               TrilhaTopicoTematico loja)
        {
            var retorno = new List <DTOMensagemGuia>();

            // Primeira conclusão.
            var mensagemPrimeiraConclusaoSolucaoSebrae = VerificarPrimeiraConclusaoSolucaoSebrae(matricula);

            if (mensagemPrimeiraConclusaoSolucaoSebrae != null)
            {
                retorno.Add(mensagemPrimeiraConclusaoSolucaoSebrae);
            }

            // Possuí o mínimo de moedas para prova final
            var mensagensPossuiMoedasProvaFinal = VerificarMoedasProvaFinal(matricula);

            if (mensagensPossuiMoedasProvaFinal != null)
            {
                retorno.Add(mensagensPossuiMoedasProvaFinal);
            }

            var mensagemEvolucaoPin = VerificarEvolucaoPin(matricula);

            if (mensagemEvolucaoPin != null)
            {
                retorno.Add(mensagemEvolucaoPin);
            }

            return(retorno);
        }
Exemple #5
0
        /// <summary>
        /// Inclui o histórico e a alteração no saldo das moedas do usuárioTrilha, itemTrilha se for solução sebrae e ou itemTrilhaCurtida se for uma curtida.
        /// </summary>
        /// <param name="usuarioTrilha"></param>
        /// <param name="itemTrilha"></param>
        /// <param name="itemTrilhaCurtida"></param>
        /// <param name="quantidadePrata"></param>
        /// <param name="quantidadeOuro"></param>
        /// <param name="tipoCurtidaAnterior"></param>
        public Dictionary <string, int> Incluir(UsuarioTrilha usuarioTrilha, ItemTrilha itemTrilha = null,
                                                ItemTrilhaCurtida itemTrilhaCurtida = null, int quantidadePrata = 0, int quantidadeOuro = 0,
                                                enumTipoCurtida tipoCurtidaAnterior = enumTipoCurtida.SemAcao)
        {
            VerificarRegrasNegocio(usuarioTrilha, itemTrilha, itemTrilhaCurtida, quantidadePrata, quantidadeOuro);

            var usuarioTrilhaMoedas = new UsuarioTrilhaMoedas()
            {
                TipoCurtida   = itemTrilhaCurtida != null ? itemTrilhaCurtida.TipoCurtida : enumTipoCurtida.SemAcao,
                Curtida       = itemTrilhaCurtida,
                ItemTrilha    = itemTrilha,
                UsuarioTrilha = usuarioTrilha,
                MoedasDePrata = quantidadePrata,
                MoedasDeOuro  = quantidadeOuro,
                DataCriacao   = DateTime.Now,
                Auditoria     = new Auditoria(usuarioTrilha.Usuario.CPF)
            };

            if (itemTrilhaCurtida != null)
            {
                usuarioTrilhaMoedas.MoedasDePrata = CalcularCurtida(itemTrilhaCurtida, tipoCurtidaAnterior);
            }

            if (!this.IsCreditoDuplicado(usuarioTrilhaMoedas))
            {
                _bmUsuarioTrilhaMoedas.Salvar(usuarioTrilhaMoedas);
            }

            return(new Dictionary <string, int>()
            {
                { "Ouro", Obter(usuarioTrilha, enumTipoMoeda.Ouro) },
                { "Prata", Obter(usuarioTrilha, enumTipoMoeda.Prata) }
            });
        }
        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 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);
            }
        }
Exemple #8
0
        private void AplicarRegraParaExibirBotaoCertificado(GridViewRowEventArgs e)
        {
            if (e.Row.RowType.Equals(DataControlRowType.DataRow))
            {
                Button btnCertificado = (Button)e.Row.FindControl("btnCertificado");

                if (btnCertificado != null)
                {
                    UsuarioTrilha usuarioTrilha = (UsuarioTrilha)e.Row.DataItem;

                    if (usuarioTrilha != null && usuarioTrilha.TrilhaNivel != null &&
                        usuarioTrilha.TrilhaNivel.ID > 0)
                    {
                        if (usuarioTrilha.StatusMatricula.Equals(enumStatusMatricula.Aprovado))
                        {
                            //Se existe um certificado template configurado para o nível, exibe o botão
                            if (usuarioTrilha.TrilhaNivel.CertificadoTemplate != null &&
                                usuarioTrilha.TrilhaNivel.CertificadoTemplate.ID > 0)
                            {
                                btnCertificado.Visible = true;
                            }
                        }
                    }
                }
            }
        }
        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            try{
                var manterMatriculaTrilha = new ManterMatriculaTrilha();

                if (Request["Id"] == null)
                {
                    usuarioTrilhaEdicao = this.ucMatrilhaTrilha1.ObterObjetoUsuarioTrilha();
                    manterMatriculaTrilha.IncluirMatriculaTrilha(usuarioTrilhaEdicao);
                }
                else
                {
                    this.ucMatrilhaTrilha1.IdUsuarioTrilhaEdit = int.Parse(Request["Id"].ToString());
                    usuarioTrilhaEdicao = this.ucMatrilhaTrilha1.ObterObjetoUsuarioTrilha(true);
                    manterMatriculaTrilha.AlterarMatriculaTrilha(usuarioTrilhaEdicao);
                }

                Session.Remove("MatriculaTrilhaEdit");

                WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "Dados Gravados com Sucesso !", "ListarMatriculaTrilha.aspx");
            }catch (AcademicoException ex) {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
                return;
            }
        }
Exemple #10
0
        public DTOTrilhaObjetivos ConsultarObjetivosPorChaveExterna(UsuarioTrilha usuarioTrilha, string chaveExterna)
        {
            var result = (new ManterObjetivo()).ObterObjetivoPorFiltro(new Objetivo()
            {
                ChaveExterna = chaveExterna
            })
                         .Select(x => new DTOObjetivosTrilhas()
            {
                IdObjetivo = x.ID, ChaveExterna = x.ChaveExterna, NomeObjetivo = x.Nome
            }).FirstOrDefault <DTOObjetivosTrilhas>();

            var listaObj = new List <DTOObjetivosTrilhas>();

            if (result != null)
            {
                var manterItemTrilhaPart = new ManterItemTrilhaParticipacao();
                result.StatusObjetivo       = manterItemTrilhaPart.UsuarioAprovadoObjetivo(usuarioTrilha, result.IdObjetivo);
                result.SolucoesObrigatorias = manterItemTrilhaPart.obtemSolucoesJogo(usuarioTrilha, result.IdObjetivo);

                listaObj.Add(result);
            }

            return(new DTOTrilhaObjetivos
            {
                Objetivos = listaObj,
                IdTrilha = usuarioTrilha.TrilhaNivel.Trilha.ID,
                IdTrilhaNivel = usuarioTrilha.TrilhaNivel.ID,
                NomeTrilha = usuarioTrilha.TrilhaNivel.Trilha.Nome,
                NomeTrilhaNivel = usuarioTrilha.TrilhaNivel.Nome
            });
        }
Exemple #11
0
        public UsuarioTrilha ObterPorUsuarioTrilhaNivel(UsuarioTrilha matricula, TrilhaNivel nivel)
        {
            var query         = repositorio.session.Query <UsuarioTrilha>();
            var usuarioTrilha = query.FirstOrDefault(x => x.ID == matricula.ID && x.TrilhaNivel.ID == nivel.ID && x.NovasTrilhas == true);

            return(usuarioTrilha);
        }
Exemple #12
0
 private static void AplicarRegraDaDataLimite(UsuarioTrilha pUsuarioTrilha)
 {
     if (pUsuarioTrilha.DataLimite.Equals(DateTime.MinValue))
     {
         pUsuarioTrilha.DataLimite = DateTime.Today.AddDays(pUsuarioTrilha.TrilhaNivel.QuantidadeDiasPrazo);
     }
 }
        private List <DTOMensagemGuia> VerificarPrimeiroAcesso(UsuarioTrilha matricula, enumMomento momento,
                                                               PontoSebrae pontoSebrae = null)
        {
            try
            {
                var mensagens = new List <DTOMensagemGuia>();

                // Refresh básico da matrícula. Foi mal, mas estamos com pressa.
                var trilha = new ManterTrilha().ObterTrilhaPorId(matricula.TrilhaNivel.Trilha.ID);

                if (matricula.ListaVisualizacoesMensagemGuia.All(x => x.MensagemGuia.ID != momento))
                {
                    var mensagem = new ManterMensagemGuia().ObterPorId(momento);

                    var visualizacao = RegistrarVisualizacao(matricula, mensagem);

                    // Caso tenha um tutorial vinculado
                    if (mensagem.Tipo == enumTipoMensagemGuia.Tutorial)
                    {
                        mensagens.Add(new DTOMensagemGuia(visualizacao.ID, ObterTutoriaisMensagemGuia(mensagem.Tutoriais)));
                        return(mensagens);
                    }

                    mensagens.Add(new DTOMensagemGuia(visualizacao.ID, mensagem.ObterTexto(trilha, matricula, pontoSebrae: pontoSebrae)));

                    return(mensagens);
                }

                return(null);
            }
            catch
            {
                return(null);
            }
        }
Exemple #14
0
        public IList <UsuarioTrilha> ObterPorFiltro(UsuarioTrilha pUsuarioTrilha, IEnumerable <int> ufsSelecionados)
        {
            var query = repositorio.session.Query <UsuarioTrilha>();

            if (pUsuarioTrilha.TrilhaNivel != null && pUsuarioTrilha.TrilhaNivel.ID > 0)
            {
                query = query.Where(x => x.TrilhaNivel.ID == pUsuarioTrilha.TrilhaNivel.ID);
            }

            if (pUsuarioTrilha.Usuario != null && pUsuarioTrilha.Usuario.ID > 0)
            {
                query = query.Where(x => x.Usuario.ID == pUsuarioTrilha.Usuario.ID);
            }

            if (pUsuarioTrilha.ID > 0)
            {
                query = query.Where(x => x.ID == pUsuarioTrilha.ID);
            }

            if (pUsuarioTrilha.NovasTrilhas != null)
            {
                query = query.Where(x => x.NovasTrilhas == pUsuarioTrilha.NovasTrilhas);
            }

            query = ufsSelecionados.Any() ? query.Where(x => ufsSelecionados.Contains(x.Uf.ID)) : query;

            /* O Fetch faz o inner join / left outer join para buscar os dados do usuario.
             * O método CriarSessionFactory da classe NHibernateHelper possui a instrução
             * .UseOuterJoin() para indicar ao NHibernate que o left outer join será utilizado
             * nas queries */
            query = query.Fetch(x => x.Usuario);
            query = query.Fetch(x => x.NivelOcupacional);

            return(query.ToList <UsuarioTrilha>());
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                this.ucMatrilhaTrilha1.PreencherCombos();

                //Se Veio da Tela de Pesquisa, trata a edição
                if (Request["Id"] != null)
                {
                    int idItemTrilha = int.Parse(Request["Id"].ToString());
                    usuarioTrilhaEdicao = manterMatriculaTrilha.ObterMatriculaTrilhaPorID(idItemTrilha);
                    PreencherCampos(usuarioTrilhaEdicao);

                    this.ExibirPanelDeProvasRealizadas();

                    //Todo -> Criar tela para visualizar as provas do usuário
                    PreencherGridComProvasRealizadas(usuarioTrilhaEdicao);

                    this.HabilitarComboDeStatus();
                    this.ExibirCheckBoxDeAcessoBloqueado();
                    this.ucMatrilhaTrilha1.TratarStatus(this.usuarioTrilhaEdicao);
                    //this.TratarStatus();
                }
                else
                {
                    this.EsconderPanelDeProvasRealizadas();
                    this.ucMatrilhaTrilha1.TratarInformacoesDaMatricula();
                    ////Cadastro
                    //WebFormHelper.SetarValorNaCombo(((int)enumStatusMatricula.Inscrito).ToString(), ddlStatus, true);
                    //this.DesabilitarComboDeStatus();
                    //this.EsconderCheckBoxDeAcessoBloqueado();
                }
            }
        }
Exemple #16
0
        public dynamic ObterExtrato(UsuarioTrilha usuarioTrilha)
        {
            // Moedas por Solução Sebrae
            var solucoesSebrae = ObterTodos(usuarioTrilha).Where(x => x.ItemTrilha != null).Select(x => new
            {
                Nome   = x.ItemTrilha.Nome,
                Moedas = x.MoedasDeOuro
            }).Take(4).ToList();

            // Cambio de Moedas
            var cambioMoedas = ObterTodos(usuarioTrilha).Where(x => x.Curtida == null && x.ItemTrilha == null && x.MoedasDePrata < 0 && x.MoedasDeOuro > 0).Take(4).ToList().Select(x => new
            {
                QuantidadePrata = x.MoedasDePrata,
                QuantidadeOuro  = x.MoedasDeOuro,
                DataCambio      = x.DataCriacao
            }).ToList();

            // Moedas por Solução Trilheiro (curtidas)
            var solucoesTrilheiro = usuarioTrilha.TrilhaNivel.ListaItemTrilha.Where(x => x.Usuario != null && x.Usuario.ID == usuarioTrilha.Usuario.ID).Select(x => new
            {
                Nome                    = x.Nome,
                Curtidas                = usuarioTrilha.ObterCurtidasPorTipo(x, enumTipoCurtida.Curtiu),
                Descurtidas             = usuarioTrilha.ObterCurtidasPorTipo(x, enumTipoCurtida.Descurtiu),
                ExcluirSolucaoTrilheiro = usuarioTrilha.ObterCurtidasPorTipo(x, enumTipoCurtida.ExcluirSolucaoTrilheiro),
                Moedas                  = usuarioTrilha.ObterSomaMoedasPrata(x)
            }).OrderByDescending(y => y.Curtidas).Take(4).ToList();

            return(new
            {
                SolucoesSebrae = solucoesSebrae,
                SolucoesTrilheiro = solucoesTrilheiro,
                CambioMoedas = cambioMoedas
            });
        }
        private void TratarStatusNaoAprovado(UsuarioTrilha usuarioTrilhaEdicao)
        {
            this.usuarioTrilhaEdicao = usuarioTrilhaEdicao;
            //this.chkLiberarNovaProva.Enabled = false;
            //this.txtDataLiberacaoNovaProva.Enabled = false;

            if (this.StatusNaoAprovadoENovaProvaNaoLiberada)
            {
                //Exibe o check box "Liberar Nova Prova"
                this.chkLiberarNovaProva.Enabled       = true;
                this.txtDataLiberacaoNovaProva.Enabled = true;

                //Se informou a Data de Liberação da Nova Prova
                if (!string.IsNullOrWhiteSpace(txtDataLiberacaoNovaProva.Text))
                {
                    //usuarioTrilhaEdicao.DataLiberacaoNovaProva = CommonHelper.TratarData(this.txtDataLiberacaoNovaProva.Text, "Data Fim");
                    this.txtDataLiberacaoNovaProva.Text    = usuarioTrilhaEdicao.DataLiberacaoNovaProva.Value.ToShortDateString();
                    this.txtDataLiberacaoNovaProva.Enabled = true;
                }
            }
            else if (StatusNaoAprovadoENovaProvaLiberada)
            {
                //Esconde o check box "Liberar Nova Prova"
                this.chkLiberarNovaProva.Enabled       = true;
                this.txtDataLiberacaoNovaProva.Enabled = true;
                this.chkLiberarNovaProva.Checked       = true;
            }
        }
Exemple #18
0
        /// <summary>
        /// Faz as verificações de regra de negócio para inserção e alteração de moedas
        /// </summary>
        /// <param name="itemTrilha"></param>
        /// <param name="itemTrilhaCurtida"></param>
        /// <param name="quantidadePrata"></param>
        /// <param name="quantidadeOuro"></param>
        public void VerificarRegrasNegocio(UsuarioTrilha usuarioTrilha, ItemTrilha itemTrilha = null, ItemTrilhaCurtida itemTrilhaCurtida = null, int quantidadePrata = 0, int quantidadeOuro = 0)
        {
            if (itemTrilha != null && itemTrilhaCurtida != null)
            {
                throw new ResponseException(enumResponseStatusCode.ErroRegraNegocioTrilhas, "Não é possível incluir variações ao mesmo tempo no histórico de moedas.");
            }

            if (quantidadeOuro > 0 && quantidadePrata > 0)
            {
                throw new ResponseException(enumResponseStatusCode.ErroRegraNegocioTrilhas, "Não é possível incluir moedas de prata e ouro ao mesmo tempo, a troca só é válida ao remover prata e adicionar ouro.");
            }

            if (itemTrilha != null && quantidadePrata != 0)
            {
                throw new ResponseException(enumResponseStatusCode.ErroRegraNegocioTrilhas, "Não é possível incluir moedas de prata ao completar uma solução sebrae.");
            }

            if (itemTrilhaCurtida != null && quantidadeOuro != 0)
            {
                throw new ResponseException(enumResponseStatusCode.ErroRegraNegocioTrilhas, "Não é possível incluir moedas de ouro ao curtir uma solução do trilheiro.");
            }

            if (quantidadeOuro < 0)
            {
                throw new ResponseException(enumResponseStatusCode.ErroRegraNegocioTrilhas, "Não é possível retirar moedas de ouro.");
            }

            if (quantidadeOuro > 0 && quantidadePrata < 0 && Obter(usuarioTrilha, enumTipoMoeda.Prata) < 0)
            {
                throw new ResponseException(enumResponseStatusCode.ErroRegraNegocioTrilhas, "Usuário não possuí moedas de prata suficientes para realizar a troca.");
            }
        }
        public UsuarioTrilha AtualizarStatusComRegras(UsuarioTrilha usuarioTrilha)
        {
            UsuarioTrilha usuSessaoAtual = null;

            if (usuarioTrilha.ID != 0)
            {
                usuSessaoAtual = this.ObterPorId(usuarioTrilha.ID);

                if (usuSessaoAtual.Cronometro.TotalSeconds <= 0)
                {
                    if (!usuSessaoAtual.AprovadoProvaFinal)
                    {
                        usuSessaoAtual.StatusMatricula = enumStatusMatricula.Reprovado;
                    }
                    if (!usuSessaoAtual.TeveParticipacao)
                    {
                        usuSessaoAtual.StatusMatricula = enumStatusMatricula.Abandono;
                    }
                }

                this.Salvar(usuSessaoAtual);
            }

            return(usuSessaoAtual);
        }
        private DTOMensagemGuia VerificarHistoricoLider(UsuarioTrilha matricula, PontoSebrae pontoSebrae)
        {
            var manterLogLider = new ManterLogLider();

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

            // Só interessa obter os dois últimos logs.
            var ultimosLogs =
                manterLogLider.ObterPorAlunoPontoSebrae(matricula, pontoSebrae)
                .Where(x => x.PontoSebrae.ID == pontoSebrae.ID)
                .OrderByDescending(x => x.ID)
                .Take(2)
                .ToList();

            // Só interessa se a quantidade de logs for maior que 1. Se houver somente 1 log, não é necessário exibir nenhuma msg.
            if (ultimosLogs.Count() > 1)
            {
                var ultimoLog    = ultimosLogs[0];
                var penultimoLog = ultimosLogs[1];

                // Explicando a lógica complicada abaixo:
                // Se não havia líder no último acesso e agora tem, exibe a msg do primeiro líder.
                // Caso existem líderes nos dois últimos logs, mas sejam líderes diferentes, exibe a msg.
                // Se nenhuma condição for satisfeita, retorna null e escapa da mensagem.
                var momento = penultimoLog.Lider == null && ultimoLog.Lider != null
                    ? enumMomento.PrimeiroLiderLojaUltimoAcesso
                    : (penultimoLog.Lider != null && ultimoLog.Lider != null &&
                       penultimoLog.Lider.ID != ultimoLog.Lider.ID
                        ? (enumMomento?)enumMomento.AlteracaoLiderLojaUltimoAcesso
                        : null);

                // Ragequit.
                if (momento == null)
                {
                    return(null);
                }

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

                // Verificar se a última visualização da mensagem foi para o líder atual.
                // Só faz sentido ser executado caso o momento seja AlteracaoLiderLojaUltimoAcesso
                if (momento.Value == enumMomento.AlteracaoLiderLojaUltimoAcesso &&
                    mensagem.ListaUsuarioTrilhaMensagemGuia.LastOrDefault(
                        x =>
                        x.UsuarioTrilha.ID == matricula.ID &&
                        x.LogLider != null &&
                        x.LogLider.Lider.ID == penultimoLog.Lider.ID) != null)
                {
                    return(null);
                }

                var visualizacao = RegistrarVisualizacao(matricula, mensagem, ultimoLog);

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

            return(null);
        }
        private void GerarRelatorioHistoricoAtividade(int idUsuarioTrilha)
        {
            using (RelatorioHistoricoAtividade relHist = new RelatorioHistoricoAtividade())
            {
                usuarioTrilha = relHist.ObterUsuarioTrilhaPorID(idUsuarioTrilha);
                IList <DTORelatorioHistoricoAtividadeDadosBasicos> relDp = null; // relHist.ConsultarHistoricoAtividadesDadosPessoais(pIdUsuarioTrilha);

                this.listaDTOAlunoDaTrilha = new ManterUsuarioTrilha().ListarRelatorioDoAlunoDaTrilha(usuarioTrilha.ID);

                //Dados Básico do usuário
                relDp = relHist.ObterDTORelatorioHistoricoAtividadeDadosBasicos(this.listaDTOAlunoDaTrilha);

                lstTopicoCount = relHist.ConsultarHistoricoAtividadeTopicoTematico(listaDTOAlunoDaTrilha);

                lstNotaProva   = relHist.ConsultaHistoricoAtividadeNotaProva(usuarioTrilha.ID);
                lstDiagnostico = relHist.ConsultarHistoricoAtividadeDiagnostico(usuarioTrilha.ID);

                ReportViewer rv = new ReportViewer();

                Assembly assembly = Assembly.LoadFrom(binPath + "\\Sebrae.Academico.Reports.dll");
                Stream   stream   = assembly.GetManifestResourceStream("Sebrae.Academico.Reports.HistoricoAtividades.rptHistoricoAtividades.rdlc");
                rv.LocalReport.LoadReportDefinition(stream);

                stream = assembly.GetManifestResourceStream("Sebrae.Academico.Reports.HistoricoAtividades.rptHistoricoAtividadesTopicoTematico.rdlc");
                rv.LocalReport.LoadSubreportDefinition("HistoricoAtividades.rptHistoricoAtividadesTopicoTematico.rdlc", stream);

                rv.LocalReport.DataSources.Clear();
                rv.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", relDp));
                rv.LocalReport.DataSources.Add(new ReportDataSource("DataSet2", lstNotaProva));
                rv.LocalReport.DataSources.Add(new ReportDataSource("DataSet2a", lstDiagnostico));
                rv.LocalReport.DataSources.Add(new ReportDataSource("DataSet3", this.listaDTOAlunoDaTrilha));

                rv.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessing);
                rv.LocalReport.Refresh();

                try
                {
                    byte[] arradeBytes = rv.LocalReport.Render("PDF");

                    HttpContext.Current.Response.Clear();
                    HttpContext.Current.Response.ClearHeaders();
                    HttpContext.Current.Response.ContentType = "application/pdf";
                    HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachement; filename=\"{0}\"", "HistoricoAtividade.pdf"));
                    HttpContext.Current.Response.AddHeader("Content-Length", arradeBytes.Length.ToString());
                    HttpContext.Current.Response.OutputStream.Write(arradeBytes, 0, arradeBytes.Length);
                    HttpContext.Current.Response.Flush();
                    HttpContext.Current.Response.End();
                }
                catch (System.Exception ex)
                {
                    Exception inner = ex.InnerException;
                    while (inner != null)
                    {
                        string mensagem = inner.Message;
                        inner = inner.InnerException;
                    }
                }
            }
        }
Exemple #22
0
 public bool TutorialLido(UsuarioTrilha usuarioTrilha, enumCategoriaTrilhaTutorial categoriaId)
 {
     return
         (repositorioTrilhaTutorialAcesso.ObterTodosIQueryable()
          .Where(x => x.UsuarioTrilha.ID == usuarioTrilha.ID && x.Categoria == categoriaId)
          .Select(x => new { x.ID })
          .Any());
 }
        private static string ObterCorpoEmail(UsuarioTrilha usuarioTrilha, string textoTemplate)
        {
            var corpo = textoTemplate.Replace("#NOME_USUARIO", usuarioTrilha.Usuario.Nome);

            corpo = corpo.Replace("#NOME_TRILHA", usuarioTrilha.TrilhaNivel.Trilha.Nome + " - " + usuarioTrilha.TrilhaNivel.Nome);

            return(corpo);
        }
 private void SetarValorNaComboUsuario(UsuarioTrilha usuarioTrilha)
 {
     if (usuarioTrilha != null && usuarioTrilha.Usuario != null)
     {
         ddlNomeAluno.Items.Add(new ListItem(usuarioTrilha.Usuario.Nome, usuarioTrilha.Usuario.ID.ToString()));
         WebFormHelper.SetarValorNaCombo(usuarioTrilha.Usuario.ID.ToString(), ddlNomeAluno, true);
     }
 }
Exemple #25
0
 /// <summary>
 /// Calcula as moedas pelo histórico e atualiza as mesmas no saldo do usuário.
 /// </summary>
 /// <param name="usuarioTrilha"></param>
 /// <returns></returns>
 public Dictionary <string, int> CalcularMoedas(UsuarioTrilha usuarioTrilha)
 {
     return(new Dictionary <string, int>()
     {
         { "Ouro", Obter(usuarioTrilha, enumTipoMoeda.Ouro) },
         { "Prata", Obter(usuarioTrilha, enumTipoMoeda.Prata) }
     });
 }
Exemple #26
0
        public bool ValidarDependencias(UsuarioTrilha pUsuarioTrilha)
        {
            ValidarInstancia(pUsuarioTrilha);
            UsuarioTrilha usuarioTrilha = (UsuarioTrilha)pUsuarioTrilha;

            return((usuarioTrilha.ListaItemTrilhaParticipacao != null && usuarioTrilha.ListaItemTrilhaParticipacao.Count > 0) ||
                   (usuarioTrilha.ListaTrilhaAtividadeFormativaParticipacao != null && usuarioTrilha.ListaTrilhaAtividadeFormativaParticipacao.Count > 0));
        }
 // Caso o usuário tenha participado de todos os itens do tópico temático (loja)
 public bool VerificarUltimaParticipacao(UsuarioTrilha usuario, ItemTrilha itemTrilha)
 {
     return
         (itemTrilha.Missao.PontoSebrae.ObterItensTrilha().Where(x => x.Usuario == null && x.Ativo == true)
          .All(
              x =>
              x.Tipo != null &&
              x.ObterStatusParticipacoesItemTrilha(usuario) == enumStatusParticipacaoItemTrilha.Aprovado));
 }
Exemple #28
0
        public void Excluir(UsuarioTrilha pUsuarioTrilha)
        {
            if (ValidarDependencias(pUsuarioTrilha))
            {
                throw new AcademicoException("Exclusão de registro negada. Existem Registros Dependentes desta Matrícula.");
            }

            repositorio.Excluir(pUsuarioTrilha);
        }
Exemple #29
0
        public void ChecarAvaliacao()
        {
            var usuario = new UsuarioTrilha
            {
                ID = 1
            };

            Assert.IsTrue(itemTrilha.ChecarAvaliacao(usuario));
        }
Exemple #30
0
        public void VerificarCamposObrigatoriosDoFiltro(UsuarioTrilha pUsuarioTrilha)
        {
            ValidarInstancia(pUsuarioTrilha);

            if (pUsuarioTrilha.TrilhaNivel == null)
            {
                throw new Exception("Nível da Trilha. Campo Obrigatório ");
            }
        }