/// <summary> /// Carrega as avaliações no combo que estão liberadas de acordo com os eventos do calendário, /// e com os períodos ligados à disciplina. /// </summary> /// <param name="entityTurma">Entidade da turma</param> /// <param name="tud_id">Id da disciplina</param> public void CarregarAvaliacao(TUR_Turma entityTurma, long tud_id, int tpc_idFiltrar = -1, bool incluirPeriodoFinal = false, long doc_id = -1) { try { // Busca o evento ligado ao calendário, que seja do tipo definido // no parâmetro como de efetivação. List <ACA_Evento> listEvento = ACA_EventoBO.GetEntity_Efetivacao_List(entityTurma.cal_id, entityTurma.tur_id, __SessionWEB.__UsuarioWEB.Grupo.gru_id, __SessionWEB.__UsuarioWEB.Usuario.ent_id, tpc_idFiltrar, ApplicationWEB.AppMinutosCacheLongo, true, doc_id); if (entityTurma.fav_id <= 0) { __SessionWEB.PostMessages = UtilBO.GetErroMessage("É necessário selecionar uma turma que possua um formato de avaliação.", UtilBO.TipoMensagem.Alerta); Response.Redirect("~/Classe/Efetivacao/Busca.aspx", false); HttpContext.Current.ApplicationInstance.CompleteRequest(); } else { int valor = ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_EVENTO_EFETIVACAO_NOTAS, __SessionWEB.__UsuarioWEB.Usuario.ent_id); int valorRecuperacao = ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_EVENTO_EFETIVACAO_RECUPERACAO, __SessionWEB.__UsuarioWEB.Usuario.ent_id); int valorFinal = ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_EVENTO_EFETIVACAO_FINAL, __SessionWEB.__UsuarioWEB.Usuario.ent_id); int valorRecuperacaoFinal = ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_EVENTO_EFETIVACAO_RECUPERACAO_FINAL, __SessionWEB.__UsuarioWEB.Usuario.ent_id); // verifica se existe evento do tipo Efetivação Nota string listaTpcIdPeriodicaPeriodicaFinal = string.Empty; IEnumerable <ACA_Evento> dadoNota = (from ACA_Evento item in listEvento where item.tev_id == valor select item); // se existir, pega os tpc_id's List <ACA_Evento> lt = dadoNota.ToList(); if (lt.Count > 0) { var x = from ACA_Evento evt in listEvento where evt.tev_id == valor select evt.tpc_id; foreach (int tpc_id in x.ToList()) { if (string.IsNullOrEmpty(listaTpcIdPeriodicaPeriodicaFinal)) { listaTpcIdPeriodicaPeriodicaFinal += Convert.ToString(tpc_id); } else { listaTpcIdPeriodicaPeriodicaFinal += "," + Convert.ToString(tpc_id); } } } // verifica se existe evento do tipo efetivação recuperacao string listaTpcIdRecuperacao = string.Empty; IEnumerable <ACA_Evento> dadoRecuperacao = (from ACA_Evento item in listEvento where item.tev_id == valorRecuperacao select item); List <ACA_Evento> ltRe = dadoRecuperacao.ToList(); // se existir, pega os tpc_id's if (ltRe.Count > 0) { var x = from ACA_Evento evt in listEvento where evt.tev_id == valorRecuperacao select evt.tpc_id; foreach (int tpc_id in x.ToList()) { if (string.IsNullOrEmpty(listaTpcIdRecuperacao)) { listaTpcIdRecuperacao += Convert.ToString(tpc_id); } else { listaTpcIdRecuperacao += "," + Convert.ToString(tpc_id); } } } // verifica se existe evento do tipo efetivação final bool existeFinal = false; IEnumerable <ACA_Evento> dadoFinal = (from ACA_Evento item in listEvento where item.tev_id == valorFinal select item); List <ACA_Evento> ltFinal = dadoFinal.ToList(); // se existir, marca para trazer as avaliações do tipo final if (ltFinal.Count > 0) { existeFinal = true; } // verifica se existe evento do tipo recuperação final bool existeRecuperacaoFinal = false; IEnumerable <ACA_Evento> dadoRecuperacaoFinal = (from ACA_Evento item in listEvento where item.tev_id == valorRecuperacaoFinal select item); List <ACA_Evento> ltRecuperacaoFinal = dadoRecuperacaoFinal.ToList(); // se existir, marca para trazer as avaliações do tipo recuperação final if (ltRecuperacaoFinal.Count > 0) { existeRecuperacaoFinal = true; } DataTable dtAvaliacoes; // Se for turma eletiva do aluno, carrega apenas os períodos do calendário em que // a turma é oferecida if ((TUR_TurmaTipo)entityTurma.tur_tipo == TUR_TurmaTipo.EletivaAluno) { List <CadastroTurmaDisciplina> listaDisciplinas = TUR_TurmaDisciplinaBO.GetSelectCadastradosBy_Turma(entityTurma.tur_id); dtAvaliacoes = ACA_AvaliacaoBO.ConsultaPor_Periodo_Efetivacao_TurmaDisciplinaCalendario(entityTurma.tur_id, listaDisciplinas[0].entTurmaDisciplina.tud_id, entityTurma.fav_id, listaTpcIdPeriodicaPeriodicaFinal, listaTpcIdRecuperacao, existeFinal, true, true); if (tpc_idFiltrar > 0) { var eletivaFiltrada = (from DataRow dr in dtAvaliacoes.Rows where (tpc_idFiltrar == Convert.ToInt32(string.IsNullOrEmpty(dr["tpc_id"].ToString()) ? 0 : dr["tpc_id"])) select dr); dtAvaliacoes = eletivaFiltrada.Any() ? eletivaFiltrada.CopyToDataTable() : new DataTable(); } } else { dtAvaliacoes = ACA_AvaliacaoBO.ConsultaPor_Periodo_Efetivacao(entityTurma.tur_id, entityTurma.fav_id, tud_id, listaTpcIdPeriodicaPeriodicaFinal, listaTpcIdRecuperacao, existeFinal, existeRecuperacaoFinal, true, true, tpc_idFiltrar, ApplicationWEB.AppMinutosCacheLongo); } if (incluirPeriodoFinal) { if (tpc_idFiltrar > 0) { var eletivaFiltrada = (from DataRow dr in dtAvaliacoes.Rows where (tpc_idFiltrar == Convert.ToInt32(string.IsNullOrEmpty(dr["tpc_id"].ToString()) ? 0 : dr["tpc_id"])) select dr); dtAvaliacoes = eletivaFiltrada.Any() ? eletivaFiltrada.CopyToDataTable() : new DataTable(); } else { var eletivaFiltrada = (from DataRow dr in dtAvaliacoes.Rows where ((byte)dr["ava_tipo"] == (byte)AvaliacaoTipo.Final) select dr); dtAvaliacoes = eletivaFiltrada.Any() ? eletivaFiltrada.CopyToDataTable() : new DataTable(); } } var avaliacoes = (from DataRow dr in dtAvaliacoes.Rows let fechado = Convert.ToBoolean(dr["ava_tpc_fechado"]) let cap_dataInicio = Convert.ToDateTime(string.IsNullOrEmpty(dr["cap_dataInicio"].ToString()) ? new DateTime().ToString() : dr["cap_dataInicio"]) let tpc_id = Convert.ToInt32(string.IsNullOrEmpty(dr["tpc_id"].ToString()) ? 0 : dr["tpc_id"]) where (!(fechado && cap_dataInicio > DateTime.Now)) && ((VS_tpc_id == -1) || (tpc_id == VS_tpc_id)) select dr); dtAvaliacoes = avaliacoes.Any() ? avaliacoes.CopyToDataTable() : new DataTable(); ddlAvaliacao.Items.Clear(); ddlAvaliacao.DataTextField = "ava_tpc_nome"; ddlAvaliacao.DataSource = dtAvaliacoes; ddlAvaliacao.Items.Insert(0, new ListItem("-- Selecione uma avaliação --", "-1")); ddlAvaliacao.AppendDataBoundItems = true; ddlAvaliacao.DataBind(); //if (tpc_idSelecionar > 0) //{ // // Seleciona o tpc_id da avaliação relacionada. //} } } catch (ValidationException ex) { __SessionWEB.PostMessages = UtilBO.GetErroMessage(ex.Message, UtilBO.TipoMensagem.Alerta); Response.Redirect("~/Classe/Efetivacao/Busca.aspx", false); HttpContext.Current.ApplicationInstance.CompleteRequest(); } catch (Exception ex) { TrataErro(ex); } }
protected void _dgvTurma_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "Selecionar") { try { VS_cancelSelect = false; GridViewRow row = (GridViewRow)((LinkButton)e.CommandSource).NamingContainer; int index = row.RowIndex; _VS_tur_id = Convert.ToInt32(_dgvTurma.DataKeys[index].Values["tur_id"]); // Utilizado para verificar se é turma eletiva do aluno TUR_Turma tur = new TUR_Turma { tur_id = _VS_tur_id }; TUR_TurmaBO.GetEntity(tur); // verifica se existe evento de efetivacao ligado ao calendário da turma int cal_id = Convert.ToInt32(_dgvTurma.DataKeys[index].Values["cal_id"]); // Busca o evento ligado ao calendário, que seja do tipo definido // no parâmetro como de efetivação. List <ACA_Evento> listEvento = ACA_EventoBO.GetEntity_Efetivacao_List(cal_id, _VS_tur_id, __SessionWEB.__UsuarioWEB.Grupo.gru_id, __SessionWEB.__UsuarioWEB.Usuario.ent_id, ApplicationWEB.AppMinutosCacheLongo, true, __SessionWEB.__UsuarioWEB.Docente.doc_id); if (string.IsNullOrEmpty(_dgvTurma.DataKeys[index].Values["fav_id"].ToString())) { _lblMessage.Text = UtilBO.GetErroMessage("É necessário selecionar uma turma que possua um formato de avaliação.", UtilBO.TipoMensagem.Alerta); } else { _VS_fav_id = Convert.ToInt32(_dgvTurma.DataKeys[index].Values["fav_id"]); int valor = ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_EVENTO_EFETIVACAO_NOTAS, __SessionWEB.__UsuarioWEB.Usuario.ent_id); int valorRecuperacao = ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_EVENTO_EFETIVACAO_RECUPERACAO, __SessionWEB.__UsuarioWEB.Usuario.ent_id); int valorFinal = ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_EVENTO_EFETIVACAO_FINAL, __SessionWEB.__UsuarioWEB.Usuario.ent_id); int valorRecuperacaoFinal = ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_EVENTO_EFETIVACAO_RECUPERACAO_FINAL, __SessionWEB.__UsuarioWEB.Usuario.ent_id); // verifica se existe evento do tipo Efetivação Nota string listaTpcIdPeriodicaPeriodicaFinal = string.Empty; IEnumerable <ACA_Evento> dadoNota = (from ACA_Evento item in listEvento where item.tev_id == valor select item); // se existir, pega os tpc_id's List <ACA_Evento> lt = dadoNota.ToList(); if (lt.Count > 0) { var x = from ACA_Evento evt in listEvento where evt.tev_id == valor select evt.tpc_id; foreach (int tpc_id in x.ToList()) { if (string.IsNullOrEmpty(listaTpcIdPeriodicaPeriodicaFinal)) { listaTpcIdPeriodicaPeriodicaFinal += Convert.ToString(tpc_id); } else { listaTpcIdPeriodicaPeriodicaFinal += "," + Convert.ToString(tpc_id); } } } // verifica se existe evento do tipo efetivação recuperacao string listaTpcIdRecuperacao = string.Empty; IEnumerable <ACA_Evento> dadoRecuperacao = (from ACA_Evento item in listEvento where item.tev_id == valorRecuperacao select item); List <ACA_Evento> ltRe = dadoRecuperacao.ToList(); // se existir, pega os tpc_id's if (ltRe.Count > 0) { var x = from ACA_Evento evt in listEvento where evt.tev_id == valorRecuperacao select evt.tpc_id; foreach (int tpc_id in x.ToList()) { if (string.IsNullOrEmpty(listaTpcIdRecuperacao)) { listaTpcIdRecuperacao += Convert.ToString(tpc_id); } else { listaTpcIdRecuperacao += "," + Convert.ToString(tpc_id); } } } // verifica se existe evento do tipo efetivação final bool existeFinal = false; IEnumerable <ACA_Evento> dadoFinal = (from ACA_Evento item in listEvento where item.tev_id == valorFinal select item); List <ACA_Evento> ltFinal = dadoFinal.ToList(); // se existir, marca para trazer as avaliações do tipo final if (ltFinal.Count > 0) { existeFinal = true; } // verifica se existe evento do tipo recuperação final bool existeRecuperacaoFinal = false; IEnumerable <ACA_Evento> dadoRecuperacaoFinal = (from ACA_Evento item in listEvento where item.tev_id == valorRecuperacaoFinal select item); List <ACA_Evento> ltRecuperacaoFinal = dadoRecuperacaoFinal.ToList(); // se existir, marca para trazer as avaliações do tipo recuperação final if (ltRecuperacaoFinal.Count > 0) { existeRecuperacaoFinal = true; } DataTable dtAvaliacoes; // Se for turma eletiva do aluno, carrega apenas os períodos do calendário em que // a turma é oferecida if ((TUR_TurmaTipo)tur.tur_tipo == TUR_TurmaTipo.EletivaAluno) { List <CadastroTurmaDisciplina> listaDisciplinas = TUR_TurmaDisciplinaBO.GetSelectCadastradosBy_Turma(_VS_tur_id); dtAvaliacoes = ACA_AvaliacaoBO.ConsultaPor_Periodo_Efetivacao_TurmaDisciplinaCalendario(_VS_tur_id, listaDisciplinas[0].entTurmaDisciplina.tud_id, _VS_fav_id, listaTpcIdPeriodicaPeriodicaFinal, listaTpcIdRecuperacao, existeFinal, false, true); } else { dtAvaliacoes = ACA_AvaliacaoBO.ConsultaPor_Periodo_Efetivacao(_VS_tur_id, _VS_fav_id, 0, listaTpcIdPeriodicaPeriodicaFinal, listaTpcIdRecuperacao, existeFinal, existeRecuperacaoFinal, false, true, -1, ApplicationWEB.AppMinutosCacheLongo); } var avaliacoes = (from DataRow dr in dtAvaliacoes.Rows let fechado = Convert.ToBoolean(dr["ava_tpc_fechado"]) let cap_dataInicio = Convert.ToDateTime(string.IsNullOrEmpty(dr["cap_dataInicio"].ToString()) ? new DateTime().ToString() : dr["cap_dataInicio"]) where !(fechado && cap_dataInicio > DateTime.Now) select dr); dtAvaliacoes = avaliacoes.Any() ? avaliacoes.CopyToDataTable() : new DataTable(); if (dtAvaliacoes.Rows.Count == 0) { _lblMessage.Text = UtilBO.GetErroMessage("Turma fora do período de " + NomeModulo + ".", UtilBO.TipoMensagem.Alerta); } else if (dtAvaliacoes.Rows.Count == 1) { ACA_FormatoAvaliacao ent = new ACA_FormatoAvaliacao { fav_id = _VS_fav_id }; ACA_FormatoAvaliacaoBO.GetEntity(ent); _VS_ava_id = Convert.ToInt32(dtAvaliacoes.Rows[0]["ava_id"]); RedirecionaCadastro(); } else if (dtAvaliacoes.Rows.Count > 1) { // Carregar Avaliações. gvAvaliacoes.DataSource = dtAvaliacoes; gvAvaliacoes.DataBind(); ScriptManager.RegisterStartupScript(this, typeof(Page), "abreAvaliacoes", "$(document).ready(function(){$('#divAvaliacoes').dialog('open'); });", true); } } } catch (ValidationException ex) { _lblMessage.Text = UtilBO.GetErroMessage(ex.Message, UtilBO.TipoMensagem.Alerta); } catch (Exception ex) { ApplicationWEB._GravaErro(ex); _lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar carregar as avaliações.", UtilBO.TipoMensagem.Erro); } } }