Exemple #1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                int           turmaId;
                classes.Turma turma;

                // Já verifica se o Id existe, está correto e existe no banco numa lapada só.
                // Aqui é assim, sou dessas.
                if (Request["Id"] != null && (int.TryParse(Request["Id"], out turmaId)) &&
                    (turma = new ManterTurma().ObterTurmaPorID(turmaId)) != null)
                {
                    var usuarioLogado = new ManterUsuario().ObterUsuarioLogado();

                    if (usuarioLogado.IsAdministrador())
                    {
                        Response.Redirect("GerenciamentoMatricula.aspx?oferta=" + turma.Oferta.ID, true);
                        return;
                    }

                    if (turma.ConsultorEducacional == null)
                    {
                        WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro,
                                                     "A turma selecionada não possui Consultor Educacional.",
                                                     "GerenciamentoMatricula.aspx?oferta=" + turma.Oferta.ID);
                        return;
                    }

                    var avaliacao = turma.Avaliacoes.FirstOrDefault();

                    if (avaliacao != null)
                    {
                        switch (avaliacao.Status)
                        {
                        case enumStatusAvaliacao.AguardandoResposta:
                            // Gestor só pode visualizar essa tela caso a avaliação exista e já tenha sido respondida pelo Consultor Educacional.
                            if (usuarioLogado.IsGestor())
                            {
                                ExibirMensagemAguardandoAvaliacao(turmaId);
                                return;
                            }

                            if (turma.ConsultorEducacional.ID != usuarioLogado.ID)
                            {
                                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro,
                                                             "Apenas o Consultor Educacional da turma pode avaliar a turma.",
                                                             "GerenciamentoMatricula.aspx?oferta=" + turma.Oferta.ID);
                            }

                            break;

                        case enumStatusAvaliacao.AguardandoGestor:
                            if (usuarioLogado.IsGestor())
                            {
                                if (usuarioLogado.UF.ID == turma.ConsultorEducacional.UF.ID)
                                {
                                    btnEnviarAvaliacao.Visible = false;
                                    btnSalvar.Visible          = false;

                                    btnAprovar.Visible  = true;
                                    btnReprovar.Visible = true;

                                    BloquearCampos = true;
                                    break;
                                }

                                WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro,
                                                             "Apenas um gestor de " + turma.ConsultorEducacional.UF.Nome +
                                                             " pode validar a avaliação desta turma.",
                                                             "GerenciamentoMatricula.aspx?oferta=" + turma.Oferta.ID);
                                return;
                            }

                            if (usuarioLogado.IsConsultorEducacional())
                            {
                                BloquearCampos = true;

                                // Bloqueia os campos, pois está aguardando análise do gestor.
                                btnEnviarAvaliacao.Enabled = false;
                                btnSalvar.Enabled          = false;
                                btnEnviarAvaliacao.Text    = "Aguardando avaliação do gestor";

                                break;
                            }

                            WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro,
                                                         "Apenas o Consultor Educacional da turma pode avaliar a turma.",
                                                         "GerenciamentoMatricula.aspx?oferta=" + turma.Oferta.ID);

                            return;

                        case enumStatusAvaliacao.Aprovada:
                            BloquearCampos = true;
                            break;

                        default:
                            throw new ArgumentOutOfRangeException();
                        }
                    }
                    else
                    {
                        if (turma.ConsultorEducacional.ID != usuarioLogado.ID)
                        {
                            WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro,
                                                         "Apenas o Consultor Educacional da turma pode avaliar a turma.",
                                                         "GerenciamentoMatricula.aspx?oferta=" + turma.Oferta.ID);
                            return;
                        }

                        if (usuarioLogado.IsGestor())
                        {
                            ExibirMensagemAguardandoAvaliacao(turmaId);
                            return;
                        }
                    }

                    ltrSolucaoEducacional.Text = turma.Oferta.SolucaoEducacional.Nome;

                    var manterAvaliacao = new ManterAvaliacao();

                    var questoes = manterAvaliacao.ObterQuestoes().ToList();

                    QuantidadeQuestoes = questoes.Count();

                    Questoes = questoes;

                    // Chamar o método ObterStatusDisponiveis() porque ele tem um comportamento semelhante
                    // ao de um Singleton, e será usado posteriormente.
                    ObterStatusDisponiveis(turma.Oferta.SolucaoEducacional.CategoriaConteudo, true);

                    rptQuestoes.DataSource = questoes;
                    rptQuestoes.DataBind();

                    rptMatriculas.DataSource = turma.ListaMatriculas.OrderBy(x => x.MatriculaOferta.Usuario.Nome);
                    rptMatriculas.DataBind();
                }
                else
                {
                    WebFormHelper.ExibirMensagem(enumTipoMensagem.Erro, "Oferta inválida para avaliação. Tente novamente.",
                                                 "GerenciamentoMatricula.aspx");
                }
            }
        }