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);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack)
            {
                return;
            }

            PreencherCampos();

            if (Request["Id"] != null)
            {
                int idNivel;
                if (int.TryParse(Request["Id"], out idNivel))
                {
                    var nivel = new ManterTrilhaNivel().ObterTrilhaNivelPorID(idNivel);
                    CarregarDadosDoCadastroDeTrilhaNivel(nivel);
                    ExibirEdicao(true);
                }
                else
                {
                    throw new AcademicoException("Não foi possível editar o nível selecionado");
                }
            }
            else
            {
                ExibirEdicao(false);
            }
        }
        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 TrilhaNivel ObterNivelDaTrilha()
        {
            TrilhaNivel trilhaNivel = null;

            //Se IdNivelTrilha > 0, então é edição de um nível pelo ID (obtido do banco)
            //if (this.IdItemQuestionario > 0)
            if (this.IdNivelTrilha > 0)
            {
                //Obtém o item do questionário
                trilhaNivel = new ManterTrilhaNivel().ObterTrilhaNivelPorID(this.IdNivelTrilha);

                /* Marca o atributo para indicar que estamos alterando as informações
                 * do nível da trilha */
                trilhaNivel.StatusRegistro = enumStatusRegistro.Alterado;
            }
            else
            {
                //Edição de um nível da trilha pelo id lógico
                //Obtém o TrilhaNivel através de seu IdLogico (IdLogicoDoItemQuestionario)
                //IList<ItemQuestionario> ListaItens = this.QuestionarioDaSessao.ListaItemQuestionario.Where(x => x.IdLogico == this.IdLogicoDoItemQuestionario).ToList();
                IList <TrilhaNivel> ListaNiveis = this.TrilhaDaSessao.ListaTrilhaNivel.Where(x => x.IdLogico == this.IdLogicoDoNivelTrilha).ToList();

                if (ListaNiveis != null && ListaNiveis.Count > 0)
                {
                    trilhaNivel = ListaNiveis[0];

                    ///* Marca o atributo para indicar que estamos alterando as informações
                    //do item do Questionário */
                    //itemQuestionario.StatusRegistro = enumStatusRegistro.Alterado;
                }
                else
                {
                    int ultimoIdInserido = this.TrilhaDaSessao.ListaTrilhaNivel.Max(x => x.IdLogico);
                    trilhaNivel = new TrilhaNivel()
                    {
                        IdLogico = ultimoIdInserido + 1
                    };
                    this.IdLogicoDoNivelTrilha = trilhaNivel.IdLogico;
                    //this.IdLogicoDoItemQuestionario = trilhaNivel.IdLogico;
                }
            }

            int limiteCancelamento = 0;

            if (int.TryParse(txtLimiteCancelamento.Text, out limiteCancelamento))
            {
                trilhaNivel.LimiteCancelamento = limiteCancelamento;
            }

            if (this.AcaoDaTela.Equals((int)enumAcaoTelaTrilhaNivel.NovoRegistroDeNivel))
            {
                trilhaNivel = new TrilhaNivel()
                {
                    IdLogico = 1
                };
            }

            return(trilhaNivel);
        }
        protected void ddlTrilhaNivel_OnSelectedIndexChanged(object sender, EventArgs e)
        {
            var trilhaNivelId = int.Parse(ddlTrilhaNivel.SelectedValue);

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

            WebFormHelper.PreencherListaCustomizado(trilhaNivel.ObterPontosSebraeAtivos().ToList(), ddlPontoSebrae, "ID",
                                                    "NomeExibicao", false, true);
        }
        protected void txtTrilha_TextChanged(object sender, EventArgs e)
        {
            int idTrilha;

            if (int.TryParse(txtTrilha.Text, out idTrilha))
            {
                var niveis = new ManterTrilhaNivel().ObterPorTrilha(idTrilha);
                PreencherGridNiveis(niveis);
            }
        }
        private void PreencherComboTrilhaNivel(Trilha trilha)
        {
            var listaTrilhaNivel = new ManterTrilhaNivel().ObterPorTrilha(trilha);

            if (listaTrilhaNivel != null && listaTrilhaNivel.Count > 0)
            {
                WebFormHelper.PreencherLista(listaTrilhaNivel, ddlTrilhaNivel, false, true);
            }
            else
            {
                ddlTrilhaNivel.Items.Clear();
            }
        }
Beispiel #8
0
        private void PreencherNiveis()
        {
            int idTrilha;

            if (int.TryParse(txtTrilha.Text, out idTrilha))
            {
                var niveis = new ManterTrilhaNivel().ObterPorTrilha(idTrilha).OrderBy(x => x.Nome);
                ViewState["_niveis"] = Helpers.Util.ObterListaAutocomplete(niveis.AsQueryable());
            }
            else
            {
                ViewState["_niveis"] = null;
            }
        }
        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            try
            {
                var manter = new ManterTrilhaNivel();
                int quantidadeDiasPrazoAtual = 0;
                int idNivel;
                if (int.TryParse(Request["Id"], out idNivel))
                {
                    var trilhaNivelAtual = manter.ObterTrilhaNivelPorID(idNivel);
                    quantidadeDiasPrazoAtual = trilhaNivelAtual.QuantidadeDiasPrazo;
                }

                var trilhaNivel = ObterTrilhaNivel();

                if (quantidadeDiasPrazoAtual > 0 && quantidadeDiasPrazoAtual != trilhaNivel.QuantidadeDiasPrazo)
                {
                    if (trilhaNivel.ListaUsuarioTrilha.Any())
                    {
                        foreach (var usuarioTrilha in trilhaNivel.ListaUsuarioTrilha)
                        {
                            usuarioTrilha.DataLimite = usuarioTrilha.DataInicio.AddDays(trilhaNivel.QuantidadeDiasPrazo);
                        }
                    }
                }

                bool statusTrilhaNivel = false;

                var trilhasNiveis = manter.ObterPorTrilha(trilhaNivel.Trilha.ID);
                foreach (var nivelTrilha in trilhasNiveis)
                {
                    if (nivelTrilha.AceitaNovasMatriculas == true)
                    {
                        statusTrilhaNivel = true;
                        break;
                    }
                }

                manter.Salvar(trilhaNivel);

                new ManterTrilha().AtualizarNodeIdDrupal(trilhaNivel.Trilha, null, null, null, null, statusTrilhaNivel);

                WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "Dados Gravados com Sucesso !", "ListarTrilhaNivel.aspx");
            }
            catch (AcademicoException ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
            }
        }
        private void PreencherComboTrilhaNivel(Trilha trilha)
        {
            ManterTrilhaNivel           manterTrilhaNivel = new ManterTrilhaNivel();
            IList <classes.TrilhaNivel> ListaTrilhaNivel  = manterTrilhaNivel.ObterPorTrilha(trilha).OrderBy(x => x.Nome).ToList();

            WebFormHelper.PreencherLista(ListaTrilhaNivel, this.ddlTrilhaNivel, false, true);

            if (ListaTrilhaNivel != null && ListaTrilhaNivel.Count > 0)
            {
                WebFormHelper.PreencherLista(ListaTrilhaNivel, this.ddlTrilhaNivel, false, true);
            }
            else
            {
                ddlTrilhaNivel.Items.Clear();
            }
        }
        private void SetarValorNaComboTrilhaNivel(string idtniv, classes.TrilhaNivel trilhaNivel)
        {
            ManterTrilhaNivel manterTrilhaNivel = new ManterTrilhaNivel();

            if (!string.IsNullOrWhiteSpace(idtniv))
            {
                trilhaNivel = manterTrilhaNivel.ObterTrilhaNivelPorID(int.Parse(idtniv));
                ddlTrilhaNivel.Items.Add(new ListItem(trilhaNivel.Nome, trilhaNivel.ID.ToString()));
                WebFormHelper.SetarValorNaCombo(trilhaNivel.ID.ToString(), ddlTrilhaNivel, true);
            }
            else if (trilhaNivel != null)
            {
                ddlTrilhaNivel.Items.Add(new ListItem(trilhaNivel.Nome, trilhaNivel.ID.ToString()));
                WebFormHelper.SetarValorNaCombo(trilhaNivel.ID.ToString(), ddlTrilhaNivel, true);
            }
        }
        protected void btnPesquisar_Click(object sender, EventArgs e)
        {
            classes.TrilhaNivel nivel = new classes.TrilhaNivel();

            int idTrilha;

            if (int.TryParse(txtTrilha.Text, out idTrilha))
            {
                nivel.Trilha = new ManterTrilha().ObterTrilhaPorId(idTrilha);
            }

            nivel.Nome = txtNome.Text;

            var niveis = new ManterTrilhaNivel().ObterTrilhaNivelPorFiltro(nivel);

            PreencherGridNiveis(niveis);
            NiveisBusca = niveis;
        }
Beispiel #13
0
        private void PreencherNiveisTrilha()
        {
            int idTrilha;

            if (int.TryParse(drpTrilhas.SelectedValue, out idTrilha))
            {
                if (idTrilha <= 0)
                {
                    WebFormHelper.PreencherLista(new List <object> {
                        new { ID = 0, Nome = "-- Selecione uma Trilha --" }
                    }, drpNivelTrilha);
                    return;
                }

                List <TrilhaNivel> trilhaNivel = new ManterTrilhaNivel().ObterPorTrilha(idTrilha).ToList();
                WebFormHelper.PreencherLista(trilhaNivel, drpNivelTrilha, true, false);
            }
        }
Beispiel #14
0
        protected void dgvTrilhas_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName.Trim().ToLower().Equals("fazerinscricao"))
            {
                int idTrilhaNivel = int.Parse(e.CommandArgument.ToString());

                try
                {
                    //Matricula o aluno no nivel da trilha
                    ManterMatriculaTrilha manterMatriculaTrilha = new ManterMatriculaTrilha();

                    TrilhaNivel   trilhaNivelDaLinhaDaGrid = new ManterTrilhaNivel().ObterTrilhaNivelPorID(idTrilhaNivel);
                    UsuarioTrilha usuarioTrilha            = new UsuarioTrilha();
                    usuarioTrilha.TrilhaNivel = trilhaNivelDaLinhaDaGrid;
                    usuarioTrilha.Usuario     = new ManterUsuario().ObterUsuarioPorID(this.IdUsuario);
                    manterMatriculaTrilha.IncluirMatriculaTrilha(usuarioTrilha);

                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, string.Format("O usuário '{0}' foi matriculado no Nível '{1}' da Trilha '{2}' com Sucesso !",
                                                                                         usuarioTrilha.Usuario.Nome, usuarioTrilha.TrilhaNivel.Nome, usuarioTrilha.TrilhaNivel.Trilha.Nome));

                    PreencherGrid();
                }
                catch (AcademicoException ex)
                {
                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
                }
            }
            else if (e.CommandName.Equals("editar"))
            {
                try
                {
                    //this.TratarEdicaoDeUmaMatriculaTrilha();
                    ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "myscript", " $('#ModalPublicacoesDoSaber').modal({ backdrop: 'static', keyboard: false, show: true });", true);
                }
                catch (AcademicoException ex)
                {
                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
                    return;
                }
            }
        }
        protected void dgvTrilhaNivel_RowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e)
        {
            int idTrilhaNivel;

            switch (e.CommandName)
            {
            case "editar":
                idTrilhaNivel = int.Parse(e.CommandArgument.ToString());
                //Session.Add("ItemTrilhaEdit", idTrilhaTopicoTematico);
                Response.Redirect("EdicaoTrilhaNivel.aspx?Id=" + idTrilhaNivel.ToString(), false);
                break;

            case "excluir":
                var manterTrilhaNivel = new ManterTrilhaNivel();
                idTrilhaNivel = int.Parse(e.CommandArgument.ToString());
                manterTrilhaNivel.ExcluirTrilhaNivel(idTrilhaNivel);
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "Registro excluído com sucesso!", "ListarTrilhaNivel.aspx");
                break;

            default:
                break;
            }
        }
        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);
            }
        }
        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 void ObterInformacoesDaTelaDeNivel()
        {
            //Nome
            this.TrilhaNivelAux.Nome = txtNomeNivel.Text.Trim();

            //Inscrições Abertas ?
            if (ddlAceitaNovasMatriculas.SelectedItem != null && !string.IsNullOrWhiteSpace(ddlAceitaNovasMatriculas.SelectedItem.Value))
            {
                string valorInformadoParaInscricaoAberta = ddlAceitaNovasMatriculas.SelectedItem.Value;

                if (valorInformadoParaInscricaoAberta.ToString().ToUpper().Equals("S"))
                {
                    this.TrilhaNivelAux.AceitaNovasMatriculas = true;
                }
                else if (valorInformadoParaInscricaoAberta.ToString().ToUpper().Equals("N"))
                {
                    this.TrilhaNivelAux.AceitaNovasMatriculas = false;
                }
            }
            else
            {
                this.TrilhaNivelAux.AceitaNovasMatriculas = false;
            }

            //Certificado
            if (ddlCertificadoTemplate.SelectedItem != null && !string.IsNullOrWhiteSpace(ddlCertificadoTemplate.SelectedItem.Value))
            {
                this.TrilhaNivelAux.CertificadoTemplate = new CertificadoTemplate()
                {
                    ID        = int.Parse(ddlCertificadoTemplate.SelectedItem.Value),
                    Descricao = ddlCertificadoTemplate.SelectedItem.Text
                };
            }
            else
            {
                this.TrilhaNivelAux.CertificadoTemplate = null;
            }

            //Pré-Requisito
            if (ddlPreRequisito.SelectedItem != null && !string.IsNullOrWhiteSpace(ddlPreRequisito.SelectedItem.Value))
            {
                TrilhaNivel trilhaNivelPreRequisito = null;

                if (ddlPreRequisito.SelectedItem.Text.ToLower().Equals("-- Selecione-- "))
                {
                    this.TrilhaNivelAux.PreRequisito = null;
                }
                else
                {
                    //Nivel
                    int idPreRequisito = int.Parse(ddlPreRequisito.SelectedItem.Value);

                    //Pre-Requisito gravado no banco
                    if (idPreRequisito > 0)
                    {
                        //Busca o nível da trilha no banco, para verificar se é um nivel ja salvo
                        trilhaNivelPreRequisito = new ManterTrilhaNivel().ObterTrilhaNivelPorID(int.Parse(ddlPreRequisito.SelectedItem.Value));

                        //Se encontrou, é um Pre-Requisito (um nivel de um atrilha) que já foi salvo.
                        if (trilhaNivelPreRequisito != null)
                        {
                            this.TrilhaNivelAux.PreRequisito = trilhaNivelPreRequisito;
                        }
                        else
                        {
                            //É um Pre-Requisito (um nivel de uma trilha) que ainda não foi salvo.
                            this.TrilhaNivelAux.PreRequisito = new TrilhaNivel()
                            {
                                ID        = int.Parse(ddlPreRequisito.SelectedItem.Value),
                                Descricao = ddlPreRequisito.SelectedItem.Text
                            };
                        }
                    }
                    else
                    {
                        //Pré-requisito em memória (ainda não foi salvo no banco)
                        trilhaNivelPreRequisito = this.TrilhaDaSessao.ListaTrilhaNivel.FirstOrDefault(x => x.Nome == ddlPreRequisito.SelectedItem.Text);

                        if (trilhaNivelPreRequisito != null)
                        {
                            this.TrilhaNivelAux.PreRequisito = trilhaNivelPreRequisito;
                        }
                    }
                }
            }
            else
            {
                //Retira o Pré-Requisito do nível da trilha, pois a opção selecione foi escolhida.
                this.TrilhaNivelAux.PreRequisito = null;
            }


            //Prazo
            int qtdPrazo = 0;

            if (!int.TryParse(this.txtPrazo.Text.Trim(), out qtdPrazo))
            {
                throw new AcademicoException("Valor Inválido para o Campo Prazo.");
            }
            else
            {
                this.TrilhaNivelAux.QuantidadeDiasPrazo = qtdPrazo;
            }

            //Prazo monitor
            byte qtdPrazoMonitor = 0;

            if (!byte.TryParse(this.txtPrazoMonitor.Text.Trim(), out qtdPrazoMonitor))
            {
                throw new AcademicoException("Valor Inválido para o campo prazo de avaliação do monitor.");
            }
            else
            {
                this.TrilhaNivelAux.PrazoMonitorDiasUteis = qtdPrazoMonitor;
            }

            //Avisar Monitor
            this.TrilhaNivelAux.AvisarMonitor = chbAvisarMonitor.Checked;

            //Texto do Termo de Aceite
            //if (!string.IsNullOrWhiteSpace(txtTextoTermoDeAceite.Text))
            //{
            //    this.TrilhaNivelAux.TermoAceite = txtTextoTermoDeAceite.Text.Trim();
            //}
            //else
            //{
            //    this.TrilhaNivelAux.TermoAceite = null;
            //}

            //Valor da Ordem
            this.TrilhaNivelAux.ValorOrdem = byte.Parse(this.ddlOrdem.SelectedItem.Value);

            //Valor da Nota Minima
            decimal valorNotaMinima = 0;

            if (!decimal.TryParse(this.txtValorNotaMinima.Text.Trim(), out valorNotaMinima))
            {
                throw new AcademicoException("Valor Inválido para o Campo Valor da Nota Mínima.");
            }
            else
            {
                if (valorNotaMinima > 10 || valorNotaMinima < 0)
                {
                    throw new AcademicoException("O valor da Nota Mínima deve estar entre 0 e 10.");
                }

                this.TrilhaNivelAux.NotaMinima = valorNotaMinima;
            }

            //Carga Horária
            int qtdCargaHoraria = 0;

            if (!int.TryParse(this.txtCargaHoraria.Text.Trim(), out qtdCargaHoraria))
            {
                throw new AcademicoException("Valor Inválido para a Carga Horária.");
            }
            else
            {
                this.TrilhaNivelAux.CargaHoraria = qtdCargaHoraria;
            }

            int limiteCancelamento = 0;

            if (int.TryParse(txtLimiteCancelamento.Text, out limiteCancelamento))
            {
                this.TrilhaNivelAux.LimiteCancelamento = limiteCancelamento;
            }
        }
Beispiel #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 void PreencherComboTrilhaNivel(Trilha trilha)
        {
            IList <TrilhaNivel> ListaTrilhaNivel = new ManterTrilhaNivel().ObterPorTrilha(trilha);

            WebFormHelper.PreencherLista(ListaTrilhaNivel, this.ddlTrilhaNivel, false, true);
        }
        private classes.TrilhaNivel ObterTrilhaNivel()
        {
            classes.TrilhaNivel nivel = new classes.TrilhaNivel();

            if (Request["Id"] != null)
            {
                int idNivel;
                if (int.TryParse(Request["Id"], out idNivel))
                {
                    nivel = new ManterTrilhaNivel().ObterTrilhaNivelPorID(idNivel);
                }
            }
            else
            {
                int idTrilha;
                if (int.TryParse(txtTrilha.Text, out idTrilha))
                {
                    nivel.Trilha = new ManterTrilha().ObterTrilhaPorId(idTrilha);
                }
                else
                {
                    throw new AcademicoException("Você deve selecionar ao menos uma trilha");
                }
            }

            try
            {
                // Prazo.
                int qtdPrazo;
                if (!int.TryParse(txtPrazo.Text.Trim(), out qtdPrazo))
                {
                    throw new AcademicoException("Valor Inválido para o campo Prazo.");
                }

                // Nota Mínima.
                decimal valorNotaMinima;
                if (string.IsNullOrWhiteSpace(txtValorNotaMinima.Text))
                {
                    throw new AcademicoException("Campo Valor da Nota Mínima é obrigatório.");
                }
                if (!decimal.TryParse(txtValorNotaMinima.Text.Trim(), out valorNotaMinima))
                {
                    throw new AcademicoException("Valor Inválido para o campo Valor da Nota Mínima.");
                }
                if (valorNotaMinima > 10 || valorNotaMinima <= 0)
                {
                    throw new AcademicoException("O valor da Nota Mínima deve ser de 0.1 a 10");
                }

                // Carga Horária.
                int qtdCargaHoraria;
                if (!int.TryParse(txtCargaHoraria.Text.Trim(), out qtdCargaHoraria))
                {
                    throw new AcademicoException("Valor Inválido para a Carga Horária.");
                }

                nivel.Nome = txtNomeNivel.Text;

                if (!string.IsNullOrEmpty(ddlAceitaNovasMatriculas.SelectedValue))
                {
                    var valorInformadoParaInscricaoAberta = ddlAceitaNovasMatriculas.SelectedValue;
                    nivel.AceitaNovasMatriculas =
                        valorInformadoParaInscricaoAberta.ToUpper().Equals("S");
                }
                else
                {
                    nivel.AceitaNovasMatriculas = false;
                }

                //Certificado
                if (!string.IsNullOrEmpty(ddlCertificadoTemplate.SelectedValue) &&
                    !ddlCertificadoTemplate.SelectedValue.Equals("0"))
                {
                    nivel.CertificadoTemplate =
                        new ManterCertificadoTemplate().ObterTodosCertificadosSomenteIdNome()
                        .FirstOrDefault(x => x.ID == int.Parse(ddlCertificadoTemplate.SelectedItem.Value));
                }
                else
                {
                    nivel.CertificadoTemplate = null;
                }

                //Pré-Requisito
                if (!string.IsNullOrEmpty(ddlPreRequisito.SelectedValue) &&
                    !ddlPreRequisito.SelectedValue.Equals("0"))
                {
                    var trilhaNivelPreRequisito =
                        nivel.Trilha.ListaTrilhaNivel.FirstOrDefault(
                            x => x.Nome == ddlPreRequisito.SelectedItem.Text);
                    if (trilhaNivelPreRequisito != null)
                    {
                        nivel.PreRequisito = trilhaNivelPreRequisito;
                    }
                }
                else
                {
                    //Retira o Pré-Requisito do nível da trilha, pois a opção selecione foi escolhida.
                    nivel.PreRequisito = null;
                }

                //Porcentagens Trofeus
                nivel.PorcentagensTrofeus = txtPorcentagensTrofeus.Value;

                //Prazo
                nivel.QuantidadeDiasPrazo = qtdPrazo;

                //Texto do Termo de Aceite
                //TrilhaDaSessao.ListaTrilhaNivel[indexOfTrilhaNivel].TermoAceite =
                //    !string.IsNullOrWhiteSpace(txtTextoTermoDeAceite.Text)
                //        ? txtTextoTermoDeAceite.Text.Trim()
                //        : null;

                //Texto do Termo de Aceite
                nivel.TermoAceite = ObterTermoDeAceite();

                //Descrição
                nivel.Descricao =
                    !string.IsNullOrWhiteSpace(txtDescricaoTrilhaNivel.Text)
                                        ? txtDescricaoTrilhaNivel.Text.Trim()
                                        : null;

                //Valor da Ordem
                nivel.ValorOrdem =
                    byte.Parse(ddlOrdem.SelectedItem.Value);

                //Valor da Nota Minima
                nivel.NotaMinima = valorNotaMinima;

                //Carga Horária
                nivel.CargaHoraria = qtdCargaHoraria;

                //Monitor
                nivel.Monitor = ucLupaUsuarioMonitor.SelectedUser;

                //Permissoes
                IncluirPermissoesTrilha(ref nivel);

                //Questionario
                AdicionarQuestionarioATrilhaNivel(nivel);

                //Limite dias de cancelamento
                int limiteCancelamento;
                if (int.TryParse(txtLimiteCancelamento.Text, out limiteCancelamento))
                {
                    nivel.LimiteCancelamento = limiteCancelamento;
                }

                if (!string.IsNullOrEmpty(txtQuantidadeMoedasProvaFinal.Text))
                {
                    nivel.QuantidadeMoedasProvaFinal = int.Parse(txtQuantidadeMoedasProvaFinal.Text);
                }

                if (!string.IsNullOrEmpty(txtQuantidadeMoedasPorCurtida.Text))
                {
                    nivel.QuantidadeMoedasPorCurtida = int.Parse(txtQuantidadeMoedasPorCurtida.Text);
                }

                if (!string.IsNullOrEmpty(txtQuantidadeMoedasPorDescurtida.Text))
                {
                    nivel.QuantidadeMoedasPorDescurtida = int.Parse(txtQuantidadeMoedasPorDescurtida.Text);
                }

                if (ddlTipoMapa.SelectedValue != "")
                {
                    nivel.Mapa = (enumTrilhaMapa)Enum.Parse(typeof(enumTrilhaMapa), ddlTipoMapa.Text);
                }

                if (!string.IsNullOrEmpty(txtCambioMoedas.Text))
                {
                    nivel.ValorPrataPorOuro = int.Parse(txtCambioMoedas.Text);
                }
            }
            catch (AcademicoException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(nivel);
        }