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