Esempio n. 1
0
        protected void dgvMatriculaOferta_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            var idTurma = int.Parse(e.CommandArgument.ToString());

            if (e.CommandName.Equals("emitirCertificado"))
            {
                var idMatriculaOferta = int.Parse(e.CommandArgument.ToString());

                var matriculaOferta = new ManterMatriculaOferta().ObterMatriculaOfertaPorID(idMatriculaOferta);

                new ucCursos().EmitirCertificado(matriculaOferta);
            }

            if (e.CommandName.Equals("editarMatTurma"))
            {
                try
                {
                    TratarEdicaoDeUmaMatriculaTurma(e);
                    ExibirModalMatriculaTurma();
                }
                catch (AcademicoException ex)
                {
                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
                    return;
                }
            }
        }
Esempio n. 2
0
        private void ExcluirAlunoDaTurma(DropDownList comboTurma)
        {
            //Obtém a linha da grid onde a dropdownlist (combo) de oferta, está contida
            var linhadaGrid = (GridViewRow)comboTurma.NamingContainer;

            if (linhadaGrid.RowType == DataControlRowType.Header)
            {
                linhadaGrid.TableSection = TableRowSection.TableHeader;
            }

            if (linhadaGrid != null)
            {
                var hdfIdMatriculaOferta = (HiddenField)linhadaGrid.FindControl("hdfIdMatriculaOferta");

                int IdMatriculaOferta;
                var manterMatriculaOferta = new ManterMatriculaOferta();
                classes.MatriculaOferta matriculaOferta = null;
                if (int.TryParse(hdfIdMatriculaOferta.Value, out IdMatriculaOferta))
                {
                    matriculaOferta = manterMatriculaOferta.ObterMatriculaOfertaPorID(IdMatriculaOferta);
                }

                if (matriculaOferta != null && matriculaOferta.MatriculaTurma != null &&
                    matriculaOferta.MatriculaTurma.Count > 0)
                {
                    matriculaOferta.MatriculaTurma.Clear();
                    AtualizarStatusDaOferta(matriculaOferta.StatusMatricula, matriculaOferta, ref manterMatriculaOferta);
                }
            }
        }
        protected void btnEfetivarMatricula_Click(object sender, EventArgs e)
        {
            try
            {
                var matriculaOferta       = ObterObjetoMatriculaOferta();
                var manterMatriculaOferta = new ManterMatriculaOferta();

                SalvarMatriculaOferta(manterMatriculaOferta, matriculaOferta);

                ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "myscript",
                                                    " $('#EdicaoNivel, #modal-background').removeClass('active');", true);

                LimparCamposMatriculaAluno();

                WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "Aluno cadastrado com sucesso.");
            }
            catch (AcademicoException ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
            }
            catch (Exception ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
            }
        }
        private static bool UsuarioPossuiLimiteInscricoesSimultaneas(int usuarioId,
                                                                     ref DTODisponibilidadeSolucaoEducacional retorno)
        {
            var listaMatriculaOferta =
                new ManterMatriculaOferta().ObterPorUsuario(usuarioId).Select(x => new MatriculaOferta
            {
                ID = x.ID,
                StatusMatricula = x.StatusMatricula
            });

            var cursosInscrito = listaMatriculaOferta.Count(x => x.StatusMatricula == enumStatusMatricula.Inscrito);

            int limteCursosSimultaneos;

            if (
                int.TryParse(
                    ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.CursosSimultaneos).Registro,
                    out limteCursosSimultaneos))
            {
                if (cursosInscrito < limteCursosSimultaneos)
                {
                    return(false);
                }

                retorno.TextoDisponibilidade = string.Format("Você só pode realizar {0} em simultâneo.",
                                                             limteCursosSimultaneos);
                retorno.CodigoDisponibilidade = (int)enumDisponibilidadeSolucaoEducacional.NaoPossuiDisponibilidade;

                return(true);
            }

            return(false);
        }
Esempio n. 5
0
        private string MatricularAlunoNaTurma(int idMatriculaOferta, int idTurma)
        {
            string retorno = "Ocorreu um erro no processo";

            MatriculaOferta matriculaOferta = new ManterMatriculaOferta().ObterMatriculaOfertaPorID(idMatriculaOferta);

            if (matriculaOferta != null)
            {
                MatriculaTurma        matriculaTurma        = this.ObterObjetoMatriculaTurma(idTurma, matriculaOferta);
                ManterMatriculaOferta manterMatriculaOferta = new ManterMatriculaOferta();
                if (matriculaOferta.MatriculaTurma.Count == 0)
                {
                    matriculaOferta.MatriculaTurma.Add(matriculaTurma);
                }
                else
                {
                    matriculaOferta.MatriculaTurma[0] = matriculaTurma;
                }
                manterMatriculaOferta.AtualizarMatriculaOferta(matriculaOferta);

                retorno = string.Format("O usuário '{0}' foi matriculado na turma '{1}'", matriculaOferta.Usuario.Nome, matriculaTurma.Turma.Nome);
            }

            return(retorno);
        }
        protected void btnEnviarConfirmacao_OnClick(object sender, EventArgs e)
        {
            try
            {
                var matriculaOferta       = this.ObterObjetoMatriculaOferta();
                var manterMatriculaOferta = new ManterMatriculaOferta();

                SalvarMatriculaOferta(manterMatriculaOferta, matriculaOferta, false);

                txtJustificativa.Text = "";
                lblAvisoModalConfirmacaoInscricao.Text = "";
                pnlModalConfirmacaoInscricao.Visible   = false;

                WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "Aluno cadastrado com sucesso.");
            }
            catch (AcademicoException ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
                return;
            }
            catch (Exception ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
                return;
            }
        }
Esempio n. 7
0
        private void PreencherGrid()
        {
            var manterMatriculaOferta = new ManterMatriculaOferta();

            ListaMatriculaOferta = manterMatriculaOferta.ObterPorUsuario(IdUsuario).ToList();
            WebFormHelper.PreencherGrid(ListaMatriculaOferta, dgvMatriculaOferta);
        }
Esempio n. 8
0
        protected void btnCertificado_Click(object sender, EventArgs e)
        {
            LinkButton      lbEmitirCertificado = (LinkButton)sender;
            int             idMatriculaOferta   = int.Parse(lbEmitirCertificado.CommandArgument);
            MatriculaOferta matriculaOferta     = new ManterMatriculaOferta().ObterMatriculaOfertaPorID(idMatriculaOferta);

            EmitirCertificado(matriculaOferta);
        }
Esempio n. 9
0
        private void AtualizarStatusDaOferta(enumStatusMatricula statusMatriculaOferta, MatriculaOferta matriculaOferta)
        {
            //Atualiza o status da Oferta
            ManterMatriculaOferta manterMatriculaOferta = new ManterMatriculaOferta();

            matriculaOferta.StatusMatricula = statusMatriculaOferta;
            manterMatriculaOferta.AtualizarMatriculaOferta(matriculaOferta, false);
        }
Esempio n. 10
0
        private static void ObterLinkAcesso(List <DtoTrilhaSolucaoSebrae> solucoes)
        {
            if (solucoes.Any(x => x.MatriculaOfertaId != null))
            {
                var matriculasIds =
                    solucoes.Where(x => x.MatriculaOfertaId != null).Select(x => x.MatriculaOfertaId.Value).ToList();


                var matriculas =
                    new ManterMatriculaOferta().ObterTodosIQueryable().Where(x => matriculasIds.Contains(x.ID))
                    .Join(new ManterOferta().ObterTodasIQueryable(), mo => mo.Oferta.ID, o => o.ID,
                          (mo, o) => new { mo, o })
                    .Join(new ManterSolucaoEducacional().ObterTodosIQueryable(),
                          previousJoin => previousJoin.o.SolucaoEducacional.ID, se => se.ID,
                          (previousJoin, se) => new MatriculaOferta
                {
                    ID     = previousJoin.mo.ID,
                    Oferta = new Oferta
                    {
                        ID                 = se.ID,
                        CodigoMoodle       = previousJoin.o.CodigoMoodle,
                        SolucaoEducacional = new SolucaoEducacional
                        {
                            ID         = se.ID,
                            Fornecedor = new Fornecedor
                            {
                                ID                = se.Fornecedor.ID,
                                LinkAcesso        = se.Fornecedor.LinkAcesso,
                                TextoCriptografia = se.Fornecedor.TextoCriptografia
                            }
                        }
                    },
                    Usuario = new Usuario
                    {
                        ID    = previousJoin.mo.Usuario.ID,
                        CPF   = previousJoin.mo.Usuario.CPF,
                        Senha = previousJoin.mo.Usuario.Senha
                    }
                })
                    .ToList();

                foreach (var solucao in solucoes.Where(x => x.MatriculaOfertaId.HasValue))
                {
                    var matriculaOferta = matriculas.FirstOrDefault(x => x.ID == solucao.MatriculaOfertaId.Value);

                    if (matriculaOferta == null)
                    {
                        continue;
                    }

                    solucao.LinkAcesso = new ConsultarMeusCursos().ConsultarLinkAcessoFornecedor(
                        matriculaOferta.Oferta.SolucaoEducacional.Fornecedor,
                        matriculaOferta.Usuario,
                        matriculaOferta.Oferta.CodigoMoodle.ToString());
                }
            }
        }
Esempio n. 11
0
        private void ExcluirAlunoDaTurma(int idMatriculaOferta)
        {
            MatriculaOferta matriculaOferta = new ManterMatriculaOferta().ObterMatriculaOfertaPorID(idMatriculaOferta);

            if (matriculaOferta != null && matriculaOferta.MatriculaTurma != null && matriculaOferta.MatriculaTurma.Count > 0)
            {
                matriculaOferta.MatriculaTurma.Clear();
                AtualizarStatusDaOferta(matriculaOferta.StatusMatricula, matriculaOferta);
            }
        }
Esempio n. 12
0
        private void PreencherInformacoesDosAbandonos(int IdUsuario)
        {
            //ManterAbandono manterAbandono = new ManterAbandono();
            //IList<UsuarioAbandono> ListaAbandonos = manterAbandono.ObterPorUsuario(IdUsuario);
            //WebFormHelper.PreencherGrid(ListaAbandonos, this.dgvAbandonos);

            ManterMatriculaOferta manterMatriculaOferta = new ManterMatriculaOferta();
            var ListaMatriculaOferta = manterMatriculaOferta.ObterPorUsuario(IdUsuario).Where(x => x.StatusMatricula == enumStatusMatricula.Abandono).ToList();

            WebFormHelper.PreencherGrid(ListaMatriculaOferta, this.dgvAbandonos);
        }
Esempio n. 13
0
        protected void btnSalvarModalDataConclusao_OnClick(object sender, EventArgs e)
        {
            try
            {
                if (!string.IsNullOrEmpty(hdfModalDataConclusaoIdMatriculaTurma.Value))
                {
                    var manterMatriculaTurma = new ManterMatriculaTurma();
                    var idMatriculaTurma     = Convert.ToInt32(hdfModalDataConclusaoIdMatriculaTurma.Value);
                    var matriculaTurma       = manterMatriculaTurma.ObterMatriculaTurmaPorId(idMatriculaTurma);

                    var dataConclusao = DateTime.Now;

                    if (!DateTime.TryParse(txtModalDataConclusao.Text, out dataConclusao))
                    {
                        throw new AcademicoException("Informe uma data válida para conclusão do aluno.");
                    }

                    matriculaTurma.DataTermino = dataConclusao;

                    var data = matriculaTurma.Turma.DataFinal;

                    if (data.HasValue)
                    {
                        if (matriculaTurma.DataTermino.Value.Date > data.Value.Date)
                        {
                            throw new AcademicoException(string.Format("Data de conclusão não pode ser maior que a data final da turma ({0}).", data.Value.ToString("dd/MM/yyyy")));
                        }
                    }

                    manterMatriculaTurma.AlterarMatriculaTurma(matriculaTurma);

                    var manterMatriculaOferta = new ManterMatriculaOferta();
                    var matriculaOferta       = manterMatriculaOferta.ObterMatriculaOfertaPorID(matriculaTurma.MatriculaOferta.ID);

                    AtualizarStatusDaOferta((enumStatusMatricula)Convert.ToInt32(hdfModalDataConclusaoIdStatusMatriculaOferta.Value), matriculaOferta, ref manterMatriculaOferta);

                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "O Status da Matrícula da Turma foi Atualizado com Sucesso !");

                    consultarMatriculasUsuario();

                    AtualizarStatusUsuarioTurma(matriculaTurma);
                }

                OcultarModalDataConclusao();
            }
            catch (PoliticaConsequenciaException ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
            }
            catch (AcademicoException ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
            }
        }
Esempio n. 14
0
        private void AtualizarStatusDaOferta(enumStatusMatricula statusMatriculaOferta,
                                             classes.MatriculaOferta matriculaOferta, ref ManterMatriculaOferta manterMatriculaOferta,
                                             DateTime?dataConclusao = null, double?notaFinal = null, bool atualizarMatriculas = true,
                                             bool fazerMerge        = false)
        {
            if (manterMatriculaOferta == null)
            {
                // O objetivo que for salvo pelo Manter não deve vir de outra sessão (outro Manter/BM)
                manterMatriculaOferta = new ManterMatriculaOferta();
                matriculaOferta       = manterMatriculaOferta.ObterMatriculaOfertaPorID(matriculaOferta.ID);
            }

            if (matriculaOferta == null)
            {
                return;
            }

            //Atualiza o status da Oferta
            matriculaOferta.StatusMatricula = statusMatriculaOferta;

            if (dataConclusao != null || notaFinal != null)
            {
                foreach (var mt in matriculaOferta.MatriculaTurma)
                {
                    // Obter a turma novamente, pois o lazy tá pirando nessa parte.
                    var turma = new ManterTurma().ObterTurmaPorID(mt.Turma.ID);

                    // Só altera caso a data da turma seja menor ou igual à data de conclusão informada.
                    if (dataConclusao.HasValue &&
                        (turma.DataInicio <= dataConclusao))
                    {
                        mt.DataTermino = dataConclusao;
                    }

                    if (notaFinal.HasValue)
                    {
                        mt.MediaFinal = notaFinal;
                    }
                }
            }

            manterMatriculaOferta.AtualizarMatriculaOferta(matriculaOferta, false, fazerMerge);

            new BP.ManterItemTrilhaParticipacao().AtualizarStatusParticipacoesTrilhas(matriculaOferta);
        }
Esempio n. 15
0
        private void MatricularAlunoNaTurma(DropDownList comboTurma)
        {
            //Obtém a linha da grid onde a dropdownlist (combo) de oferta, está contida
            var linhadaGrid = (GridViewRow)comboTurma.NamingContainer;

            if (linhadaGrid != null)
            {
                var hdfIdMatriculaOferta = (HiddenField)linhadaGrid.FindControl("hdfIdMatriculaOferta");

                int IdMatriculaOferta;
                classes.MatriculaOferta matriculaOferta = null;
                if (int.TryParse(hdfIdMatriculaOferta.Value, out IdMatriculaOferta))
                {
                    matriculaOferta = new ManterMatriculaOferta().ObterMatriculaOfertaPorID(IdMatriculaOferta);
                }

                if (matriculaOferta != null)
                {
                    var matriculaTurma = ObterObjetoMatriculaTurma(comboTurma, matriculaOferta);

                    var manterMatriculaOferta = new ManterMatriculaOferta();

                    if (matriculaOferta.MatriculaTurma.Count == 0)
                    {
                        matriculaOferta.MatriculaTurma.Add(matriculaTurma);
                    }
                    else
                    {
                        matriculaOferta.MatriculaTurma[0] = matriculaTurma;
                    }

                    manterMatriculaOferta.AtualizarMatriculaOferta(matriculaOferta, false);


                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso,
                                                 string.Format("O usuário '{0}' foi matriculado na turma '{1}'",
                                                               matriculaOferta.Usuario.Nome, matriculaTurma.Turma.Nome));
                }
            }
        }
Esempio n. 16
0
        protected void btnSimModalConfirmacaoStatusInscrito_OnClick(object sender, EventArgs e)
        {
            try
            {
                if (!string.IsNullOrEmpty(hdfModalConfirmacaoStatusInscritoIdMatriculaTurma.Value))
                {
                    var manterMatriculaTurma = new ManterMatriculaTurma();
                    var idMatriculaTurma     = Convert.ToInt32(hdfModalConfirmacaoStatusInscritoIdMatriculaTurma.Value);
                    var matriculaTurma       = manterMatriculaTurma.ObterMatriculaTurmaPorId(idMatriculaTurma);
                    if (matriculaTurma != null)
                    {
                        matriculaTurma.DataTermino = null;

                        manterMatriculaTurma.Salvar(matriculaTurma);

                        var manterMatriculaOferta = new ManterMatriculaOferta();
                        var matriculaOferta       =
                            manterMatriculaOferta.ObterMatriculaOfertaPorID(matriculaTurma.MatriculaOferta.ID);

                        AtualizarStatusDaOferta(enumStatusMatricula.Inscrito, matriculaOferta, ref manterMatriculaOferta);

                        WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso,
                                                     "O Status da Matrícula da Turma foi Atualizado com Sucesso !");

                        consultarMatriculasUsuario();
                        AtualizarStatusUsuarioTurma(matriculaTurma);
                    }
                }

                OcultarModalConfirmacaoStatusInscrito();
            }
            catch (PoliticaConsequenciaException ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
            }
            catch (AcademicoException ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
            }
        }
Esempio n. 17
0
        private void SalvarMatriculaOferta(ManterMatriculaOferta manterMatriculaOferta, MatriculaOferta matriculaOferta,
                                           bool verificarPoliticaDeConsequencia = true)
        {
            manterMatriculaOferta.IncluirMatriculaOferta(matriculaOferta, verificarPoliticaDeConsequencia);

            var matriculaTurma = AdicionaOfertEmMatriculaTurma(matriculaOferta);

            if (matriculaOferta.MatriculaTurma == null)
            {
                matriculaOferta.MatriculaTurma = new List <MatriculaTurma>();
            }
            matriculaOferta.MatriculaTurma.Add(matriculaTurma);

            //Dispara o evento informando que a matricula em uma oferta foi realizada
            if (MatriculouAlunoEmUmaOferta == null)
            {
                return;
            }
            //Obtem as informações da matricula Oferta (inclusive a lista de turmas da oferta)
            matriculaOferta = manterMatriculaOferta.ObterInformacoesDaMatricula(matriculaOferta.ID);
            MatriculouAlunoEmUmaOferta(this, new MatricularAlunoEmUmaOfertaEventArgs(matriculaOferta));
        }
Esempio n. 18
0
        protected void btnEnviar_Click(object sender, EventArgs e)
        {
            //this.SetarAcaoDaTela(enumAcaoTelaMatriculaOferta.NovaMatricula);
            var manterUsuario = new ManterUsuario();
            var usuarioLogado = manterUsuario.ObterUsuarioLogado();

            try
            {
                if (string.IsNullOrEmpty(ddlTurma.SelectedValue) || int.Parse(ddlTurma.SelectedValue) <= 0)
                {
                    throw new AcademicoException("Selecione uma turma para alterar a inscrição");
                }

                if (string.IsNullOrEmpty(ddlStatus.SelectedValue) || int.Parse(ddlStatus.SelectedValue) <= 0)
                {
                    throw new AcademicoException("Selecione um status");
                }

                var dtDataMatricula = DateTime.Now;
                var dtDataConclusao = DateTime.Now;

                if (IsAdminOrGestorUc && !string.IsNullOrEmpty(txtDataInscricao.Text))
                {
                    try
                    {
                        dtDataMatricula = Convert.ToDateTime(txtDataInscricao.Text);
                    }
                    catch
                    {
                        WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Data de Matrícula inválida.");
                        return;
                    }
                    try
                    {
                        dtDataConclusao = Convert.ToDateTime(txtDataConclusao.Text);
                    }
                    catch
                    {
                        WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Data de Conclusão inválida.");
                        return;
                    }
                }

                var manterTurma = new ManterTurma();

                if (!usuarioLogado.IsAdministrador())
                {
                    var matriculaOferta       = this.ObterObjetoMatriculaOferta();
                    var manterMatriculaOferta = new ManterMatriculaOferta();

                    var idOferta          = matriculaOferta.Oferta.ID;
                    var cpf               = matriculaOferta.Usuario.CPF;
                    var idStatusMatricula = ddlStatus.SelectedIndex > 0 ? int.Parse(ddlStatus.SelectedValue) : 0;
                    var idTurma           = ddlTurma.SelectedIndex > 0 ? int.Parse(ddlTurma.SelectedValue) : 0;

                    new ManterMatriculaOfertaService().MatriculaSolucaoEducacionalGestorUC(idOferta, cpf,
                                                                                           idStatusMatricula, idTurma, usuarioLogado.CPF);

                    //Dispara o evento informando que a matricula em uma oferta foi realizada
                    if (MatriculouAlunoEmUmaOferta == null)
                    {
                        return;
                    }
                    var mo = manterMatriculaOferta.ObterPorUsuarioESolucaoEducacional(matriculaOferta.Usuario.ID,
                                                                                      matriculaOferta.Oferta.SolucaoEducacional.ID);

                    if (mo != null && mo.ToList().Any())
                    {
                        matriculaOferta = mo.FirstOrDefault();
                        if (matriculaOferta == null)
                        {
                            return;
                        }
                        //Obtem as informações da matricula Oferta (inclusive a lista de turmas da oferta)
                        matriculaOferta = manterMatriculaOferta.ObterInformacoesDaMatricula(matriculaOferta.ID);
                    }

                    AdicionaOfertEmMatriculaTurma(matriculaOferta);

                    MatriculouAlunoEmUmaOferta(this, new MatricularAlunoEmUmaOfertaEventArgs(matriculaOferta));
                    ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "myscript",
                                                        " $('#EdicaoNivel, #modal-background').removeClass('active');", true);

                    LimparCamposMatriculaAluno();

                    //Cadastrar Solucao Educacional com o SAS
                    var manterSEService = new ManterSolucaoEducacionalService();

                    if (matriculaOferta.Oferta.SolucaoEducacional.IntegracaoComSAS)
                    {
                        manterSEService.CadastrarSAS(matriculaOferta.Usuario, new BP.integracaoSAS.TreinamentoSasClient());
                    }

                    //Matricular Aluno no Moodle
                    manterSEService.MatricularAlunoMoodle(matriculaOferta.Usuario, matriculaOferta.Oferta);

                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "Aluno cadastrado com sucesso.");
                }
                else
                {
                    if (!string.IsNullOrEmpty(txtDataInscricao.Text))
                    {
                        var idTurma = ddlTurma.SelectedIndex > 0 ? int.Parse(ddlTurma.SelectedValue) : 0;
                        var turma   = manterTurma.ObterTurmaPorID(idTurma);

                        if (turma == null)
                        {
                            WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Turma não encontrada.");
                            return;
                        }
                        var dataValida = turma.Oferta.DataInicioInscricoes.HasValue &&
                                         turma.Oferta.DataFimInscricoes.HasValue &&
                                         dtDataMatricula.Date.Between(turma.Oferta.DataInicioInscricoes.Value.Date,
                                                                      turma.Oferta.DataFimInscricoes.Value.Date);

                        if (!dataValida)
                        {
                            WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro,
                                                         turma.Oferta.DataInicioInscricoes.HasValue && turma.Oferta.DataFimInscricoes.HasValue
                                    ? "Data de Matrícula deve ser entre " +
                                                         turma.Oferta.DataInicioInscricoes.Value.Date.ToString("dd/MM/yyyy") + " e " +
                                                         turma.Oferta.DataFimInscricoes.Value.Date.ToString("dd/MM/yyyy")
                                    : "Data de Matrícula inválida.");
                            return;
                        }

                        var dataValidaConclusao = dtDataConclusao.Date >= turma.DataInicio;

                        if (!dataValidaConclusao)
                        {
                            WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro,
                                                         "Data de Conclusão deve ser maior ou igual à: " + turma.DataInicio.ToString("dd/MM/yyyy"));
                            return;
                        }
                    }

                    var matriculaOferta       = this.ObterObjetoMatriculaOferta();
                    var manterMatriculaOferta = new ManterMatriculaOferta();
                    if (matriculaOferta.Oferta != null)
                    {
                        if (
                            matriculaOferta.Oferta.ListaMatriculaOferta.Any(
                                x =>
                                x.Usuario.ID == matriculaOferta.Usuario.ID &&
                                (x.StatusMatricula == enumStatusMatricula.Inscrito ||
                                 x.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno)))
                        {
                            throw new AcademicoException("Usuário já inscrito nesta oferta");
                        }
                    }

                    // Verificar permissao de matricula de acordo com as regras de permissão da Oferta.
                    if (matriculaOferta.Oferta != null &&
                        !matriculaOferta.Oferta.UsuarioPossuiPermissao(matriculaOferta.Usuario))
                    {
                        throw new AcademicoException("Usuário não possui permissão para essa oferta");
                    }

                    if (!divDataInscricao.Visible)
                    {
                        (new ManterMatriculaOferta()).VerificarPoliticaDeConsequencia(matriculaOferta);
                    }

                    SalvarMatriculaOferta(manterMatriculaOferta, matriculaOferta);

                    ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "myscript",
                                                        " $('#EdicaoNivel, #modal-background').removeClass('active');", true);

                    LimparCamposMatriculaAluno();

                    //Cadastrar Solucao Educacional com o SAS
                    var manterSEService = new ManterSolucaoEducacionalService();

                    if (matriculaOferta.Oferta.SolucaoEducacional.IntegracaoComSAS)
                    {
                        manterSEService.CadastrarSAS(matriculaOferta.Usuario, new BP.integracaoSAS.TreinamentoSasClient());
                    }

                    //Matricular Aluno no Moodle
                    manterSEService.MatricularAlunoMoodle(matriculaOferta.Usuario, matriculaOferta.Oferta);

                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "Aluno cadastrado com sucesso.");
                }
            }
            catch (AcademicoException ex)
            {
                // Lógica para alteração de status quando o usuário for administrador ou gestor uc
                if (LupaUsuario.SelectedUser != null && (usuarioLogado.IsAdministrador() || usuarioLogado.IsGestor()))
                {
                    try
                    {
                        var matriculaOferta = ObterObjetoMatriculaOferta();


                        //Status
                        if (ddlStatus.SelectedItem != null && !string.IsNullOrWhiteSpace(ddlStatus.SelectedItem.Value))
                        {
                            if (ExisteComStatusRepetido((enumStatusMatricula)int.Parse(ddlStatus.SelectedItem.Value), matriculaOferta))
                            {
                                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Não é possível inserir uma nova matrícula com o mesmo status");
                                return;
                            }
                        }

                        lblAvisoModalConfirmacaoInscricao.Text = ex.Message;
                        pnlModalConfirmacaoInscricao.Visible   = true;
                        return;
                    }
                    catch
                    {
                    }
                }

                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
                return;
            }
            catch (PoliticaConsequenciaException ex)
            {
                if (!IsAdminOrGestorUc)
                {
                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
                    return;
                }

                lblAvisoModalConfirmacaoInscricao.Text = ex.Message;
                pnlModalConfirmacaoInscricao.Visible   = true;
            }
        }
        /// <summary>
        /// Verificar se o usuário informado pode se inscrever na solução informada.
        /// </summary>
        /// <param name="usuario">Usuário a ser matriculado.</param>
        /// <param name="solucaoId">ID da solução que o usuário deseja se matricular.</param>
        /// <param name="retorno">Objeto de retorno com DTO das informações de bloqueio de matrícula, caso necessário.</param>
        /// <returns>True: usuário não pode se inscrever por causa de algum bloqueio. False: usuário pode proceder com a inscrição.</returns>
        private static bool UsuarioPossuiBloqueioInscricao(Usuario usuario, int solucaoId,
                                                           ref DTODisponibilidadeSolucaoEducacional retorno)
        {
            // Verifica pendências
            if (PossuiQuestionarioPendente(usuario, ref retorno))
            {
                return(true);
            }

            // Verifica se o usuário está matriculado no limite de cursos simultâneos.
            if (UsuarioPossuiLimiteInscricoesSimultaneas(usuario.ID, ref retorno))
            {
                return(true);
            }

            // Obter todas as matrículas da Solução.
            var matriculasSe =
                new ManterMatriculaOferta().ObterPorUsuarioESolucaoEducacional(usuario.ID, solucaoId).ToList();

            // Verifica se o aluno já está matriculado na SE
            if (UsuarioPossuiMatriculaSolucao(matriculasSe, solucaoId, ref retorno))
            {
                return(true);
            }

            // Verifica se existe alguma matricula como Pendente de Confirmação.
            if (UsuarioPossuiPendenciaConfirmacao(matriculasSe, usuario, ref retorno))
            {
                return(true);
            }

            // Se chegou até aqui, pode retornar os dados do termo de aceite e da política de consequência.
            var solucaoEducacional = new ManterSolucaoEducacional().ObterSolucaoEducacionalPorId(solucaoId);

            // Verifica se o usuário tem permissão para se inscrever na SE.
            if (UsuarioPossuiPermissaoSolucao(usuario, solucaoEducacional, ref retorno))
            {
                return(true);
            }

            // MÉTODO IMPORTANTE!!!
            // Verificar bloqueio de acordo com as políticas de consequência.
            if (UsuarioPossuiBloqueioPoliticaDeConsequencia(usuario.ID, solucaoId, ref retorno))
            {
                return(true);
            }

            // Sse o aluno estiver inscrito em algum programa, verifica se existe algum pré-requisito não cursado.
            if (UsuarioPossuiPendenciaCapacitacaoPrograma(solucaoId, usuario, ref retorno))
            {
                return(true);
            }

            if (solucaoEducacional.TermoAceite != null)
            {
                retorno.NomeTermoAceite           = solucaoEducacional.TermoAceite.Nome;
                retorno.TextoTermoAceite          = solucaoEducacional.TermoAceite.Texto;
                retorno.TextoPoliticaConsequencia = solucaoEducacional.TermoAceite.PoliticaConsequencia;
            }

            // Verifica se a Solução está Inativa.
            if (solucaoEducacional.Ativo == false)
            {
                retorno.TextoDisponibilidade = "Solução Educacional não está ativa no momento";
                return(true);
            }

            return(false);
        }
        public DTOCapacitacao AprovacoesSolucoesEducacionais(MatriculaCapacitacao matriculaCapacitacao, int pIdUsuario)
        {
            DTOCapacitacao dtoCapacitacao = new DTOCapacitacao
            {
                NomeCapacitacao = matriculaCapacitacao.Capacitacao.Nome,
                idMatricula     = matriculaCapacitacao.ID,
                DataInicio      = matriculaCapacitacao.DataInicio.ToString("dd/MM/yyyy"),
                DataFim         = matriculaCapacitacao.DataFim.HasValue ? matriculaCapacitacao.DataFim.Value.ToString("dd/MM/yyyy") : ""
            };

            var bmMatricula = new ManterMatriculaOferta();
            ConsultarMeusCursos ConsultaMeusCursos = new ConsultarMeusCursos();

            int totalAprovacoes = 0;
            int totalSolEdu     = 0;

            var manterPreRequisito = new ManterModuloPreRequisito();

            foreach (var modulo in matriculaCapacitacao.Capacitacao.ListaModulos.Distinct())
            {
                DTOModulo dtoModulo = new DTOModulo {
                    ID         = modulo.ID,
                    Nome       = modulo.Nome,
                    Descricao  = modulo.Descricao,
                    DataInicio = modulo.DataInicio.ToString("dd/MM/yyyy"),
                    DataFim    = modulo.DataFim.HasValue ? modulo.DataFim.Value.ToString("dd/MM/yyyy") : ""
                };
                var lsSolucoesModulo    = modulo.ListaSolucaoEducacional.Distinct();
                var totalAprovadoModulo = 0;
                foreach (var solucao in lsSolucoesModulo)
                {
                    var aprovado = bmMatricula.AprovacaoPorUsuarioESolucaoEducacional(pIdUsuario, solucao.SolucaoEducacional.ID);

                    if (aprovado)
                    {
                        totalAprovacoes++;
                        totalAprovadoModulo++;
                    }

                    var matOfertas = bmMatricula.ObterPorUsuarioESolucaoEducacional(pIdUsuario, solucao.SolucaoEducacional.ID).ToList();

                    var meusCursos = new List <DTOItemMeusCursos>();

                    // Se tiver Status inscrito ou pendente de confirmação segue o fluxo normal de matrículas em oferta
                    if (matOfertas.Any(x => (x.StatusMatricula == enumStatusMatricula.Inscrito || x.StatusMatricula == enumStatusMatricula.PendenteConfirmacaoAluno)))
                    {
                        ConsultaMeusCursos.PreencherDTOComInformacoesDaMatriculaOferta(meusCursos, matOfertas);

                        //dtoModulo.SolucoesModulo.Add(new DTOItemMeusCursos { Nome = solucao.SolucaoEducacional.Nome, Concluido = aprovado, IDNode = solucao.SolucaoEducacional.IdNode });
                        foreach (var curso in meusCursos)
                        {
                            dtoModulo.SolucoesModulo.Add(curso);
                        }
                    }
                    // Se não tiver inscrito escreve as informações básicas
                    else
                    {
                        DTOItemMeusCursos dtoItemMeusCursos = new DTOItemMeusCursos();
                        dtoItemMeusCursos.ID          = solucao.SolucaoEducacional.ID;
                        dtoItemMeusCursos.NomeSolucao = solucao.SolucaoEducacional.Nome;
                        dtoItemMeusCursos.Fornecedor  = solucao.SolucaoEducacional.Fornecedor.Nome;

                        if (aprovado)
                        {
                            dtoItemMeusCursos.SituacaoID = 9;
                            dtoItemMeusCursos.Situacao   = "Aprovado";
                        }
                        else
                        {
                            dtoItemMeusCursos.SituacaoID = 0;
                            dtoItemMeusCursos.Situacao   = "Você não está inscrito nesse curso";
                        }

                        dtoItemMeusCursos.IDChaveExterna = solucao.SolucaoEducacional.IDChaveExterna;
                        dtoItemMeusCursos.IDNode         = solucao.SolucaoEducacional.IdNode;

                        dtoModulo.SolucoesModulo.Add(dtoItemMeusCursos);
                    }
                }
                var totalSeMod = modulo.ListaSolucaoEducacional.Count();
                dtoModulo.PorcentagemConclusaoModulo = (int)(Math.Round((double)totalAprovadoModulo / (double)totalSeMod, 2) * 100);
                dtoModulo.TextoConclusaoModulo       = totalAprovadoModulo.ToString() + "/" + totalSeMod.ToString();
                // Verificar pré requisitos do módulo
                dtoModulo.PreRequisitoPendente = manterPreRequisito.VerificarPreRequisitoPendente(modulo, pIdUsuario);
                totalSolEdu += totalSeMod;

                // Insere o Módulo no DTO
                dtoCapacitacao.ModulosCapacitacao.Add(dtoModulo);
            }

            // CAPACITAÇÕES
            int diasCancelamento = int.Parse(ConfiguracaoSistemaUtil.ObterInformacoes(enumConfiguracaoSistema.DiasCancelamentoCurso).Registro.ToString());

            bool habilitaCancelamento;

            if (matriculaCapacitacao.Capacitacao.PermiteCancelarMatricula && matriculaCapacitacao.DataInicio.Date.AddDays(diasCancelamento) >= DateTime.Now)
            {
                habilitaCancelamento = true;
            }
            else
            {
                habilitaCancelamento = false;
            }

            int percentage = 0;

            // Se não tiver soluções disponíveis ou se não tiver feito nada retorna 0
            if (totalAprovacoes != 0 && totalSolEdu != 0)
            {
                percentage = (int)(Math.Round((double)totalAprovacoes / (double)totalSolEdu, 2) * 100);
            }

            // Insere o resto dos dados da capacitação
            dtoCapacitacao.PorcentagemConclusaoCapacitacao = percentage;
            dtoCapacitacao.TextoConclusaoCapacitacao       = totalAprovacoes.ToString() + "/" + totalSolEdu.ToString();
            dtoCapacitacao.HabilitaCancelamento            = habilitaCancelamento;

            return(dtoCapacitacao);
        }
Esempio n. 21
0
        private void ValidarAvaliacao(bool aprovar)
        {
            try
            {
                var turma = ObterTurma();

                var usuarioLogado = new ManterUsuario().ObterUsuarioLogado();

                if (UsuarioPodeValidarAvaliacao(turma, usuarioLogado))
                {
                    var avaliacao = turma.Avaliacoes.FirstOrDefault();

                    if (avaliacao != null)
                    {
                        var manterMatriculaOferta = new ManterMatriculaOferta();
                        var manterAvaliacao       = new ManterAvaliacao();

                        var emailsAlunos = new List <string>();

                        // Alterar status das matrículas.
                        foreach (var respostaId in avaliacao.Respostas.Where(x => x.Questao.Tipo == enumTipoQuestao.Resultado).Select(x => x.ID))
                        {
                            // Busca a resposta denovo do banco pois o NHibernate tá pirando com o Lazy.
                            var resposta = manterAvaliacao.ObterQuestaoRespostaPorId(respostaId);

                            var matricula = resposta.MatriculaTurma.MatriculaOferta;

                            // Adicionar emails para envio posterior.
                            if (aprovar && !string.IsNullOrWhiteSpace(matricula.Usuario.Email))
                            {
                                emailsAlunos.Add(matricula.Usuario.Email);
                            }

                            if (resposta.StatusMatricula != null)
                            {
                                matricula.StatusMatricula = (enumStatusMatricula)resposta.StatusMatricula.ID;

                                manterMatriculaOferta.Salvar(matricula);
                            }
                        }

                        // Mandar e-mail aos alunos caso a avaliação seja aprovada.
                        if (aprovar)
                        {
                            var manterEmail = new ManterEmail();

                            var template = new ManterTemplate().ObterTemplatePorID((int)enumTemplate.ResultadoAvaliacao);

                            var thread = new Thread(() =>
                            {
                                foreach (var email in emailsAlunos)
                                {
                                    manterEmail.EnviarEmail(email, template.Assunto ?? template.DescricaoTemplate, template.TextoTemplate);
                                }
                            })
                            {
                                IsBackground = true
                            };

                            thread.Start();
                        }

                        // Finalizar status da avaliação e setar o usuário que analisou.
                        avaliacao.Status   = aprovar ? enumStatusAvaliacao.Aprovada : enumStatusAvaliacao.AguardandoResposta;
                        avaliacao.Analista = usuarioLogado;

                        manterAvaliacao.Salvar(avaliacao);

                        WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso,
                                                     "Avaliação " + (!aprovar ? "não" : "") + " aprovada com sucesso",
                                                     "GerenciamentoMatricula.aspx?oferta=" + turma.Oferta.ID);
                        return;
                    }
                }
            }
            catch (Exception)
            {
                // ignored.
            }

            WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro,
                                         "Houve um erro na validação da avaliação. Tente novamente.");
        }
Esempio n. 22
0
        private void EfetuarMatriculas(IList <SolucaoEducacionalObrigatoria> solucoesObrigatorias, IQueryable <Usuario> usuariosTodosNiveis)
        {
            // Obtém somente os campos que serão utilizados abaixo;
            var usuarioLogado = new ManterUsuario().ObterUsuarioLogado();

            var manterMatriculaOferta = new ManterMatriculaOferta();
            var manterMatriculaTurma  = new ManterMatriculaTurma();

            // Matricular usuário.
            var thread = new Thread(() =>
            {
                var currentThread = Thread.CurrentThread;

                try
                {
                    if (solucoesObrigatorias != null)
                    {
                        foreach (var obrigatorio in solucoesObrigatorias)
                        {
                            try
                            {
                                // Obter usuários do nível ocupacional da solução obrigatória.
                                var listaUsuariosNivelOcupacional =
                                    usuariosTodosNiveis.Where(x => x.NivelOcupacional.ID == obrigatorio.NivelOcupacional.ID);

                                // Obter somente os usuários que NÃO estão matriculados na solução.
                                listaUsuariosNivelOcupacional =
                                    listaUsuariosNivelOcupacional.Where(
                                        x =>
                                        x.ListaMatriculaOferta.All(
                                            y => y.Oferta.SolucaoEducacional.ID != obrigatorio.SolucaoEducacional.ID));

                                var oferta =
                                    obrigatorio.SolucaoEducacional.ListaOferta.FirstOrDefault(
                                        x =>
                                        Helpers.Util.ObterVigente(x.DataInicioInscricoes, x.DataFimInscricoes) &&
                                        x.ListaTurma.Any(t => Helpers.Util.ObterVigente(t.DataInicio, t.DataFinal)));

                                // Caso não exista oferta vigente com turma vigente, pula a solução.
                                if (oferta == null)
                                {
                                    currentThread.Abort();
                                }

                                // Seleciona somente os campos necessários.
                                listaUsuariosNivelOcupacional = listaUsuariosNivelOcupacional.Select(x => new Usuario
                                {
                                    ID = x.ID,
                                    UF = x.UF,
                                    NivelOcupacional     = x.NivelOcupacional,
                                    ListaMatriculaOferta = x.ListaMatriculaOferta
                                });

                                foreach (var usuario in listaUsuariosNivelOcupacional)
                                {
                                    try
                                    {
                                        EfetuarMatricula(usuarioLogado, oferta, usuario, manterMatriculaOferta,
                                                         manterMatriculaTurma);
                                    }
                                    catch (Exception)
                                    {
                                        // ignored.
                                    }
                                }
                            }
                            catch (Exception)
                            {
                                // ignored.
                            }
                        }
                    }

                    currentThread.Abort();
                }
                catch (ThreadAbortException)
                {
                    // ignored
                }
            });

            thread.IsBackground = true;

            thread.Start();
        }
Esempio n. 23
0
        private void EfetuarMatricula(Usuario usuarioLogado, Dominio.Classes.Oferta oferta, Usuario usuario, ManterMatriculaOferta manterMatriculaOferta, ManterMatriculaTurma manterMatriculaTurma)
        {
            var novaMatriculaOferta = new MatriculaOferta
            {
                Auditoria       = new Auditoria(usuarioLogado.CPF),
                Oferta          = oferta,
                Usuario         = usuario,
                StatusMatricula = enumStatusMatricula.Inscrito,
                UF = usuario.UF,
                NivelOcupacional = usuario.NivelOcupacional,
                DataSolicitacao  = DateTime.Today
            };

            manterMatriculaOferta.Salvar(novaMatriculaOferta);

            var novaMatriculaTurma = new MatriculaTurma
            {
                Auditoria = new Auditoria(usuarioLogado.CPF),
                Turma     =
                    oferta.ListaTurma.FirstOrDefault(t => Helpers.Util.ObterVigente(t.DataInicio, t.DataFinal)),
                MatriculaOferta = novaMatriculaOferta,
                DataMatricula   = DateTime.Today
            };

            novaMatriculaTurma.DataLimite = novaMatriculaTurma.CalcularDataLimite();

            manterMatriculaTurma.Salvar(novaMatriculaTurma);
        }
Esempio n. 24
0
        protected void ddlStatusOferta_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (InModoDeAvaliacao)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Não é possível alterar o Status desta matrícula diretamente. Ela precisa passar pela avaliação de um Consultor Educacional e ser aprovada por um Gestor.");
                return;
            }

            var comboStatusOferta = (DropDownList)sender;

            if (comboStatusOferta != null && comboStatusOferta.SelectedItem != null &&
                !string.IsNullOrWhiteSpace(comboStatusOferta.SelectedItem.Value))
            {
                try
                {
                    //Obtém a linha da grid onde a dropdownlist (combo) de oferta, está contida
                    var linhadaGrid = (GridViewRow)comboStatusOferta.NamingContainer;

                    if (linhadaGrid == null)
                    {
                        return;
                    }

                    var ddlStatusOferta = (DropDownList)linhadaGrid.FindControl("ddlStatusOferta");

                    if (ddlStatusOferta == null)
                    {
                        return;
                    }

                    var hdfIdMatriculaOferta  = (HiddenField)linhadaGrid.FindControl("hdfIdMatriculaOferta");
                    var manterMatriculaOferta = new ManterMatriculaOferta();
                    var ddlTurma = (DropDownList)linhadaGrid.FindControl("ddlTurma");

                    var statusMatriculaOferta = (enumStatusMatricula)Enum.Parse(typeof(enumStatusMatricula), ddlStatusOferta.SelectedItem.Value);

                    int IdMatriculaOferta;
                    classes.MatriculaOferta matriculaOferta = null;
                    if (int.TryParse(hdfIdMatriculaOferta.Value, out IdMatriculaOferta))
                    {
                        matriculaOferta = manterMatriculaOferta.ObterMatriculaOfertaPorID(IdMatriculaOferta);
                    }

                    var usuarioLogado  = new ManterUsuario().ObterUsuarioLogado();
                    var matriculaTurma = matriculaOferta.MatriculaTurma.FirstOrDefault();

                    if (statusMatriculaOferta.Equals(enumStatusMatricula.CanceladoGestor) && !usuarioLogado.IsGestor())
                    {
                        throw new AcademicoException("Apenas o gestor UC pode alterar para este perfil");
                    }

                    if (statusMatriculaOferta.Equals(enumStatusMatricula.CanceladoAdm) && !usuarioLogado.IsAdministrador())
                    {
                        throw new AcademicoException("Apenas o Administrador pode alterar para este perfil");
                    }

                    if (statusMatriculaOferta.Equals(enumStatusMatricula.Inscrito))
                    {
                        if (string.IsNullOrEmpty(ddlTurma.SelectedValue) || int.Parse(ddlTurma.SelectedValue) <= 0)
                        {
                            throw new AcademicoException("Selecione uma turma para alterar a inscrição");
                        }

                        try
                        {
                            new ManterSolucaoEducacional().ValidarPreRequisitosDaMatricula(matriculaOferta);
                        }
                        catch (Exception)
                        {
                            AtualizarStatusDaOferta(enumStatusMatricula.Inscrito, matriculaOferta, ref manterMatriculaOferta);
                            throw;
                        }
                    }

                    if (statusMatriculaOferta.Equals(enumStatusMatricula.CanceladoAluno))
                    {
                        //O usuário do admin, pode ver o status do Cancelado/Aluno, mas nunca pode setar esse status
                        WebFormHelper.ExibirMensagem(enumTipoMensagem.Atencao,
                                                     "Apenas o aluno pode atribuir o status de cancelado pelo aluno");
                    }
                    else
                    {
                        if (matriculaTurma == null)
                        {
                            WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "O aluno precisa estar vinculado a uma turma.");
                            return;
                        }

                        if (matriculaOferta.StatusMatricula != enumStatusMatricula.Inscrito && statusMatriculaOferta == enumStatusMatricula.Inscrito)
                        {
                            ExibirModalConfirmacaoStatusInscrito(matriculaTurma);
                        }
                        else
                        {
                            ExibirModalDataConclusao(matriculaTurma, statusMatriculaOferta);
                        }
                    }

                    // Atualizar lista de status disponíveis, pois pode sofrer alteração caso haja
                    // o status de Cancelado\Turma, que possui um comportamento especial.
                    SetarListaComStatusDeMatricula(matriculaOferta);

                    // Trata a exibição da listagem de Status novamente, para manter os mesmos Status,
                    // com as mesmas formas.
                    TratarComboStatusOferta(ddlStatusOferta, matriculaOferta);
                }
                catch (AcademicoException ex)
                {
                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
                }
                catch
                {
                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Erro Interno no servidor.");
                }
            }
        }
Esempio n. 25
0
        public void SalvarQuestionario()
        {
            try
            {
                QuestionarioParticipacao questionarioParticipacao;

                if (!string.IsNullOrWhiteSpace(hdnIdQuestionarioParticipacao.Value))
                {
                    questionarioParticipacao = new ManterQuestionarioParticipacao().ObterQuestionarioParticipacaoPorId(int.Parse(hdnIdQuestionarioParticipacao.Value));
                }
                else
                {
                    var questionario = new ManterQuestionario().ObterQuestionarioPorID(int.Parse(hdnIdQuestionario.Value));

                    var usuarioLogado = new ManterUsuario().ObterUsuarioLogado();

                    questionarioParticipacao = new QuestionarioParticipacao
                    {
                        Questionario               = questionario,
                        DataGeracao                = DateTime.Now,
                        Usuario                    = usuarioLogado,
                        DataParticipacao           = DateTime.Now,
                        TipoQuestionarioAssociacao = new ManterTipoQuestionarioAssociacao().ObterTipoQuestionarioAssociacaoPorID(5),
                        TextoEnunciadoPre          = questionario.TextoEnunciado,
                        Evolutivo                  = false,
                        NivelOcupacional           = new NivelOcupacional {
                            ID = usuarioLogado.NivelOcupacional.ID
                        },
                        Uf = new Uf {
                            ID = usuarioLogado.UF.ID
                        },
                        Turma = new Turma {
                            ID = int.Parse(hdnIdTurma.Value)
                        }
                    };
                }

                var listaItemQuestionarioParticipacao = new List <ItemQuestionarioParticipacao>();

                // Obter respostas dissertivas do questionário.
                foreach (Control row in rptQuestionario.Controls)
                {
                    var hdnIdItemQuestionario = (HiddenField)row.FindControl("hdnIdItemQuestionario");

                    if (hdnIdItemQuestionario == null)
                    {
                        throw new AcademicoException("Questionário mal formatado ou alterado, atualize a página e tente novamente.");
                    }

                    int idItemQuestionario;
                    int.TryParse(hdnIdItemQuestionario.Value, out idItemQuestionario);

                    var itemQuestionario = new ManterItemQuestionario().ObterItemQuestionarioPorID(idItemQuestionario);

                    if (itemQuestionario == null)
                    {
                        throw new AcademicoException("Questionário mal formatado ou alterado, atualize a página e tente novamente.");
                    }

                    var txtResposta = (TextBox)row.FindControl("txtResposta");

                    if (txtResposta == null)
                    {
                        throw new AcademicoException("Questionário mal formatado ou alterado, atualize a página e tente novamente.");
                    }

                    var itemQuestionarioParticipacao = Mapper.Map <ItemQuestionarioParticipacao>(itemQuestionario);

                    itemQuestionarioParticipacao.QuestionarioParticipacao = questionarioParticipacao;

                    if (itemQuestionarioParticipacao.TipoItemQuestionario.ID == (int)enumTipoItemQuestionario.Discursiva)
                    {
                        // Validação do campo em branco.
                        if (string.IsNullOrWhiteSpace(txtResposta.Text))
                        {
                            throw new AcademicoException(string.Format("A questão \"{0}\" é obrigatória",
                                                                       string.IsNullOrWhiteSpace(itemQuestionarioParticipacao.Ordem.ToString())
                                    ? itemQuestionarioParticipacao.Questao
                                    : itemQuestionarioParticipacao.Ordem.ToString()));
                        }

                        itemQuestionarioParticipacao.Resposta = txtResposta.Text;
                    }

                    listaItemQuestionarioParticipacao.Add(itemQuestionarioParticipacao);
                }

                questionarioParticipacao.ListaItemQuestionarioParticipacao = listaItemQuestionarioParticipacao;

                // Executar lógica para questionário de cancelamento.
                if (questionarioParticipacao.TipoQuestionarioAssociacao.ID == (int)enumTipoQuestionarioAssociacao.Cancelamento)
                {
                    var matriculasTurmasIds = hdnIdMatriculaTurma.Value.Split(',');

                    foreach (var matriculaIdString in matriculasTurmasIds)
                    {
                        int matriculaId;

                        if (int.TryParse(matriculaIdString, out matriculaId))
                        {
                            var matriculaTurma       = new MatriculaTurma();
                            var manterMatriculaTurma = new ManterMatriculaTurma();

                            if (matriculaId > 0)
                            {
                                matriculaTurma = manterMatriculaTurma.ObterMatriculaTurmaPorId(matriculaId);

                                // Caso seja Gestor, só altera a matrícula caso seja da sua UF.
                                if (matriculaTurma != null)
                                {
                                    questionarioParticipacao.Turma = matriculaTurma.Turma;
                                }
                            }

                            // Alterar Status da matrícula.
                            if (matriculaTurma != null && matriculaTurma.ID != 0)
                            {
                                var manterMatriculaOferta = new ManterMatriculaOferta();

                                var matriculaOferta = manterMatriculaOferta.ObterMatriculaOfertaPorID(matriculaTurma.MatriculaOferta.ID);

                                matriculaOferta.StatusMatricula = (enumStatusMatricula)int.Parse(hdnIdStatusMatricula.Value);

                                // Salvar Data de conclusão e nota final em lote
                                if ((!string.IsNullOrWhiteSpace(txtDataConclusao.Text) ||
                                     !string.IsNullOrWhiteSpace(hdnNotaFinal.Value)) &&
                                    matriculaOferta.Oferta.SolucaoEducacional.FormaAquisicao.Presencial)
                                {
                                    var dataConclusao = CommonHelper.TratarData(txtDataConclusao.Text,
                                                                                "Data Conclusão do lote");

                                    double?notaFinal = null;

                                    double n;

                                    if (double.TryParse(hdnNotaFinal.Value.Trim(), out n))
                                    {
                                        notaFinal = n;
                                    }

                                    foreach (var mt in matriculaOferta.MatriculaTurma)
                                    {
                                        if (dataConclusao.HasValue &&
                                            (!mt.Turma.DataFinal.HasValue || mt.Turma.DataFinal.Value >= dataConclusao))
                                        {
                                            mt.DataTermino = dataConclusao;
                                        }

                                        if (notaFinal.HasValue)
                                        {
                                            mt.MediaFinal = notaFinal;
                                        }
                                    }
                                }

                                manterMatriculaOferta.AtualizarMatriculaOferta(matriculaOferta, false);

                                matriculaTurma.DataTermino = !string.IsNullOrEmpty(txtDataConclusao.Text) ? DateTime.Parse(txtDataConclusao.Text) : DateTime.Now;

                                manterMatriculaTurma.AlterarMatriculaTurma(matriculaTurma);
                            }
                        }
                    }
                }

                // Salvar participação no questionário.
                new ManterQuestionarioParticipacao().Salvar(questionarioParticipacao);

                WebFormHelper.ExibirMensagem(enumTipoMensagem.Sucesso, "Questionário respondido com Sucesso.");
            }
            catch (AcademicoException ex)
            {
                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
            }
        }
Esempio n. 26
0
        protected void btnVerificar_Click(object sender, EventArgs e)
        {
            if (Page.IsValid)
            {
                try
                {
                    var codigo = txtCodigo.Text.Trim();

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

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

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

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

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

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

                            var buscaMatOferta = manterMatriculaOferta.ObterPorCodigoCertificado(codigo);

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

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

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

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

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

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

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

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

                            if (objetoCertificado.DataGeracao != null)
                            {
                                lblDataGeracao.Text = objetoCertificado.DataGeracao;
                            }
                        }
                        else
                        {
                            LimparPnlResultado();
                            pnlNaoEncontrado.Visible = true;
                            lblNaoEncontrado.Text    = "O código informado não pertence a nenhum certificado válido.";
                        }
                    }
                    else
                    {
                        LimparPnlNaoEncontrado();
                        LimparPnlResultado();
                        WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Informe o código do certificado.");
                    }
                }
                catch (AcademicoException ex)
                {
                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, ex.Message);
                }
            }
        }