/// <summary> /// Gera o relatorio com base nos filtros selecionados. /// </summary> private void GerarRel() { SalvarBusca(); bool turmaRegencia = TUR_TurmaDisciplinaBO.GetSelectBy_Turma(UCComboTurma1.Valor[0], null, ApplicationWEB.AppMinutosCacheLongo).Any(t => t.tud_tipo == (byte)TurmaDisciplinaTipo.Regencia); // mostra a quantidade de dias letivos no ano int numeroDiasUteis = GestaoEscolarUtilBO.NumeroDeDiasUteis(UCComboCalendario1.Valor, UCComboUAEscola.Esc_ID, UCComboUAEscola.Uni_ID, __SessionWEB.__UsuarioWEB.Usuario.ent_id, turmaRegencia); string parameter = string.Empty; string parametroAtivDiversificada = ACA_ParametroAcademicoBO.ParametroValorPorEntidade(eChaveAcademico.TIPO_EVENTO_ATIVIDADE_DIVERSIFICADA, __SessionWEB.__UsuarioWEB.Usuario.ent_id); string report = ((int)ReportNameGestaoAcademica.AtaResultadoFinalEnriquecimentoCurricular).ToString(); parameter = "cal_id=" + UCComboCalendario1.Valor.ToString() + "&esc_id=" + UCComboUAEscola.Esc_ID.ToString() + "&mostraCodigoEscola=" + ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.ORDENAR_ESCOLAS_POR_CODIGO, __SessionWEB.__UsuarioWEB.Usuario.ent_id) + "&tur_id=" + UCComboTurma1.Valor[0].ToString() + "&tev_id=" + (string.IsNullOrEmpty(parametroAtivDiversificada) ? "0" : parametroAtivDiversificada) + "&numeroDiasUteis=" + numeroDiasUteis + "&logo=" + String.Concat(MSTech.GestaoEscolar.BLL.CFG_ServidorRelatorioBO.CarregarServidorRelatorioPorEntidade(__SessionWEB.__UsuarioWEB.Usuario.ent_id, ApplicationWEB.AppMinutosCacheLongo).srr_pastaRelatorios.ToString() , ApplicationWEB.LogoRelatorioSSRS) + "&corAlunoInativo=" + ApplicationWEB.AlunoInativo + "&corAlunoFrequenciaLimite=" + ApplicationWEB.AlunoFrequenciaLimite + "&Bimestre=" + GestaoEscolarUtilBO.nomePadraoPeriodo_Calendario(__SessionWEB.__UsuarioWEB.Usuario.ent_id) + "&nomeDisciplina=" + GetGlobalResourceObject("Mensagens", "MSG_DISCIPLINA") + "&visaoGestor=" + (__SessionWEB.__UsuarioWEB.Grupo.vis_id != SysVisaoID.Individual) + "&nomeMunicipio=" + GetGlobalResourceObject("Reporting", "Reporting.DocDctSubCabecalhoRetrato.Municipio") + "&nomeSecretaria=" + GetGlobalResourceObject("Reporting", "Reporting.DocDctSubCabecalhoRetrato.Secretaria"); //+ "&cal_ano=" + UCComboCalendario1.Cal_ano.ToString(); MSTech.GestaoEscolar.BLL.CFG_RelatorioBO.CallReport("Relatorios", report, parameter, HttpContext.Current); }
/// <summary> /// Remove os caches do fechamento automatico. /// </summary> /// <param name="tud_id">Id da disciplina na turma.</param> private static void RemoveCacheFechamentoAutomatico(long tud_id) { string chave = ModelCache.FECHAMENTO_AUTO_BIMESTRE_PATTERN_KEY + "_" + tud_id; CacheManager.Factory.RemoveByPattern(chave); chave = ModelCache.FECHAMENTO_AUTO_BIMESTRE_FILTRO_DEFICIENCIA_PATTERN_KEY + "_" + tud_id; CacheManager.Factory.RemoveByPattern(chave); chave = String.Format(ModelCache.FECHAMENTO_AUTO_FINAL_MODEL_KEY, tud_id); CacheManager.Factory.RemoveByPattern(chave); chave = String.Format(ModelCache.FECHAMENTO_AUTO_FINAL_FILTRO_DEFICIENCIA_MODEL_KEY, tud_id); CacheManager.Factory.RemoveByPattern(chave); TUR_TurmaDisciplina turmaDisciplina = TUR_TurmaDisciplinaBO.GetEntity(new TUR_TurmaDisciplina { tud_id = tud_id }); if (turmaDisciplina.tud_tipo == (byte)TurmaDisciplinaTipo.Regencia) { TUR_Turma turma = TUR_TurmaRelTurmaDisciplinaBO.SelecionarTurmaPorTurmaDisciplina(tud_id); chave = ModelCache.FECHAMENTO_AUTO_BIMESTRE_COMPONENTES_REGENCIA_PATTERN_KEY + "_" + turma.tur_id; CacheManager.Factory.RemoveByPattern(chave); chave = String.Format(ModelCache.FECHAMENTO_AUTO_FINAL_COMPONENTES_REGENCIA_MODEL_KEY, turma.tur_id); CacheManager.Factory.RemoveByPattern(chave); } }
/// <summary> /// Carrega as disciplinas de uma turma. Sem a docencia compartilhada /// </summary> /// <param name="tur_id">id da turma</param> /// <param name="doc_id">id do docente</param> public void CarregarTurmaDisciplina_SemCompartilhada (long tur_id, long doc_id, bool mostraCompartilhadas = false) { if (doc_id > 0) { CarregarCombo(TUR_TurmaDisciplinaBO.GetSelectBy_TurmaDocente (tur_id , __SessionWEB.__UsuarioWEB.Usuario.ent_id , VS_MostraFilhosRegencia, VS_MostraRegencia, VS_MostraExperiencia, VS_MostraTerritorio , doc_id , 0 , ApplicationWEB.AppMinutosCacheLongo , mostraCompartilhadas) .Where(p => p.tud_tipo != (int)TurmaDisciplinaTipo.DocenciaCompartilhada)); } else { CarregarCombo(TUR_TurmaDisciplinaBO.GetSelectBy_tur_id(tur_id, __SessionWEB.__UsuarioWEB.Usuario.ent_id, VS_MostraFilhosRegencia, VS_MostraRegencia, VS_MostraExperiencia, VS_MostraTerritorio, 0 , ApplicationWEB.AppMinutosCacheLongo) .Where(p => p.tud_tipo != (int)TurmaDisciplinaTipo.DocenciaCompartilhada)); } }
private void UCCPeriodoCalendario_IndexChanged() { rptAlunos.DataSource = null; bool possuiAlunos = false; if (UCCPeriodoCalendario.Valor[0] != -1 && UCCPeriodoCalendario.Valor[1] != -1) { long tur_id = Convert.ToInt64(ddlTurma.SelectedValue); TUR_Turma tur = new TUR_Turma(); tur.tur_id = tur_id; TUR_TurmaBO.GetEntity(tur); TUR_TurmaDisciplina tud = new TUR_TurmaDisciplina(); tud.tud_id = UCCTurmaDisciplina1.Valor; TUR_TurmaDisciplinaBO.GetEntity(tud); DateTime cap_dataInicio, cap_dataFim; ACA_CalendarioPeriodoBO.RetornaDatasPeriodoPor_FormatoAvaliacaoTurmaDisciplina(UCCPeriodoCalendario.Valor[0], string.Empty, UCCTurmaDisciplina1.Valor, tur.fav_id, out cap_dataInicio, out cap_dataFim); DataTable dt = _VS_doc_id > 0 && VS_DisciplinaEspecial? MTR_MatriculaTurmaDisciplinaBO.SelecionaAtivosCompensacaoAusenciaFiltroDeficiencia(tur_id, UCCTurmaDisciplina1.Valor, UCCPeriodoCalendario.Valor[0], 0, VS_tipoDocente, VS_cpa_id, false, true) : MTR_MatriculaTurmaDisciplinaBO.SelecionaAtivosCompensacaoAusencia(UCCTurmaDisciplina1.Valor, UCCPeriodoCalendario.Valor[0], 0, VS_cpa_id, false, true); rptAlunos.DataSource = dt; possuiAlunos = dt.Rows.Count > 0; rptAlunos.DataBind(); lblMessage.Text = ""; if (tud.tud_tipo == (byte)TurmaDisciplinaTipo.Experiencia && !TUR_TurmaDisciplinaTerritorioBO.VerificaOferecimentoExperienciaBimestre(UCCTurmaDisciplina1.Valor, UCComboCalendario.Valor, UCCPeriodoCalendario.Valor[0])) { mostraSalvar = false; lblMessage.Text += UtilBO.GetErroMessage("A experiência não possui territórios vigentes no bimestre.", UtilBO.TipoMensagem.Alerta); } if (VS_cpa_id <= 0) { if (possuiAlunos) { btnSalvar.Visible = __SessionWEB.__UsuarioWEB.GrupoPermissao.grp_inserir && mostraSalvar; } else { btnSalvar.Visible = false; lblMessage.Text += UtilBO.GetErroMessage("Não existem alunos com ausências para serem compensadas.", UtilBO.TipoMensagem.Alerta); } } } fdsAlunos.Visible = possuiAlunos; }
/// <summary> /// Salva uma lista de turma horários da turma /// </summary> /// <param name="listaTurmaHorario"></param> /// <returns></returns> public static bool SalvarTurmaHorario(long tur_id, List <TUR_TurmaHorario> listaTurmaHorario, TalkDBTransaction _banco = null) { TalkDBTransaction banco = _banco == null ? new TUR_TurmaHorarioDAO()._Banco.CopyThisInstance() : _banco; if (_banco == null) { banco.Open(IsolationLevel.ReadCommitted); } try { List <TUR_TurmaDisciplina> lstTud = TUR_TurmaDisciplinaBO.GetSelectBy_Turma(tur_id, banco, GestaoEscolarUtilBO.MinutosCacheLongo); //Se há uma turma disciplina da turma que não está na lista de turma horário então não permite salvar if (lstTud.Where(t => t.tud_tipo != (byte)TurmaDisciplinaTipo.ComponenteRegencia).Any(t => !listaTurmaHorario.Any(th => th.tud_id == t.tud_id))) { throw new ValidationException(CustomResource.GetGlobalResourceObject("BLL", "TUR_TurmaHorarioBO.SalvarTurmaHorario.ValidarTudsTurmaHorario")); } ValidarCarga(listaTurmaHorario, banco); listaTurmaHorario.Where(p => p.thr_id > 0 && p.tud_id <= 0) .Aggregate(true, (deletou, horario) => deletou & Delete(horario, banco)); listaTurmaHorario.ForEach(p => p.IsNew = p.thr_id <= 0); listaTurmaHorario.Where(p => p.tud_id > 0) .Aggregate(true, (salvou, horario) => salvou & Save(horario, banco)); return(true); } catch (Exception ex) { banco.Close(ex); throw; } finally { if (banco.ConnectionIsOpen) { banco.Close(); } } }
/// <summary> /// Carrega as disciplinas de uma turma. /// </summary> /// <param name="tur_id">id da turma</param> /// <param name="doc_id">id do docente</param> public void CarregarTurmaDisciplinaFiltraProjetos(long tur_id, long doc_id, int cap_id = 0, bool exibirApenasDisciplinasPermiteAbonoFalta = false) { List <sTurmaDisciplina> lista = TUR_TurmaDisciplinaBO.GetSelectBy_TurmaDocente (tur_id , __SessionWEB.__UsuarioWEB.Usuario.ent_id , VS_MostraFilhosRegencia, VS_MostraRegencia, VS_MostraExperiencia, VS_MostraTerritorio , doc_id , cap_id , ApplicationWEB.AppMinutosCacheLongo).Where(p => p.tud_tipo != (byte)TurmaDisciplinaTipo.DocenciaCompartilhada).ToList(); if (exibirApenasDisciplinasPermiteAbonoFalta) { CarregarCombo(lista.Where(p => p.tud_permitirLancarAbonoFalta)); } else { CarregarCombo(lista); } }
/// <summary> /// Valida a carga horária ao salvar a lista de turmaHorario. /// </summary> /// <param name="listaTurmaHorario"></param> /// <param name="banco"></param> private static void ValidarCarga(List <TUR_TurmaHorario> listaTurmaHorario, TalkDBTransaction banco) { string tud_ids = string.Join(";", listaTurmaHorario.Where(p => p.tud_id > 0).GroupBy(p => p.tud_id).Select(p => p.Key.ToString()).ToArray()); if (!string.IsNullOrEmpty(tud_ids)) { List <TUR_TurmaDisciplina> listaDisciplinas = TUR_TurmaDisciplinaBO.SelecionaTurmaDisciplina(tud_ids, banco); var validacaoCargaSemanal = from TUR_TurmaHorario horario in listaTurmaHorario.Where(p => p.tud_id > 0) group horario by horario.tud_id into gHorario join TUR_TurmaDisciplina tud in listaDisciplinas on gHorario.Key equals tud.tud_id select new { tud_id = gHorario.Key , tud_codigo = tud.tud_codigo , tud_nome = tud.tud_nome , tud_tipo = tud.tud_tipo , quantidadeAulas = gHorario.Count() , cargaHorarioSemanal = tud.tud_cargaHorariaSemanal }; if (validacaoCargaSemanal.Any(p => p.quantidadeAulas > p.cargaHorarioSemanal && p.tud_tipo != (byte)TurmaDisciplinaTipo.DisciplinaPrincipal && p.tud_tipo != (byte)TurmaDisciplinaTipo.Regencia)) { string mensagem; mensagem = string.Join("<br />", validacaoCargaSemanal.Where(p => p.quantidadeAulas > p.cargaHorarioSemanal && p.tud_tipo != (byte)TurmaDisciplinaTipo.DisciplinaPrincipal) .Select(p => string.Format(CustomResource.GetGlobalResourceObject("BLL", "TUR_TurmaHorarioBO.SalvarTurmaHorario.ValidacaoTemposAula"), p.tud_nome, p.cargaHorarioSemanal, p.tud_codigo, (p.quantidadeAulas - p.cargaHorarioSemanal))) .ToArray()); if (!string.IsNullOrEmpty(mensagem)) { throw new ValidationException(mensagem); } } } }
/// <summary> /// Carrega as disciplinas de uma turma. /// </summary> /// <param name="tur_id">id da turma</param> public void CarregarTurmaDisciplina(long tur_id, bool exibirDisciplinasSemFrequencia = true, int cap_id = 0, bool exibirApenasDisciplinasPermiteAbonoFalta = false) { List <sTurmaDisciplina> lista = TUR_TurmaDisciplinaBO.GetSelectBy_tur_id(tur_id, __SessionWEB.__UsuarioWEB.Usuario.ent_id, VS_MostraFilhosRegencia, VS_MostraRegencia, VS_MostraExperiencia, VS_MostraTerritorio, cap_id, ApplicationWEB.AppMinutosCacheLongo); if (!exibirDisciplinasSemFrequencia) { lista = lista.FindAll(p => !p.tud_naoLancarFrequencia); } if (exibirApenasDisciplinasPermiteAbonoFalta) { lista = lista.FindAll(p => p.tud_permitirLancarAbonoFalta); } CarregarCombo(lista); }
protected void grvFilaFechamento_DataBound(object sender, EventArgs e) { UCTotalRegistros1.Total = TUR_TurmaDisciplinaBO.GetTotalRecords(); // Seta propriedades necessárias para ordenação nas colunas. ConfiguraColunasOrdenacao(grvFilaFechamento); if ((!string.IsNullOrEmpty(grvFilaFechamento.SortExpression)) && (__SessionWEB.BuscaRealizada.PaginaBusca == PaginaGestao.ParametrizacaoDisciplinas)) { Dictionary <string, string> filtros = __SessionWEB.BuscaRealizada.Filtros; if (filtros.ContainsKey("VS_Ordenacao")) { filtros["VS_Ordenacao"] = grvFilaFechamento.SortExpression; } else { filtros.Add("VS_Ordenacao", grvFilaFechamento.SortExpression); } if (filtros.ContainsKey("VS_SortDirection")) { filtros["VS_SortDirection"] = grvFilaFechamento.SortDirection.ToString(); } else { filtros.Add("VS_SortDirection", grvFilaFechamento.SortDirection.ToString()); } __SessionWEB.BuscaRealizada = new BuscaGestao { PaginaBusca = PaginaGestao.ParametrizacaoDisciplinas , Filtros = filtros }; } }
/// <summary> /// Remove do cache a entidade. /// </summary> /// <param name="entity"></param> public static void LimpaCache(TUR_TurmaDocente entity, Guid ent_id, Int64 tur_id = 0) { if (HttpContext.Current != null) { // Chave padrão do cache - nome do método + parâmetros. HttpContext.Current.Cache.Remove(RetornaChaveCache_SelecionaPosicaoPorDocenteTurma(entity.doc_id, entity.tud_id)); HttpContext.Current.Cache.Remove(RetornaChaveCache_SelecionaPosicaoPorDocenteTurma_ComInativos(entity.doc_id, entity.tud_id)); GestaoEscolarUtilBO.LimpaCache(TUR_TurmaDisciplinaBO.Cache_SelecionaDisciplinaPorTurmaDocente, entity.doc_id.ToString()); GestaoEscolarUtilBO.LimpaCache(TUR_TurmaDisciplinaBO.Cache_SelecionaDisciplinaPorTurmaDocente); GestaoEscolarUtilBO.LimpaCache(TUR_TurmaDisciplinaBO.RetornaChaveCache_SelectRelacionadaVigenteBy_DisciplinaCompartilhada(entity.tud_id, entity.doc_id.ToString())); CacheManager.Factory.RemoveByPattern(ModelCache.TURMA_DISCIPLINA_SELECIONA_DISCIPLINA_POR_TURMADOCENTE_SEM_VIGENCIA_PATTERN_KEY); GestaoEscolarUtilBO.LimpaCache(TUR_TurmaBO.RetornaChaveCache_SelecionaPorDocenteControleTurma(ent_id.ToString(), entity.doc_id.ToString())); GestaoEscolarUtilBO.LimpaCache(TUR_TurmaDisciplinaBO.RetornaChaveCache_SelectRelacionadaVigenteBy_DisciplinaCompartilhada(entity.tud_id, entity.doc_id.ToString())); TUR_TurmaBO.RemoveCacheDocenteControleTurma(ent_id, entity.doc_id); if (tur_id > 0) { TUR_TurmaBO.RemoveCacheDocente_TurmaDisciplina(tur_id, entity.doc_id, ent_id); } else { GestaoEscolarUtilBO.LimpaCache(TUR_TurmaDisciplinaBO.Cache_GetSelectBy_TurmaDocente, entity.doc_id.ToString()); } GestaoEscolarUtilBO.LimpaCache(TUR_TurmaDisciplinaBO.RetornaChaveCache_SelectRelacionadaVigenteBy_DisciplinaCompartilhada(entity.tud_id, "")); GestaoEscolarUtilBO.LimpaCache(TUR_TurmaDisciplinaBO.RetornaChaveCache_SelectRelacionadaVigenteBy_DisciplinaCompartilhada(entity.tud_id, entity.doc_id.ToString())); GestaoEscolarUtilBO.LimpaCache(TUR_TurmaBO.RetornaChaveCache_DocenteControleTurmas(ent_id, entity.doc_id)); CacheManager.Factory.RemoveByPattern(string.Format("{0}_{1}_{2}", ModelCache.TURMA_DISCIPLINA_SELECIONA_DISCIPLINA_POR_TURMADOCENTE_SEM_VIGENCIA_PATTERN_KEY, tur_id, entity.doc_id)); if (ent_id != Guid.Empty) { GestaoEscolarUtilBO.LimpaCache(ESC_UnidadeEscolaBO.RetornaChaveCache_SelectEscolas_VisaoIndividual(entity.doc_id, ent_id, 1)); GestaoEscolarUtilBO.LimpaCache(ESC_UnidadeEscolaBO.RetornaChaveCache_SelectEscolas_VisaoIndividual(entity.doc_id, ent_id, 0)); } } }
/// <summary> /// Verifica se o botão de frequência será exibido ou não /// Se a turma existir disciplina principal, só exibe o botão de frequência para essa disciplina /// </summary> /// <param name="tud_id">Id da disciplina da turma</param> /// <param name="TelaInicial">Tela inicial a ser carregada.</param> /// <param name="entityTurma">The entity turma.</param> /// <param name="entityFormato">The entity formato.</param> public void ExibirFrequencia(long tud_id, PaginaGestao TelaInicial, TUR_Turma entityTurma, ACA_FormatoAvaliacao entityFormato) { bool BtnVisible = (TelaInicial != PaginaGestao.Lancamento_Frequencia) && (entityFormato.fav_tipoLancamentoFrequencia != Convert.ToByte(ACA_FormatoAvaliacaoTipoLancamentoFrequencia.Mensal)); if (tud_id > 0) { List <TUR_TurmaDisciplina> lista = TUR_TurmaDisciplinaBO.GetSelectBy_Turma(entityTurma.tur_id, null, GestaoEscolarUtilBO.MinutosCacheLongo); // Se a turma possui disciplina principal e tem lançamento em conjunto. if (lista.Exists(p => p.tud_tipo == (byte)TurmaDisciplinaTipo.DisciplinaPrincipal) && (!(entityFormato.fav_planejamentoAulasNotasConjunto && entityTurma.tur_docenteEspecialista))) { // Esconde o botão de lançamento de frequência caso a disciplina não seja a principal. btnLancamentoFrequencia.Visible = (lista.Find(p => p.tud_tipo == (byte)TurmaDisciplinaTipo.DisciplinaPrincipal).tud_id == tud_id) && BtnVisible; } else if (lista.Exists (p => p.tud_id == tud_id && p.tud_tipo == (byte)TurmaDisciplinaTipo.DocenteEspecificoComplementacaoRegencia )) { // Se for a disciplina do tipo Complementação de regência, não exibe o botão de frequência. btnLancamentoFrequencia.Visible = false; } else { btnLancamentoFrequencia.Visible = BtnVisible; } } else { btnLancamentoFrequencia.Visible = BtnVisible; } }
/// <summary> /// Salvar os parâmetros de configuração de disciplinas. /// </summary> public void Salvar() { try { if (grvParametrosDisciplinas.Rows.Count > 0) { bool chkNaoLancarFrequencia = ((CheckBox)grvParametrosDisciplinas.HeaderRow.FindControl("chkNaoLancarFrequencia")).Checked; bool chkNaoLancarNota = ((CheckBox)grvParametrosDisciplinas.HeaderRow.FindControl("chkNaoLancarNota")).Checked; bool chkNaoExibirFrequencia = ((CheckBox)grvParametrosDisciplinas.HeaderRow.FindControl("chkNaoExibirFrequencia")).Checked; bool chkNaoExibirNota = ((CheckBox)grvParametrosDisciplinas.HeaderRow.FindControl("chkNaoExibirNota")).Checked; bool chkNaoExibirBoletim = ((CheckBox)grvParametrosDisciplinas.HeaderRow.FindControl("chkNaoExibirBoletim")).Checked; bool chkNaoLancarPlanejamento = ((CheckBox)grvParametrosDisciplinas.HeaderRow.FindControl("chkNaoLancarPlanejamento")).Checked; bool chkPermitirLancarAbonoFalta = ((CheckBox)grvParametrosDisciplinas.HeaderRow.FindControl("chkPermitirLancarAbonoFalta")).Checked; List <TUR_TurmaDisciplina> lista = (from GridViewRow row in grvParametrosDisciplinas.Rows select new TUR_TurmaDisciplina { tud_id = Convert.ToInt32(grvParametrosDisciplinas.DataKeys[row.RowIndex]["tud_id"]) , tud_naoLancarFrequencia = (chkNaoLancarFrequencia ? chkNaoLancarFrequencia : ((CheckBox)row.FindControl("chkItemNaoLancarFrequencia")).Checked) , tud_naoLancarNota = (chkNaoLancarNota ? chkNaoLancarNota : ((CheckBox)row.FindControl("chkItemNaoLancarNota")).Checked) , tud_naoExibirFrequencia = (chkNaoExibirFrequencia ? chkNaoExibirFrequencia : ((CheckBox)row.FindControl("chkItemNaoExibirFrequencia")).Checked) , tud_naoExibirNota = (chkNaoExibirNota ? chkNaoExibirNota : ((CheckBox)row.FindControl("chkItemNaoExibirNota")).Checked) , tud_naoExibirBoletim = (chkNaoExibirBoletim ? chkNaoExibirBoletim : ((CheckBox)row.FindControl("chkItemNaoExibirBoletim")).Checked) , tud_naoLancarPlanejamento = (chkNaoLancarPlanejamento ? chkNaoLancarPlanejamento : ((CheckBox)row.FindControl("chkItemNaoLancarPlanejamento")).Checked) , tud_permitirLancarAbonoFalta = (chkPermitirLancarAbonoFalta ? chkPermitirLancarAbonoFalta : ((CheckBox)row.FindControl("chkItemPermitirLancarAbonoFalta")).Checked) } ).ToList(); if (lista.Count > 0) { if (TUR_TurmaDisciplinaBO.SalvarConfiguracaoParametrosDisciplinas(lista)) { ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Update, String.Format("esc_id: {0} / uni_id: {1} / cur_id: {2} / crr_id: {3} / crp_id: {4} / cal_id: {5} / tds_id: {6}." , ucComboUAEscola.Esc_ID , ucComboUAEscola.Uni_ID , ucComboCurriculoPeriodo.Valor[0] , ucComboCurriculoPeriodo.Valor[1] , ucComboCurriculoPeriodo.Valor[2] , ucComboCalendario.Valor , UCComboTipoDisciplina1.Valor)); lblMessage.Text = UtilBO.GetErroMessage("Parâmetro(s) de configuração de disciplina(s) salvo(s) com sucesso.", UtilBO.TipoMensagem.Sucesso); } grvParametrosDisciplinas.DataBind(); } } else { lblMessage.Text = UtilBO.GetErroMessage("Não há nenhum parâmetro de configuração de disciplinas carregado.", UtilBO.TipoMensagem.Alerta); } } 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 salvar o(s) parâmetro(s) de configuração de disciplina(s).", UtilBO.TipoMensagem.Erro); } }
/// <summary> /// Gera as aulas do planejamento diário. /// </summary> /// <param name="tagsSalvar">Lista de CLS_TurmaAulaGerada para gravar</param> /// <param name="doc_id">Docente para quem devem ser geradas as CLS_TurmaAula correspondentes</param> /// <param name="usu_id">ID do usuário logado.</param> /// <param name="ent_id">ID da entidade do usuário logado</param> /// <param name="gerouTodasAulas">Flag que indica se todas as aulas foram salvas.</param> /// <param name="ultrapassouCargaHorariaSemanal">Lista de alertas para os itens que não foram plenamente atendidos.</param> /// <returns></returns> public static bool GerarAulasPlanejamentoDiario ( List <CLS_TurmaAulaGerada> tagsSalvar, int tpc_id, long doc_id, DateTime?dataInicial, DateTime?dataFinal, Guid usu_id, Guid ent_id, Dictionary <long, string> dicTurmasDisciplinas, out bool gerouTodasAulas, out Dictionary <long, string> ultrapassouCargaHorariaSemanal, out Dictionary <long, string> semVigencia, out Dictionary <long, string> semAulasPrevistas, out Dictionary <long, Exception> outrosErros, byte origemLogAula = 0 ) { gerouTodasAulas = true; ultrapassouCargaHorariaSemanal = new Dictionary <long, string>(); semVigencia = new Dictionary <long, string>(); semAulasPrevistas = new Dictionary <long, string>(); outrosErros = new Dictionary <long, Exception>(); Dictionary <long, string> ultrapassouCargaHorariaSemanalTerritorio = new Dictionary <long, string>(); // armazenará os períodos de cada calendário var dicPeriodosCalendario = new Dictionary <int, DataTable>(); // armazenará os dias não-úteis de cada escola var dicDiasNaoUteis = new Dictionary <int, List <DateTime> >(); DateTime dataLimiteLancamento = new DateTime(); string dataBloqueio = ACA_ParametroAcademicoBO.ParametroValorPorEntidade(eChaveAcademico.DATA_VALIDADE_BLOQUEIO_ACESSO_MINHAS_TURMAS, ent_id); if (!string.IsNullOrEmpty(dataBloqueio)) { if (!DateTime.TryParse(dataBloqueio, out dataLimiteLancamento)) { dataLimiteLancamento = new DateTime(); } //throw new ValidationException("A data de bloqueio informada no parâmetro não é válida."); } #region Valida itens que bloqueiam toda a execução e preenche listas de calendários // utilizadas na verificação de carga horária semanal, cuja soma precisa ser verificada por tud_id long tud_id_anterior = 0; int tud_cargaHorariaSemanal = 0; foreach (var tag in tagsSalvar.OrderBy(tag => tag.tud_id)) { if (tud_id_anterior != tag.tud_id) { tud_id_anterior = tag.tud_id; tud_cargaHorariaSemanal = 0; } tud_cargaHorariaSemanal += tag.tag_numeroAulas; if (tud_cargaHorariaSemanal > tag.tud_cargaHorariaSemanal) { throw new ValidationException(string.Format("{0} excede a carga horária semanal permitida.", dicTurmasDisciplinas[tag.tud_id])); } var cap_dataInicio = new DateTime(); var cap_dataFim = new DateTime(); #region Preenche as listas de calendários, cap_dataInicio e cap_dataFim DataTable cal = null; if (dicPeriodosCalendario.Any(i => i.Key == tag.cal_id)) { cal = dicPeriodosCalendario.First(i => i.Key == tag.cal_id).Value; } else { cal = ACA_TipoPeriodoCalendarioBO.SelecionaTipoPeriodoCalendarioPorTipoPeriodoCalendario(tpc_id, tag.cal_id); dicPeriodosCalendario.Add(tag.cal_id, cal); } cap_dataInicio = Convert.ToDateTime(cal.Rows[0]["cap_dataInicio"]); cap_dataFim = Convert.ToDateTime(cal.Rows[0]["cap_dataFim"]); if (!dicDiasNaoUteis.Any(i => i.Key == tag.esc_id)) { dicDiasNaoUteis.Add(tag.esc_id, ACA_CalendarioPeriodoBO.SelecionaDiasNaoUteis(tag.esc_id, tag.uni_id, tag.cal_id, cap_dataInicio, cap_dataFim, ent_id)); } #endregion if (dataInicial.HasValue && (dataInicial < cap_dataInicio || dataInicial > cap_dataFim)) { throw new ArgumentException(String.Format(CustomResource.GetGlobalResourceObject("BLL", "TurmaAula.ValidaDataInicioBimestre"), cap_dataInicio.ToShortDateString(), cap_dataFim.ToShortDateString())); } if (dataFinal.HasValue && (dataFinal < cap_dataInicio || dataFinal > cap_dataFim)) { throw new ArgumentException(String.Format(CustomResource.GetGlobalResourceObject("BLL", "TurmaAula.ValidaDataFimBimestre"), cap_dataInicio.ToShortDateString(), cap_dataFim.ToShortDateString())); } } #endregion var dao = new CLS_TurmaAulaGeradaDAO(); foreach (var tud_id in tagsSalvar.Select(tag => tag.tud_id).Distinct()) { var banco = dao._Banco.CopyThisInstance(); try { banco.Open(IsolationLevel.ReadCommitted); #region Busca dados iniciais do tud. var tagsByTud = tagsSalvar.Where(t => t.tud_id == tud_id).ToList(); var tud_tipo = tagsByTud.First().tud_tipo; var fav_tipoApuracaoFrequencia = tagsByTud.First().fav_tipoApuracaoFrequencia; var ttn_tipo = tagsByTud.First().ttn_tipo; if (((tud_tipo == (byte)TurmaDisciplinaTipo.Regencia && fav_tipoApuracaoFrequencia != (byte)ACA_FormatoAvaliacaoTipoApuracaoFrequencia.TemposAula) || (tud_tipo == (byte)TurmaDisciplinaTipo.DisciplinaPrincipal && ttn_tipo != (byte)ACA_TipoTurnoBO.TipoTurno.Integral)) && tagsByTud.Any(tag => tag.tag_numeroAulas > 1)) { throw new ValidationException(string.Format("A carga horária diária do componente {0} não deve ser maior que 1.", dicTurmasDisciplinas[tud_id])); } if (tud_tipo == (byte)TurmaDisciplinaTipo.DisciplinaPrincipal && ttn_tipo == (byte)ACA_TipoTurnoBO.TipoTurno.Integral && tagsByTud.Any(tag => tag.tag_numeroAulas > 2)) { throw new ValidationException(string.Format("A carga horária diária do componente {0} não deve ser maior que 2.", dicTurmasDisciplinas[tud_id])); } tud_cargaHorariaSemanal = tagsByTud.First().tud_cargaHorariaSemanal; var cal = dicPeriodosCalendario.First(i => i.Key == tagsByTud.First().cal_id).Value; var inicio = dataInicial.GetValueOrDefault(Convert.ToDateTime(cal.Rows[0]["cap_dataInicio"])); var fim = dataFinal.GetValueOrDefault(Convert.ToDateTime(cal.Rows[0]["cap_dataFim"])); var cap_dataInicio = dataInicial.GetValueOrDefault(Convert.ToDateTime(cal.Rows[0]["cap_dataInicio"])); var cap_dataFim = dataFinal.GetValueOrDefault(Convert.ToDateTime(cal.Rows[0]["cap_dataFim"])); string tud_ids = tud_id.ToString(); List <TUR_TurmaDisciplinaTerritorio> territorios = null; if (tagsByTud.First().tud_tipo == (byte)TurmaDisciplinaTipo.Experiencia) { territorios = TUR_TurmaDisciplinaTerritorioBO.SelecionaVigentesPorExperienciaPeriodo(tud_id, inicio, fim); tud_ids = territorios.Aggregate(tud_ids, (a, i) => string.Format("{0};{1}", a, i.tud_idTerritorio)); // Quantidade de aulas máxima da experiência: quantidade de territórios ligados à ela. tud_cargaHorariaSemanal = territorios.Count; //if (tagsByTud.Sum(p => p.tag_numeroAulas) > tud_cargaHorariaSemanal) //{ // throw new ValidationException(string.Format("A carga horária semanal do componente {0} não deve ser maior que {1}." // , dicTurmasDisciplinas[tud_id], tud_cargaHorariaSemanal)); //} } // Recupera as CLS_TurmaAula que já existem no banco para o docente na turma e período informado // Territórios do saber: se tud_id for relativo a uma experiência, buscará as aulas também dos territórios var aulasBanco = CLS_TurmaAulaBO.SelecionaAulasAtividadesPor_DisicplinasDocentePeriodo(tud_ids, tpc_id, doc_id, banco).Rows.OfType <DataRow>().ToList(); // Recupera as disciplinas compartilhadas vigentes para o docente na turma var lstDisciplinaCompartilhada = TUR_TurmaDisciplinaBO.SelectRelacionadaVigenteBy_DisciplinaCompartilhada(tud_id, 0, false, doc_id, banco); var diasNaoUteis = dicDiasNaoUteis.First(i => i.Key == tagsByTud.First().esc_id).Value; var aulasSalvar = new Dictionary <long[], CLS_TurmaAula>(); var aulasExcluir = new List <CLS_TurmaAula>(); // esta lista totalizará as aulas que *permanecerão* na semana // (considerando também as que permanecerão inalteradas no banco) // após as gravações das listas aulasSalvar e aulasExcluir var aulasSemana = new List <CLS_TurmaAula>(); // variáveis usadas na geração de msgs de erro de vigência dos territórios do saber bool temTerritorioVigente = true; bool temTerritorioVigenteDiaAnterior = true; DateTime vigenciaInicio = inicio; DateTime vigenciaFim = inicio; #endregion while (inicio <= fim) { foreach (var tag in tagsByTud.Where(t => inicio.DayOfWeek == RetornaDiaSemana(t.tag_diaSemana))) { #region Percorre os dias da semana configurado com aula na agenda if (!diasNaoUteis.Any(d => d.Date == inicio.Date)) { #region Territórios do Saber - Recupera dados para verificações //guarda os territórios que efetivamente estão vigentes para a experiência na data em questão var territoriosVigentes = (territorios == null) ? null : territorios.Where(t => t.tte_vigenciaInicio.Date <= inicio.Date && (t.tte_vigenciaFim == new DateTime() || t.tte_vigenciaFim.Date >= inicio.Date)).ToList(); //guarda as aulas que já estão criadas no banco para os territórios vigentes na data em questão var aulasTerritoriosBanco = (territorios == null) ? null : aulasBanco.Where(dr => territoriosVigentes.Select(t => t.tud_idTerritorio).Contains(Convert.ToInt64(dr["tud_id"])) && Convert.ToInt16(dr["tdt_posicao"]) == tag.tdt_posicao && Convert.ToDateTime(dr["tau_data"]) == inicio) .Select(dr => new { PermiteAlterar = Convert.ToBoolean(dr["PermiteAlterar"]), Aula = new CLS_TurmaAulaDAO().DataRowToEntity(dr, new CLS_TurmaAula()) }) .ToList(); #endregion #region Recupera aulas existentes no banco de dados var aulaBanco = aulasBanco .Where(dr => Convert.ToInt64(dr["tud_id"]) == tag.tud_id && Convert.ToInt16(dr["tdt_posicao"]) == tag.tdt_posicao && Convert.ToDateTime(dr["tau_data"]) == inicio && (tag.tud_idRelacionada <= 0 || Convert.ToInt64(dr["tud_idRelacionada"]) == tag.tud_idRelacionada)) .Select(dr => new { /* Territórios do saber: * só poderá editar a aula da experiência se ela E as aulas * correspondentes de TODOS os territórios vigentes na data * da aula puderem ser editadas também */ PermiteAlterar = Convert.ToBoolean(dr["PermiteAlterar"]) && (territorios == null || !aulasTerritoriosBanco.Any(a => !a.PermiteAlterar)), Aula = new CLS_TurmaAulaDAO().DataRowToEntity(dr, new CLS_TurmaAula()) }) .FirstOrDefault(); #endregion temTerritorioVigente = (territorios == null || territoriosVigentes.Count > 0); if (tag.tag_numeroAulas > 0) { // Há aulas previstas para esse dia da semana if (aulaBanco == null) { #region Cria aula if (temTerritorioVigente) { var nova = new CLS_TurmaAula { tud_id = tag.tud_id, tau_id = -1, tur_id = tag.tur_id, tpc_id = tpc_id, tau_data = inicio, tau_sequencia = -1, tau_numeroAulas = tag.tag_numeroAulas, tau_situacao = 1, tdt_posicao = Convert.ToByte(tag.tdt_posicao > 0 ? tag.tdt_posicao : 1), usu_id = usu_id, IsNew = true, tud_tipo = tag.tud_tipo }; aulasSalvar.Add(new long[] { tag.tud_id, tag.tud_idRelacionada }, nova); aulasSemana.Add(nova); } #endregion } else { if (aulaBanco.PermiteAlterar) { #region Altera aula existente if (temTerritorioVigente) { aulaBanco.Aula.tau_numeroAulas = tag.tag_numeroAulas; aulaBanco.Aula.tau_sequencia = -1; aulaBanco.Aula.tur_id = tag.tur_id; aulaBanco.Aula.IsNew = false; aulaBanco.Aula.tud_tipo = tag.tud_tipo; aulasSalvar.Add(new long[] { tag.tud_id, tag.tud_idRelacionada }, aulaBanco.Aula); } #endregion } else { gerouTodasAulas = false; } aulasSemana.Add(aulaBanco.Aula); } } // Não há aulas previstas para esse dia da semana // Exclui as aulas que já estão no calendário (quando possível) else if (aulaBanco != null) { if (aulaBanco.PermiteAlterar) { if (territorios == null || territoriosVigentes.Count > 0) { aulaBanco.Aula.tur_id = tag.tur_id; aulasExcluir.Add(aulaBanco.Aula); } else { // Se não vai excluir a aula, coloca na lista da semana para contabilizar quantidade de aulas. aulasSemana.Add(aulaBanco.Aula); } } else { gerouTodasAulas = false; // Se não vai excluir a aula, coloca na lista da semana para contabilizar quantidade de aulas. aulasSemana.Add(aulaBanco.Aula); } } #region Territorios do saber - msg de vigência if (temTerritorioVigente && !temTerritorioVigenteDiaAnterior) { string inicioFimTxt = ""; if (territorios != null && (territorios.Any(t => t.tte_vigenciaInicio.Date <= vigenciaInicio.Date) || territorios.Any(t => t.tte_vigenciaFim != new DateTime() && t.tte_vigenciaFim.Date < vigenciaFim.Date))) { if (!territorios.Any(t => t.tte_vigenciaInicio.Date <= vigenciaInicio.Date)) { inicioFimTxt = vigenciaInicio.ToString("dd/MM/yyyy") + " - " + territorios.Where(t => t.tte_vigenciaInicio.Date > vigenciaInicio.Date) .OrderBy(t => t.tte_vigenciaInicio).First() .tte_vigenciaInicio.ToString("dd/MM/yyyy"); } if (territorios.Any(t => t.tte_vigenciaFim != new DateTime() && t.tte_vigenciaFim.Date < vigenciaFim.Date)) { foreach (TUR_TurmaDisciplinaTerritorio tte in territorios.Where(t => t.tte_vigenciaFim != new DateTime() && t.tte_vigenciaFim.Date < vigenciaFim.Date) .OrderBy(t => t.tte_vigenciaInicio)) { inicioFimTxt += string.IsNullOrEmpty(inicioFimTxt) ? "" : " e "; if (tte.tte_vigenciaFim.Date < vigenciaFim.Date) { inicioFimTxt += tte.tte_vigenciaFim.AddDays(1).ToString("dd/MM/yyyy") + " - " + (territorios.Any(t => t.tte_vigenciaInicio > tte.tte_vigenciaFim.Date) ? territorios.Where(t => t.tte_vigenciaInicio > tte.tte_vigenciaFim.Date) .OrderBy(t => t.tte_vigenciaInicio).First() .tte_vigenciaInicio.AddDays(-1).ToString("dd/MM/yyyy") : vigenciaFim.ToString("dd/MM/yyyy")); } } } } else { inicioFimTxt = vigenciaInicio.ToString("dd/MM/yyyy") + " - " + vigenciaFim.ToString("dd/MM/yyyy"); } // mostra msg if (semVigencia.ContainsKey(tud_id)) { semVigencia[tud_id] = String.Format("{0}, {1}", semVigencia[tud_id], inicioFimTxt); } else { semVigencia.Add(tud_id, String.Format("{0}: {1}", dicTurmasDisciplinas[tud_id], inicioFimTxt)); } } if (temTerritorioVigente != temTerritorioVigenteDiaAnterior) { // reinicia contagem vigenciaInicio = inicio; } temTerritorioVigenteDiaAnterior = temTerritorioVigente; vigenciaFim = inicio; #endregion } #endregion } // Ao final da semana ou do intervalo informado if (inicio.DayOfWeek == DayOfWeek.Sunday || inicio == fim) { #region Grava os dados da semana DateTime dataIniSemana; DateTime dataFimSemana; #region Calcula datas de início e final da semana em questão if (inicio.DayOfWeek == DayOfWeek.Sunday) { dataIniSemana = inicio.AddDays(-7); dataFimSemana = inicio.AddDays(-1); } else { dataIniSemana = inicio.AddDays((int)inicio.DayOfWeek * (-1)); dataFimSemana = fim.AddDays(((int)fim.DayOfWeek - (int)DayOfWeek.Saturday) * (-1)); } #endregion int quantidadeAulasDaSemana = aulasSalvar.Sum(p => p.Value.tau_numeroAulas); if (dataIniSemana.Date < cap_dataInicio.Date) { // Somar com as aulas que estiverem cadastradas fora do tpc_id. quantidadeAulasDaSemana += CLS_TurmaAulaBO.VerificaSomaNumeroAulasSemana (tud_id, dataIniSemana, cap_dataInicio.Date.AddDays(-1), banco, Convert.ToByte(tagsByTud.FirstOrDefault().tdt_posicao)); } if (dataFimSemana.Date > cap_dataFim.Date) { // Somar com as aulas que estiverem cadastradas fora do tpc_id. quantidadeAulasDaSemana += CLS_TurmaAulaBO.VerificaSomaNumeroAulasSemana (tud_id, cap_dataFim.Date.AddDays(1), dataFimSemana, banco, Convert.ToByte(tagsByTud.FirstOrDefault().tdt_posicao)); } if ((aulasSalvar.Any() || aulasExcluir.Any()) && DateTime.Today >= dataLimiteLancamento && tud_tipo != (byte)ACA_CurriculoDisciplinaTipo.DocenciaCompartilhada && tud_tipo != (byte)ACA_CurriculoDisciplinaTipo.Experiencia && !semAulasPrevistas.ContainsKey(tud_id) && !TUR_TurmaDisciplinaAulaPrevistaBO.VerificaLancamento(tud_id, doc_id, tagsByTud.First().tur_id, tagsByTud.First().cal_id)) { semAulasPrevistas.Add(tud_id, dicTurmasDisciplinas[tud_id]); } // Se extrapolou a qtde de horas na semana... else if (quantidadeAulasDaSemana > tud_cargaHorariaSemanal) { // ... e há itens nas listas para gravar... if (aulasSalvar.Any() || aulasExcluir.Any()) { // ... gera mensagem de alerta ao usuário if (ultrapassouCargaHorariaSemanal.ContainsKey(tud_id)) { ultrapassouCargaHorariaSemanal[tud_id] = String.Format("{0}, {1} - {2}", ultrapassouCargaHorariaSemanal[tud_id], dataIniSemana.ToString("dd/MM/yyyy"), dataFimSemana.ToString("dd/MM/yyyy")); } else { ultrapassouCargaHorariaSemanal.Add(tud_id, String.Format("{0}: {1} - {2}", dicTurmasDisciplinas[tud_id], dataIniSemana.ToString("dd/MM/yyyy"), dataFimSemana.ToString("dd/MM/yyyy"))); } } } else { bool gravouTodasTurmaAula = gerouTodasAulas; bool ultrapassouTerritorios = false; if (aulasExcluir.Any()) { aulasExcluir.ForEach(tau => gravouTodasTurmaAula &= CLS_TurmaAulaBO.Delete(tau, banco, origemLogAula, (byte)LOG_TurmaAula_Alteracao_Tipo.ExclusaoAula, usu_id)); } if (aulasSalvar.Any()) { // Ligação da experiência com territórios nas aulas da semana. List <TurmaAulaTerritorioDados> aulasTerritorios = new List <TurmaAulaTerritorioDados>(); Dictionary <long, int> dicTerritorios = new Dictionary <long, int>(); if (tagsByTud.FirstOrDefault().tud_tipo == (byte)TurmaDisciplinaTipo.Experiencia && territorios != null && territorios.Count > 0) { // Territórios vigentes dentro da semana. var territoriosVigentes = territorios.Where (t => t.tte_vigenciaInicio.Date <= dataFimSemana.Date && (t.tte_vigenciaFim == new DateTime() || t.tte_vigenciaFim.Date >= dataIniSemana.Date)).ToList(); if (aulasSalvar.Any(tau => tau.Value.tau_numeroAulas > territoriosVigentes.Count)) { ultrapassouTerritorios = true; if (ultrapassouCargaHorariaSemanal.ContainsKey(tud_id)) { ultrapassouCargaHorariaSemanal[tud_id] = String.Format("{0}, {1} - {2}", ultrapassouCargaHorariaSemanal[tud_id], dataIniSemana.ToString("dd/MM/yyyy"), dataFimSemana.ToString("dd/MM/yyyy")); } else { ultrapassouCargaHorariaSemanal.Add(tud_id, String.Format("{0}: {1} - {2}", dicTurmasDisciplinas[tud_id], dataIniSemana.ToString("dd/MM/yyyy"), dataFimSemana.ToString("dd/MM/yyyy"))); } } } if (!ultrapassouTerritorios) { ultrapassouCargaHorariaSemanalTerritorio = ultrapassouCargaHorariaSemanal; aulasSalvar.ToList() .ForEach(tau => { gravouTodasTurmaAula &= /*(tau.Value.tud_tipo == (byte)TurmaDisciplinaTipo.Experiencia ? CLS_TurmaAulaBO.SalvarAulaTerritorio(tau.Value, banco): */ tau.Key[1] > 0 ? CLS_TurmaAulaBO.Save(tau.Value, banco, lstDisciplinaCompartilhada.First(tdr => tdr.tud_id == tau.Key[1]), origemLogAula, (byte)LOG_TurmaAula_Alteracao_Tipo.AlteracaoAula, usu_id) : CLS_TurmaAulaBO.Save(tau.Value, banco, origemLogAula, (byte)LOG_TurmaAula_Alteracao_Tipo.AlteracaoAula, usu_id); if (tagsByTud.FirstOrDefault().tud_tipo == (byte)TurmaDisciplinaTipo.Experiencia && territorios != null && territorios.Count > 0) { // Territórios vigentes dentro da semana. var territoriosVigentes = territorios.Where (t => t.tte_vigenciaInicio.Date <= dataFimSemana.Date && (t.tte_vigenciaFim == new DateTime() || t.tte_vigenciaFim.Date >= dataIniSemana.Date)).ToList(); // Ligação da experiência com territórios nas aulas da semana. aulasTerritorios = CLS_TurmaAulaTerritorioBO.SelecionaAulasTerritorioPorExperiencia (tud_id, dataIniSemana, dataFimSemana, banco); dicTerritorios = (from TUR_TurmaDisciplinaTerritorio item in territoriosVigentes.Where(t => !aulasTerritorios.Any(a => a.tud_idTerritorio == t.tud_idTerritorio && a.tau_idExperiencia != tau.Value.tau_id)) select new { tud_id = item.tud_idTerritorio , tud_nomeTerritorio = item.tud_nomeTerritorio , qtAulas = (from TurmaAulaTerritorioDados iAula in aulasTerritorios where iAula.tud_idExperiencia == item.tud_idExperiencia && iAula.tud_idTerritorio == item.tud_idTerritorio select iAula.tud_idTerritorio).Count() }).OrderBy(p => p.tud_nomeTerritorio).ToDictionary(p => p.tud_id, p => p.qtAulas); //Se for uma edição de aula então pega apenas as aulas ligadas à ela aulasTerritorios = aulasTerritorios.Where(a => a.tud_idExperiencia == tau.Value.tud_id && a.tau_idExperiencia == tau.Value.tau_id).ToList(); //Valida a carga horária da experiência if (!dicTerritorios.Any() && !aulasTerritorios.Any()) { gravouTodasTurmaAula &= false; // ... gera mensagem de alerta ao usuário if (ultrapassouCargaHorariaSemanalTerritorio.ContainsKey(tud_id)) { ultrapassouCargaHorariaSemanalTerritorio[tud_id] = String.Format("{0}, {1} - {2}", ultrapassouCargaHorariaSemanalTerritorio[tud_id], dataIniSemana.ToString("dd/MM/yyyy"), dataFimSemana.ToString("dd/MM/yyyy")); } else { ultrapassouCargaHorariaSemanalTerritorio.Add(tud_id, String.Format("{0}: {1} - {2}", dicTurmasDisciplinas[tud_id], dataIniSemana.ToString("dd/MM/yyyy"), dataFimSemana.ToString("dd/MM/yyyy"))); } } else { // Verifica ligações com territórios quando a aula é de experiência. CLS_TurmaAulaBO.CriaLigacoesTerritorios(usu_id, origemLogAula, tau.Value, banco, aulasTerritorios, dicTerritorios); } } }); ultrapassouCargaHorariaSemanal = ultrapassouCargaHorariaSemanalTerritorio; } } gerouTodasAulas &= gravouTodasTurmaAula; } aulasSalvar.Clear(); aulasExcluir.Clear(); aulasSemana.Clear(); #endregion } inicio = inicio.AddDays(1); } #region Territorios do saber - msg de vigência if (!temTerritorioVigente) { string inicioFimTxt = ""; if (territorios != null && (territorios.Any(t => t.tte_vigenciaInicio.Date <= vigenciaInicio.Date) || territorios.Any(t => t.tte_vigenciaFim != new DateTime() && t.tte_vigenciaFim.Date < vigenciaFim.Date))) { if (!territorios.Any(t => t.tte_vigenciaInicio.Date <= vigenciaInicio.Date)) { inicioFimTxt = vigenciaInicio.ToString("dd/MM/yyyy") + " - " + territorios.Where(t => t.tte_vigenciaInicio.Date > vigenciaInicio.Date) .OrderBy(t => t.tte_vigenciaInicio).First() .tte_vigenciaInicio.ToString("dd/MM/yyyy"); } if (territorios.Any(t => t.tte_vigenciaFim != new DateTime() && t.tte_vigenciaFim.Date < vigenciaFim.Date)) { foreach (TUR_TurmaDisciplinaTerritorio tte in territorios.Where(t => t.tte_vigenciaFim != new DateTime() && t.tte_vigenciaFim.Date < vigenciaFim.Date) .OrderBy(t => t.tte_vigenciaInicio)) { inicioFimTxt += string.IsNullOrEmpty(inicioFimTxt) ? "" : " e "; if (tte.tte_vigenciaFim.Date < vigenciaFim.Date) { inicioFimTxt += tte.tte_vigenciaFim.AddDays(1).ToString("dd/MM/yyyy") + " - " + (territorios.Any(t => t.tte_vigenciaInicio > tte.tte_vigenciaFim.Date) ? territorios.Where(t => t.tte_vigenciaInicio > tte.tte_vigenciaFim.Date) .OrderBy(t => t.tte_vigenciaInicio).First() .tte_vigenciaInicio.AddDays(-1).ToString("dd/MM/yyyy") : vigenciaFim.ToString("dd/MM/yyyy")); } } } } else { inicioFimTxt = vigenciaInicio.ToString("dd/MM/yyyy") + " - " + vigenciaFim.ToString("dd/MM/yyyy"); } // Entra aqui somente qdo não há vigência na última data com aula para gerar if (semVigencia.ContainsKey(tud_id)) { semVigencia[tud_id] = String.Format("{0}, {1}", semVigencia[tud_id], inicioFimTxt); } else { semVigencia.Add(tud_id, String.Format("{0}: {1}", dicTurmasDisciplinas[tud_id], inicioFimTxt)); } } #endregion bool gravouTodas = gerouTodasAulas; tagsByTud.ForEach(tag => gravouTodas &= Save(tag, banco)); gerouTodasAulas &= gravouTodas; CLS_TurmaAulaBO.AtualizarSequenciaAulasPorTurmaDisciplina(tud_id, banco); // Caso o fechamento seja automático, grava na fila de processamento. if (tagsByTud.First().fav_fechamentoAutomatico&& tagsByTud.First().tud_tipo != (byte)TurmaDisciplinaTipo.DocenteEspecificoComplementacaoRegencia && tpc_id != ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_PERIODO_CALENDARIO_RECESSO, ent_id)) { CLS_AlunoFechamentoPendenciaBO.SalvarFilaFrequencia(tud_id, tpc_id, banco); } } catch (Exception ex) { outrosErros.Add(tud_id, ex); banco.Close(ex); } finally { if (banco.ConnectionIsOpen) { banco.Close(); } } } return(true); }
/// <summary> /// Carregar os períodos e seta a visibilidade dos botões de acordo com a permissão do usuário. /// </summary> public void CarregarPeriodos ( List <sPermissaoDocente> VS_ltPermissaoFrequencia , List <sPermissaoDocente> VS_ltPermissaoEfetivacao , List <sPermissaoDocente> VS_ltPermissaoPlanejamentoAnual , List <sPermissaoDocente> VS_ltPermissaoAvaliacao , TUR_TurmaDisciplina VS_turmaDisciplinaRelacionada , int esc_id , byte tud_tipo , byte tdt_posicao = 0 , Int64 tur_id = -1 , Int64 tud_id = -1 , bool incluirPeriodoRecesso = false , int tpcIdPendencia = -1 ) { // Habilita a visibilidade dos botões alunos e voltar VisibleAlunos = !ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.MINHAS_TURMAS_ESCONDER_BOTAO_ALUNO, __SessionWEB.__UsuarioWEB.Usuario.ent_id); VisibleVoltar = !ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.MINHAS_TURMAS_ESCONDER_BOTAO_VOLTAR, __SessionWEB.__UsuarioWEB.Usuario.ent_id); int fav_id = -1; if (tur_id > 0 && tud_id > 0 && ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.PRE_CARREGAR_CACHE_EFETIVACAO, __SessionWEB.__UsuarioWEB.Usuario.ent_id)) { TUR_Turma entityTurma = new TUR_Turma { tur_id = tur_id }; TUR_TurmaBO.GetEntity(entityTurma); ACA_FormatoAvaliacao entityFormato = new ACA_FormatoAvaliacao { fav_id = entityTurma.fav_id }; ACA_FormatoAvaliacaoBO.GetEntity(entityFormato); ACA_EscalaAvaliacao entityEscala = new ACA_EscalaAvaliacao { esa_id = entityFormato.esa_idPorDisciplina }; ACA_EscalaAvaliacaoBO.GetEntity(entityEscala); ACA_EscalaAvaliacao entityEscalaDocente = new ACA_EscalaAvaliacao { esa_id = entityFormato.esa_idDocente }; ACA_EscalaAvaliacaoBO.GetEntity(entityEscalaDocente); TUR_TurmaDisciplina entityTurmaDisciplina = new TUR_TurmaDisciplina { tud_id = tud_id }; TUR_TurmaDisciplinaBO.GetEntity(entityTurmaDisciplina); // Valor do conceito global ou por disciplina. string valorMinimo = tud_id > 0 ? entityFormato.valorMinimoAprovacaoPorDisciplina : entityFormato.valorMinimoAprovacaoConceitoGlobal; double notaMinimaAprovacao = 0; int ordemParecerMinimo = 0; EscalaAvaliacaoTipo tipoEscala = (EscalaAvaliacaoTipo)entityEscala.esa_tipo; if (tipoEscala == EscalaAvaliacaoTipo.Numerica) { notaMinimaAprovacao = Convert.ToDouble(valorMinimo.Replace(',', '.')); } else if (tipoEscala == EscalaAvaliacaoTipo.Pareceres) { ordemParecerMinimo = ACA_EscalaAvaliacaoParecerBO.RetornaOrdem_Parecer(entityEscala.esa_id, valorMinimo, ApplicationWEB.AppMinutosCacheLongo); } hdnTudId.Value = tud_id.ToString(); hdnTurId.Value = entityTurma.tur_id.ToString(); hdnFavId.Value = entityTurma.fav_id.ToString(); hdnEsaId.Value = entityEscala.esa_id.ToString(); hdnTipoEscala.Value = entityEscala.esa_tipo.ToString(); hdnTipoEscalaDocente.Value = entityEscalaDocente.esa_tipo.ToString(); hdnNotaMinima.Value = notaMinimaAprovacao.ToString(); hdnParecerMinimo.Value = ordemParecerMinimo.ToString(); hdnTipoLancamento.Value = entityFormato.fav_tipoLancamentoFrequencia.ToString(); hdnCalculoQtAulasDadas.Value = entityFormato.fav_calculoQtdeAulasDadas.ToString(); hdnTurTipo.Value = entityTurma.tur_tipo.ToString(); hdnCalId.Value = entityTurma.cal_id.ToString(); hdnTudTipo.Value = entityTurmaDisciplina.tud_tipo.ToString(); hdnVariacao.Value = entityFormato.fav_variacao.ToString(); hdnTipoDocente.Value = (__SessionWEB.__UsuarioWEB.Docente.doc_id > 0 ? (byte)ACA_TipoDocenteBO.SelecionaTipoDocentePorPosicao(tdt_posicao, ApplicationWEB.AppMinutosCacheLongo) : (byte)0).ToString(); hdnDisciplinaEspecial.Value = entityTurmaDisciplina.tud_disciplinaEspecial ? "true" : "false"; hdnFechamentoAutomatico.Value = entityFormato.fav_fechamentoAutomatico ? "true" : "false"; hdnProcessarFilaFechamentoTela.Value = ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.PROCESSAR_FILA_FECHAMENTO_TELA, __SessionWEB.__UsuarioWEB.Usuario.ent_id) ? "true" : "false"; fav_id = entityFormato.fav_id; } if (ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.TELA_UNICA_LANCAMENTO_FREQUENCIA_AVALIACAO, __SessionWEB.__UsuarioWEB.Usuario.ent_id)) { VisibleListao = VS_ltPermissaoFrequencia.Any(p => p.pdc_permissaoConsulta) || VS_ltPermissaoAvaliacao.Any(p => p.pdc_permissaoConsulta); btnFrequencia.Visible = btnAvaliacao.Visible = false; } else { VisibleListao = false; btnFrequencia.Visible = VS_ltPermissaoFrequencia.Any(p => p.pdc_permissaoConsulta); btnAvaliacao.Visible = VS_ltPermissaoAvaliacao.Any(p => p.pdc_permissaoConsulta); } VisibleEfetivacao = tud_tipo != (byte)ACA_CurriculoDisciplinaTipo.DocenciaCompartilhada && VS_ltPermissaoEfetivacao.Any(p => p.pdc_permissaoConsulta) && !ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.MINHAS_TURMAS_ESCONDER_BOTAO_EFETIVACAO, __SessionWEB.__UsuarioWEB.Usuario.ent_id); VisiblePlanejamentoAnual = tud_tipo == (byte)ACA_CurriculoDisciplinaTipo.DocenciaCompartilhada ? VS_turmaDisciplinaRelacionada != null && VS_turmaDisciplinaRelacionada.tud_naoLancarPlanejamento == false : VS_ltPermissaoPlanejamentoAnual.Any(p => p.pdc_permissaoConsulta); List <Struct_CalendarioPeriodos> lstCalendarioPeriodos = ACA_CalendarioPeriodoBO.SelecionaPor_Calendario(VS_cal_id, ApplicationWEB.AppMinutosCacheLongo, false, __SessionWEB.__UsuarioWEB.Usuario.ent_id); if (incluirPeriodoRecesso) { VS_CalendarioPeriodo = lstCalendarioPeriodos; } else { VS_CalendarioPeriodo = lstCalendarioPeriodos.FindAll(p => p.tpc_id != ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_PERIODO_CALENDARIO_RECESSO, __SessionWEB.__UsuarioWEB.Usuario.ent_id)); // Se o período selecionado for de recesso, // seleciono o bimestre anterior. if (VS_tpc_id == ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_PERIODO_CALENDARIO_RECESSO, __SessionWEB.__UsuarioWEB.Usuario.ent_id)) { int indiceRecesso = lstCalendarioPeriodos.FindIndex(p => p.tpc_id == VS_tpc_id); if (indiceRecesso > 0) { Struct_CalendarioPeriodos periodo = lstCalendarioPeriodos[indiceRecesso - 1]; VS_tpc_id = periodo.tpc_id; VS_tpc_ordem = periodo.tpc_ordem; } } } VS_cal_ano = VS_CalendarioPeriodo.Find(p => p.cal_id == VS_cal_id).cal_ano; List <ESC_EscolaCalendarioPeriodo> lstEscCalPeriodo = ESC_EscolaCalendarioPeriodoBO.SelectEscolasCalendarioCache(VS_cal_id, ApplicationWEB.AppMinutosCacheCurto); VS_CalendarioPeriodo = VS_CalendarioPeriodo.Where(calP => (lstEscCalPeriodo.Where(escP => (escP.esc_id == esc_id && escP.tpc_id == calP.tpc_id)).Count() == 0)).ToList(); if (VS_IncluirPeriodoFinal) { Struct_CalendarioPeriodos[] calendarioPeriodosCopy = new Struct_CalendarioPeriodos[VS_CalendarioPeriodo.Count() + 1]; VS_CalendarioPeriodo.CopyTo(calendarioPeriodosCopy, 0); Struct_CalendarioPeriodos periodoFinal = new Struct_CalendarioPeriodos(); periodoFinal.cap_descricao = periodoFinal.tpc_nomeAbreviado = GetGlobalResourceObject("UserControl", "NavegacaoTelaPeriodo.UCNavegacaoTelaPeriodo.PeriodoFinal").ToString(); periodoFinal.tpc_id = -1; calendarioPeriodosCopy[VS_CalendarioPeriodo.Count()] = periodoFinal; rptPeriodo.DataSource = calendarioPeriodosCopy; } else { rptPeriodo.DataSource = VS_CalendarioPeriodo; } if (fav_id > 0) { string tpc_id = string.Join(",", VS_CalendarioPeriodo.Select(p => p.tpc_id.ToString()).ToArray()); ltAvaliacao = ACA_AvaliacaoBO.ConsultaPor_Periodo_Relacionadas(fav_id, tpc_id, ApplicationWEB.AppMinutosCacheLongo); if (VS_IncluirPeriodoFinal) { ltAvaliacao.AddRange(ACA_AvaliacaoBO.SelectAvaliacaoFinal_PorFormato(fav_id, ApplicationWEB.AppMinutosCacheLongo)); } } rptPeriodo.DataBind(); //Seleciona o ultimo bimestre List <Struct_CalendarioPeriodos> tabelaPeriodos = ACA_CalendarioPeriodoBO.SelecionaPor_Calendario(VS_cal_id, ApplicationWEB.AppMinutosCacheLongo); int tpc_idUltimoPeriodo = tabelaPeriodos.Count > 0 ? tabelaPeriodos.Last().tpc_id : -1; int tpc_ordemUltimoPeriodo = tabelaPeriodos.Count > 0 ? tabelaPeriodos.Last().tpc_ordem : 0; if (tpcIdPendencia > 0) { //Busca o bimestre pendente Struct_CalendarioPeriodos periodo = VS_CalendarioPeriodo.Where(x => x.tpc_id == tpcIdPendencia).FirstOrDefault(); VS_tpc_id = periodo.tpc_id; VS_tpc_ordem = periodo.tpc_ordem; } if (VS_tpc_id <= 0 && !VS_IncluirPeriodoFinal) { //Busca o bimestre corrente Struct_CalendarioPeriodos periodo = VS_CalendarioPeriodo.Where(x => (x.cap_dataInicio.Date <= DateTime.Now.Date && x.cap_dataFim.Date >= DateTime.Now.Date)).FirstOrDefault(); VS_tpc_id = periodo.tpc_id; VS_tpc_ordem = periodo.tpc_ordem; if (VS_tpc_id <= 0) { //Se não tem bimestre selecionado e nem bimestre corrente então seleciona o próximo corrente periodo = VS_CalendarioPeriodo.Where(x => (x.cap_dataInicio.Date >= DateTime.Now.Date)).FirstOrDefault(); VS_tpc_id = periodo.tpc_id; VS_tpc_ordem = periodo.tpc_ordem; if (VS_tpc_id <= 0) { //Se não tem bimestre selecionado então seleciona o ultimo VS_tpc_id = tpc_idUltimoPeriodo; VS_tpc_ordem = tpc_ordemUltimoPeriodo; } } } if (VS_tpc_id >= 0 && VS_IncluirPeriodoFinal) { if (VS_tpc_id == tpc_idUltimoPeriodo) { // Se for o ultimo periodo e a avaliacao final estiver aberta, // selecionar a avaliacao final List <ACA_Evento> listaEventos = ACA_EventoBO.GetEntity_Efetivacao_List(VS_cal_id, tur_id, __SessionWEB.__UsuarioWEB.Grupo.gru_id, __SessionWEB.__UsuarioWEB.Usuario.ent_id, ApplicationWEB.AppMinutosCacheLongo, true, __SessionWEB.__UsuarioWEB.Docente.doc_id); if (listaEventos.Exists(p => p.tev_id == ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_EVENTO_EFETIVACAO_FINAL, __SessionWEB.__UsuarioWEB.Usuario.ent_id))) { VS_tpc_id = -1; VS_tpc_ordem = 0; } } if (VS_tpc_id == 0) { //Se não tem bimestre selecionado e nem bimestre corrente então seleciona o próximo corrente Struct_CalendarioPeriodos periodo = VS_CalendarioPeriodo.Where(x => (x.cap_dataInicio.Date >= DateTime.Now.Date)).FirstOrDefault(); VS_tpc_id = periodo.tpc_id; VS_tpc_ordem = periodo.tpc_ordem; if (VS_tpc_id <= 0) { //Se não tem bimestre selecionado então seleciona o final VS_tpc_id = -1; VS_tpc_ordem = 0; } } } if (VS_tpc_ordem < 0) { VS_tpc_ordem = 0; } // Seleciona o botão do bimestre informado (VS_tpc_id) rptPeriodo.Items.Cast <RepeaterItem>().ToList() .Select(p => (Button)p.FindControl("btnPeriodo")) .ToList().ForEach(p => RemoveClass(p, "periodo_selecionado")); rptPeriodo.Items.Cast <RepeaterItem>().ToList() .Where(p => Convert.ToInt32(((HiddenField)p.FindControl("hdnPeriodo")).Value) == VS_tpc_id && Convert.ToInt32(((HiddenField)p.FindControl("hdnPeriodoOrdem")).Value) == VS_tpc_ordem) .Select(p => (Button)p.FindControl("btnPeriodo")) .ToList() .ForEach ( p => { AddClass(p, "periodo_selecionado"); HiddenField hdn = (HiddenField)p.FindControl("hdnIdAvaliacao"); if (!string.IsNullOrEmpty(hdn.Value)) { hdnAvaId.Value = hdn.Value; } hdn = (HiddenField)p.FindControl("hdnAvaliacaoTipo"); if (!string.IsNullOrEmpty(hdn.Value)) { hdnTipoAvaliacao.Value = hdn.Value; } hdnTpcId.Value = VS_tpc_id.ToString(); hdn = (HiddenField)p.FindControl("hdnPeriodoOrdem"); if (!string.IsNullOrEmpty(hdn.Value)) { hdnTpcOrdem.Value = hdn.Value; } } ); }
/// <summary> /// Carrega dados da turma na tela para alteração. /// </summary> /// <param name="tur_id">ID da turma</param> private void CarregarDadosAlteracao(long tur_id) { try { VS_tur_id = tur_id; // Carregar entidades. TUR_Turma entTurma = new TUR_Turma { tur_id = tur_id }; TUR_TurmaBO.GetEntity(entTurma); ESC_Escola entEscola = new ESC_Escola { esc_id = entTurma.esc_id }; ESC_EscolaBO.GetEntity(entEscola); if (!ValidaDadosTurma(entTurma, entEscola)) { return; } uccFiltroEscola.Uad_ID = entEscola.uad_idSuperiorGestao; uccFiltroEscola_IndexChangedUA(); uccFiltroEscola.SelectedValueEscolas = new[] { entTurma.esc_id, entTurma.uni_id }; uccFiltroEscola_IndexChangedUnidadeEscola(); uccCalendario.Valor = entTurma.cal_id; DtVigenciasDocentes = TUR_TurmaDocenteBO.SelecionaVigenciasDocentesPorDisciplina(tur_id); VS_ListaCurriculoDisciplina = new List <ACA_CurriculoDisciplina>(); DataTable dt = TUR_TurmaDisciplinaBO.SelecionarTurmaDisciplina_CurriculoDisciplina_By_Turma(tur_id); for (int row = 0; row < dt.Rows.Count; row++) { ACA_CurriculoDisciplina obj = new ACA_CurriculoDisciplina(); obj.dis_nome = dt.Rows[row]["dis_nome"].ToString(); obj.cur_nome = dt.Rows[row]["cur_nome"].ToString(); obj.crp_descricao = dt.Rows[row]["crp_descricao"].ToString(); obj.crp_id = (int)dt.Rows[row]["crp_id"]; obj.crr_id = (int)dt.Rows[row]["crr_id"]; obj.cur_id = (int)dt.Rows[row]["cur_id"]; obj.dis_id = (int)dt.Rows[row]["dis_id"]; obj.tds_id = (int)dt.Rows[row]["tds_id"]; obj.IsNew = false; VS_ListaCurriculoDisciplina.Add(obj); } divDiciplinas.Visible = true; AdicionaVazio(); grvDiciplinas.DataSource = VS_ListaCurriculoDisciplina; grvDiciplinas.DataBind(); uccFormatoAvaliacao.CarregarFormatoPorFormatoPadraoAtivo(entTurma.fav_id); uccFormatoAvaliacao.Valor = entTurma.fav_id; txtCodigoTurma.Text = entTurma.tur_codigo; txtCodigoInep.Text = entTurma.tur_codigoInep; txtCapacidade.Text = entTurma.tur_vagas.ToString(); if (dt.Rows.Count > 0) { // Carga horária semanal da disciplina. txtAulasSemanais.Text = dt.Rows[0]["tud_cargaHorariaSemanal"].ToString(); string nomeDocente = string.Empty; if (!string.IsNullOrEmpty(dt.Rows[0]["doc_id"].ToString())) { DataTable informacoesDocente = ACA_DocenteBO.SelecionaPorColaboradorDocente( Convert.ToInt64(dt.Rows[0]["col_id"]), Convert.ToInt64(dt.Rows[0]["doc_id"])); nomeDocente = informacoesDocente.Rows[0]["pes_nome"].ToString(); } VS_tud_id = Convert.ToInt64(dt.Rows[0]["tud_id"]); //VS_tdt_id = (int)dt.Rows[0]["tdt_id"]; divDocente.Visible = true; dtDocentes = new DataTable(); dtDocentes.Columns.Add("posicao"); dtDocentes.Columns.Add("tud_id"); dtDocentes.Columns.Add("qtdedocentes"); dtDocentes.Columns.Add("tds_id"); for (int i = 1; i <= QtdeDocentes; i++) { DataRow dr = dtDocentes.NewRow(); dr["posicao"] = i; dr["tud_id"] = VS_tud_id; dr["qtdedocentes"] = QtdeDocentes; dr["tds_id"] = Convert.ToInt32(dt.Rows[0]["tds_id"]); dtDocentes.Rows.Add(dr); } bloqueioAtribuicao = false; esc_id = entTurma.esc_id; uni_id = entTurma.uni_id; tds_id = Convert.ToInt32(dt.Rows[0]["tds_id"]); buscaDocente = true; tur_docenteEspecialista = entTurma.tur_docenteEspecialista; rptDocentes.DataSource = dtDocentes; rptDocentes.DataBind(); } uccTurno.Valor = entTurma.trn_id; if (entTurma.tur_participaRodizio) { chkRodizio.Checked = true; } ddlSituacao.SelectedValue = entTurma.tur_situacao.ToString(); DesabilitaDadosAlteracao(); RegistraScriptConfirmacao(entTurma); } catch (Exception ex) { ApplicationWEB._GravaErro(ex); lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar carregar a turma multisseriada.", UtilBO.TipoMensagem.Erro); } }
/// <summary> /// Carrega as informações do aluno que serão exibidas na tela. /// </summary> private void LoadInformacoesAluno() { try { DadosAlunoPessoa dados = ACA_AlunoBO.GetDadosAluno(VS_alu_id); TUR_TurmaDisciplina tud = new TUR_TurmaDisciplina { tud_id = VS_tud_id }; TUR_TurmaDisciplinaBO.GetEntity(tud); lblDisciplina.Text += tud.tud_nome + "<br />"; lblNome.Text += dados.pes_nome + "<br />"; lblDataNascimento.Text += (Convert.ToDateTime(dados.pes_dataNascimento).ToShortDateString()) + "<br />"; lblNomeMae.Text += dados.pesMae_nome + "<br />"; lblDataCadastro.Text += (Convert.ToDateTime(dados.pes_dataCriacao).ToShortDateString()) + "<br />"; lblDataAlteracao.Text += (Convert.ToDateTime(dados.pes_dataAlteracao).ToShortDateString()) + "<br />"; lblSituacao.Text += situacao(dados.alu_situacao) + "<br />"; DataTable matricula = VS_mtu_id >= 0 ? MTR_MatriculaTurmaBO.GetSelectDadosMatriculaAlunoMtu(VS_alu_id, VS_mtu_id) : MTR_MatriculaTurmaBO.GetSelectDadosMatriculaAluno(VS_alu_id); if (matricula.Rows.Count > 0) { if (ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.ORDENAR_ESCOLAS_POR_CODIGO, __SessionWEB.__UsuarioWEB.Usuario.ent_id)) { lblEscola.Text += string.IsNullOrEmpty(matricula.Rows[0]["esc_nome"].ToString()) ? " - <br />" : matricula.Rows[0]["esc_codigo"] + " - " + matricula.Rows[0]["esc_nome"] + "<br />"; } else { lblEscola.Text += string.IsNullOrEmpty(matricula.Rows[0]["esc_nome"].ToString()) ? " - <br />" : matricula.Rows[0]["esc_nome"] + "<br />"; } lblCurso.Text = string.IsNullOrEmpty(matricula.Rows[0]["cur_nome"].ToString()) ? "<b>" + GestaoEscolarUtilBO.nomePadraoCurso(__SessionWEB.__UsuarioWEB.Usuario.ent_id) + ": </b>" + " - " + "<br />" : "<b>" + GestaoEscolarUtilBO.nomePadraoCurso(__SessionWEB.__UsuarioWEB.Usuario.ent_id) + ": </b>" + matricula.Rows[0]["cur_nome"] + "<br />"; lblPeriodo.Text = string.IsNullOrEmpty(matricula.Rows[0]["crp_descricao"].ToString()) ? "<b>" + GestaoEscolarUtilBO.nomePadraoPeriodo(__SessionWEB.__UsuarioWEB.Usuario.ent_id) + ": </b>" + " - " + "<br />" : "<b>" + GestaoEscolarUtilBO.nomePadraoPeriodo(__SessionWEB.__UsuarioWEB.Usuario.ent_id) + ": </b>" + matricula.Rows[0]["crp_descricao"] + "<br />"; lblTurma.Text += string.IsNullOrEmpty(matricula.Rows[0]["tur_codigo"].ToString()) ? " - <br />" : matricula.Rows[0]["tur_codigo"] + "<br />"; if (!string.IsNullOrEmpty(matricula.Rows[0]["mtu_numeroChamada"].ToString())) { if (Convert.ToInt32(matricula.Rows[0]["mtu_numeroChamada"]) > 0) { lblNChamada.Text += matricula.Rows[0]["mtu_numeroChamada"] + "<br />"; } else { lblNChamada.Text += " - <br />"; } } else { lblNChamada.Text += " - <br />"; } string matriculaEstadual = ACA_ParametroAcademicoBO.ParametroValorPorEntidade(eChaveAcademico.MATRICULA_ESTADUAL, __SessionWEB.__UsuarioWEB.Usuario.ent_id); if (!string.IsNullOrEmpty(matriculaEstadual)) { string mtrEstadual = string.IsNullOrEmpty(matricula.Rows[0]["alc_matriculaEstadual"].ToString()) ? "-" : matricula.Rows[0]["alc_matriculaEstadual"].ToString(); lblRA.Text = "<b>" + matriculaEstadual + ": </b>" + mtrEstadual + "<br />"; lblRA.Visible = true; } else { string mtr = string.IsNullOrEmpty(matricula.Rows[0]["alc_matricula"].ToString()) ? "-" : matricula.Rows[0]["alc_matricula"].ToString(); lblRA.Text = "<b>" + GetGlobalResourceObject("Mensagens", "MSG_NUMEROMATRICULA") + ": " + "</b>" + mtr + "<br />"; lblRA.Visible = true; } } else { lblEscola.Visible = false; lblCurso.Visible = false; lblPeriodo.Visible = false; lblTurma.Visible = false; lblNChamada.Visible = false; lblRA.Visible = false; } } catch (Exception ex) { ApplicationWEB._GravaErro(ex); lblMessage.Text = UtilBO.GetErroMessage(CustomResource.GetGlobalResourceObject("Classe", "JustificativaAbonoFalta.Mensagem.Erro"), UtilBO.TipoMensagem.Erro); } }
protected void Page_Load(object sender, EventArgs e) { try { UCEfetivacaoNotas1.VisibleNavegacao = false; UCEfetivacaoNotas1.VisibleBotaoCancelar = false; if (!IsPostBack) { string message = __SessionWEB.PostMessages; if (!String.IsNullOrEmpty(message)) { lblMessage.Text = message; } if (PreviousPage == null && Session["DadosPaginaRetorno"] == null && Session["tud_id"] == null) { // Se não carregou nenhuma turma, redireciona pra busca. __SessionWEB.PostMessages = UtilBO.GetErroMessage("É necessário selecionar uma turma.", UtilBO.TipoMensagem.Alerta); if (__SessionWEB.__UsuarioWEB.Grupo.vis_id == SysVisaoID.Gestao || __SessionWEB.__UsuarioWEB.Grupo.vis_id == SysVisaoID.UnidadeAdministrativa) { RedirecionarPagina("~/Academico/ControleTurma/MinhaEscolaGestor.aspx"); } else { RedirecionarPagina("~/Academico/ControleTurma/Busca.aspx"); } } else { List <Struct_MinhasTurmas> dadosTodasTurmas = new List <Struct_MinhasTurmas>(); long tud_idCompartilhada = -1; if (Session["Historico"] != null) { VS_historico = Convert.ToBoolean(Session["Historico"]) && __SessionWEB.__UsuarioWEB.Docente.doc_id > 0; Session.Remove("Historico"); } if (Session["TudIdCompartilhada"] != null) { tud_idCompartilhada = Convert.ToInt64(Session["TudIdCompartilhada"]); Session.Remove("TudIdCompartilhada"); } if (Session["tud_id"] != null && Session["tdt_posicao"] != null && Session["PaginaRetorno"] != null) { UCControleTurma1.VS_tud_id = Convert.ToInt64(Session["tud_id"]); UCControleTurma1.VS_tdt_posicao = Convert.ToByte(Session["tdt_posicao"]); UCNavegacaoTelaPeriodo.VS_paginaRetorno = Session["PaginaRetorno"].ToString(); if (Session["tur_tipo"] != null && Session["tur_idNormal"] != null && Session["tud_idAluno"] != null) { UCControleTurma1.VS_tur_tipo = Convert.ToByte(Session["tur_tipo"]); UCControleTurma1.VS_tur_idNormal = Convert.ToInt64(Session["tur_idNormal"]); UCControleTurma1.VS_tud_idAluno = Convert.ToInt64(Session["tud_idAluno"]); } if (VS_EntitiesControleTurma.escola == null) { ViewState["VS_EntitiesControleTurma"] = null; } UCControleTurma1.VS_esc_id = VS_EntitiesControleTurma.escola.esc_id; UCControleTurma1.VS_uni_id = VS_EntitiesControleTurma.turma.uni_id; UCControleTurma1.VS_tur_id = VS_EntitiesControleTurma.turma.tur_id; UCControleTurma1.VS_tud_naoLancarNota = VS_EntitiesControleTurma.turmaDisciplina.tud_naoLancarNota; UCControleTurma1.VS_tud_naoLancarFrequencia = VS_EntitiesControleTurma.turmaDisciplina.tud_naoLancarFrequencia; UCControleTurma1.VS_tur_dataEncerramento = VS_EntitiesControleTurma.turma.tur_dataEncerramento; UCNavegacaoTelaPeriodo.VS_cal_id = VS_EntitiesControleTurma.turma.cal_id; UCControleTurma1.VS_tciIds = VS_EntitiesControleTurma.tciIds; if (Session["VS_TpcId"] != null) { UCNavegacaoTelaPeriodo.VS_tpc_id = Convert.ToInt32(Session["VS_TpcId"]); } if (Session["VS_TpcOrdem"] != null) { UCNavegacaoTelaPeriodo.VS_tpc_ordem = Convert.ToInt32(Session["VS_TpcOrdem"]); } } else if (PreviousPage != null && PreviousPage.IsCrossPagePostBack) { UCControleTurma1.VS_tud_id = PreviousPage.Edit_tud_id; UCControleTurma1.VS_tdt_posicao = PreviousPage.Edit_tdt_posicao; UCNavegacaoTelaPeriodo.VS_paginaRetorno = PreviousPage.PaginaRetorno; if (VS_EntitiesControleTurma.escola == null) { ViewState["VS_EntitiesControleTurma"] = null; } UCControleTurma1.VS_esc_id = VS_EntitiesControleTurma.escola.esc_id; UCControleTurma1.VS_uni_id = VS_EntitiesControleTurma.turma.uni_id; UCControleTurma1.VS_tur_id = VS_EntitiesControleTurma.turma.tur_id; UCControleTurma1.VS_tud_naoLancarNota = VS_EntitiesControleTurma.turmaDisciplina.tud_naoLancarNota; UCControleTurma1.VS_tud_naoLancarFrequencia = VS_EntitiesControleTurma.turmaDisciplina.tud_naoLancarFrequencia; UCControleTurma1.VS_tur_dataEncerramento = VS_EntitiesControleTurma.turma.tur_dataEncerramento; UCNavegacaoTelaPeriodo.VS_cal_id = VS_EntitiesControleTurma.turma.cal_id; UCControleTurma1.VS_tciIds = VS_EntitiesControleTurma.tciIds; UCControleTurma1.VS_tur_tipo = VS_EntitiesControleTurma.turma.tur_tipo; } else if (Session["DadosPaginaRetorno"] != null) { Dictionary <string, string> listaDados = (Dictionary <string, string>)Session["DadosPaginaRetorno"]; UCControleTurma1.VS_tud_id = Convert.ToInt64(listaDados["Tud_idRetorno_ControleTurma"]); UCControleTurma1.VS_tdt_posicao = Convert.ToByte(listaDados["Edit_tdt_posicao"]); UCNavegacaoTelaPeriodo.VS_paginaRetorno = listaDados["PaginaRetorno"].ToString(); UCControleTurma1.VS_esc_id = Convert.ToInt32(listaDados["Edit_esc_id"]); UCControleTurma1.VS_uni_id = Convert.ToInt32(listaDados["Edit_uni_id"]); UCControleTurma1.VS_tur_id = Convert.ToInt64(listaDados["Edit_tur_id"]); UCControleTurma1.VS_tud_naoLancarNota = Convert.ToBoolean(listaDados["Edit_tud_naoLancarNota"]); UCControleTurma1.VS_tud_naoLancarFrequencia = Convert.ToBoolean(listaDados["Edit_tud_naoLancarFrequencia"]); UCControleTurma1.VS_tur_dataEncerramento = Convert.ToDateTime(listaDados["Edit_tur_dataEncerramento"]); UCNavegacaoTelaPeriodo.VS_cal_id = Convert.ToInt32(listaDados["Edit_cal_id"]); UCControleTurma1.VS_tciIds = listaDados["Edit_tciIds"]; UCControleTurma1.VS_tur_tipo = Convert.ToByte(listaDados["Edit_tur_tipo"]); UCControleTurma1.VS_tud_idAluno = Convert.ToInt64(listaDados["Edit_tud_idAluno"]); UCControleTurma1.VS_tur_idNormal = Convert.ToInt64(listaDados["Edit_tur_idNormal"]); UCNavegacaoTelaPeriodo.VS_tpc_id = Convert.ToInt32(listaDados["Edit_tpc_id"]); UCNavegacaoTelaPeriodo.VS_tpc_ordem = Convert.ToInt32(listaDados["Edit_tpc_ordem"]); UCControleTurma1.VS_tur_tud_ids = (List <string>)(Session["tur_tud_ids"] ?? new List <string>()); UCControleTurma1.LabelTurmas = listaDados["TextoTurmas"]; } int tpcIdPendencia = -1; if (Session["tpcIdPendencia"] != null) { tpcIdPendencia = Convert.ToInt32(Session["tpcIdPendencia"]); } // Remove os dados que possam estar na sessao Session.Remove("tud_id"); Session.Remove("tdt_posicao"); Session.Remove("PaginaRetorno"); Session.Remove("DadosPaginaRetorno"); Session.Remove("VS_DadosTurmas"); Session.Remove("VS_TpcId"); Session.Remove("tur_tipo"); Session.Remove("tur_idNormal"); Session.Remove("tud_idAluno"); Session.Remove("tur_tud_ids"); Session.Remove("tipoPendencia"); Session.Remove("tpcIdPendencia"); Session.Remove("tudIdPendencia"); // List <Struct_MinhasTurmas.Struct_Turmas> dadosTurma = new List <Struct_MinhasTurmas.Struct_Turmas>(); // Se for perfil Administrador if (__SessionWEB.__UsuarioWEB.Docente.doc_id == 0) { dadosTodasTurmas.Add ( new Struct_MinhasTurmas { Turmas = TUR_TurmaBO.SelecionaMinhasTurmasComboPorTurId ( VS_EntitiesControleTurma.turmaDisciplina.tud_tipo == (byte)TurmaDisciplinaTipo.MultisseriadaDocente ? UCControleTurma1.VS_tur_idNormal : UCControleTurma1.VS_tur_id, ApplicationWEB.AppMinutosCacheCurto ) } ); // Não busca pela posição dadosTodasTurmas.All(p => { dadosTurma.AddRange(p.Turmas.Where(t => t.tud_id == UCControleTurma1.VS_tud_id)); return(true); }); UCControleTurma1.LabelTurmas = dadosTurma.FirstOrDefault().TurmaDisciplinaEscola; } else { dadosTodasTurmas = TUR_TurmaBO.SelecionaPorDocenteControleTurma(__SessionWEB.__UsuarioWEB.Usuario.ent_id, __SessionWEB.__UsuarioWEB.Docente.doc_id, ApplicationWEB.AppMinutosCacheCurto, false); dadosTodasTurmas.All(p => { dadosTurma.AddRange(p.Turmas.Where(t => t.tud_id == UCControleTurma1.VS_tud_id && t.tdt_posicao == UCControleTurma1.VS_tdt_posicao)); return(true); }); VS_situacaoTurmaDisciplina = dadosTurma.FirstOrDefault().tdt_situacao; UCControleTurma1.LabelTurmas = dadosTurma.FirstOrDefault().TurmaDisciplinaEscola; } VS_turmasAnoAtual = dadosTurma.FirstOrDefault().turmasAnoAtual; UCNavegacaoTelaPeriodo.VS_opcaoAbaAtual = eOpcaoAbaMinhasTurmas.Efetivacao; // Carrega o combo de disciplinas e seta o valor selecionado. List <Struct_MinhasTurmas.Struct_Turmas> dadosTurmas = new List <Struct_MinhasTurmas.Struct_Turmas>(); dadosTodasTurmas.All(p => { dadosTurmas.AddRange(p.Turmas); return(true); }); // Carrega combo de turmas if (__SessionWEB.__UsuarioWEB.Docente.doc_id == 0) { List <Struct_MinhasTurmas.Struct_Turmas> dadosTurmasCombo = TUR_TurmaBO.SelecionaMinhasTurmasComboPorTurId ( VS_EntitiesControleTurma.turmaDisciplina.tud_tipo == (byte)TurmaDisciplinaTipo.MultisseriadaDocente ? UCControleTurma1.VS_tur_idNormal : UCControleTurma1.VS_tur_id, ApplicationWEB.AppMinutosCacheCurto ); UCControleTurma1.CarregaTurmas(dadosTurmasCombo, UCNavegacaoTelaPeriodo.VS_cal_id, VS_EntitiesControleTurma.turmaDisciplina.tud_tipo, VS_EntitiesControleTurma.formatoAvaliacao.fav_fechamentoAutomatico, true); } else { List <Struct_MinhasTurmas.Struct_Turmas> dadosTurmasCombo = new List <Struct_MinhasTurmas.Struct_Turmas>(); if (VS_EntitiesControleTurma.turma.tur_situacao == (byte)TUR_TurmaSituacao.Ativo && VS_situacaoTurmaDisciplina == 1) { // dadosTurmasAtivas dadosTurmasCombo = TUR_TurmaBO.SelecionaTurmasAtivasDocente(dadosTodasTurmas, 0); } else { dadosTurmasCombo = dadosTurmas; } UCControleTurma1.CarregaTurmas(dadosTurmasCombo, UCNavegacaoTelaPeriodo.VS_cal_id, VS_EntitiesControleTurma.turmaDisciplina.tud_tipo, VS_EntitiesControleTurma.formatoAvaliacao.fav_fechamentoAutomatico, true); } TUR_Turma turma = new TUR_Turma(); turma.tur_id = UCControleTurma1.VS_tur_id; turma = TUR_TurmaBO.GetEntity(turma); ACA_FormatoAvaliacao formatoAvaliacao = new ACA_FormatoAvaliacao(); formatoAvaliacao.fav_id = turma.fav_id; formatoAvaliacao = ACA_FormatoAvaliacaoBO.GetEntity(formatoAvaliacao); UCNavegacaoTelaPeriodo.VS_IncluirPeriodoFinal = formatoAvaliacao.fav_avaliacaoFinalAnalitica; TUR_TurmaDisciplina entDisciplinaRelacionada = null; if (VS_EntitiesControleTurma.turmaDisciplina.tud_tipo == (byte)ACA_CurriculoDisciplinaTipo.DocenciaCompartilhada) { List <sTurmaDisciplinaRelacionada> lstDisciplinaCompartilhada = VS_historico ? TUR_TurmaDisciplinaBO.SelectRelacionadaVigenteBy_DisciplinaCompartilhada(VS_EntitiesControleTurma.turmaDisciplina.tud_id, ApplicationWEB.AppMinutosCacheLongo, false, __SessionWEB.__UsuarioWEB.Docente.doc_id) : TUR_TurmaDisciplinaBO.SelectRelacionadaVigenteBy_DisciplinaCompartilhada(VS_EntitiesControleTurma.turmaDisciplina.tud_id, ApplicationWEB.AppMinutosCacheLongo); bool docenciaCompartilhadaOk = false; if (lstDisciplinaCompartilhada.Count > 0) { if (tud_idCompartilhada <= 0 || !lstDisciplinaCompartilhada.Any(p => p.tud_id == tud_idCompartilhada)) { tud_idCompartilhada = lstDisciplinaCompartilhada[0].tud_id; } if (tud_idCompartilhada > 0) { docenciaCompartilhadaOk = true; entDisciplinaRelacionada = TUR_TurmaDisciplinaBO.GetEntity(new TUR_TurmaDisciplina { tud_id = tud_idCompartilhada }); VS_turmaDisciplinaRelacionada = lstDisciplinaCompartilhada.Find(p => p.tud_id == tud_idCompartilhada); //UCControleTurma1.CarregarDisciplinaCompartilhada(lstDisciplinaCompartilhada, VS_turmaDisciplinaRelacionada.tud_id, VS_turmaDisciplinaRelacionada.tdr_id); } } if (!docenciaCompartilhadaOk) { __SessionWEB.PostMessages = UtilBO.GetErroMessage(String.Format("{0} {1} - {2}.", GetGlobalResourceObject("Mensagens", "MSG_SEM_RELACIONAMENTO_DOCENCIA_COMPARTILHADA").ToString() , VS_EntitiesControleTurma.turma.tur_codigo , VS_EntitiesControleTurma.turmaDisciplina.tud_nome) , UtilBO.TipoMensagem.Alerta); RedirecionarPagina(UCNavegacaoTelaPeriodo.VS_paginaRetorno); } } UCNavegacaoTelaPeriodo.CarregarPeriodos(VS_ltPermissaoFrequencia, VS_ltPermissaoEfetivacao, VS_ltPermissaoPlanejamentoAnual, VS_ltPermissaoAvaliacao, entDisciplinaRelacionada, UCControleTurma1.VS_esc_id, VS_EntitiesControleTurma.turmaDisciplina.tud_tipo, UCControleTurma1.VS_tdt_posicao, turma.tur_id, VS_EntitiesControleTurma.turmaDisciplina.tud_id, false, tpcIdPendencia); if (UCNavegacaoTelaPeriodo.VS_tpc_id <= 0 && !formatoAvaliacao.fav_avaliacaoFinalAnalitica) { __SessionWEB.PostMessages = UtilBO.GetErroMessage("Escola não permite lançar dados.", UtilBO.TipoMensagem.Alerta); RedirecionarPagina(UCNavegacaoTelaPeriodo.VS_paginaRetorno); } CarregarTela(); } hdnProcessarFilaFechamentoTela.Value = ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.PROCESSAR_FILA_FECHAMENTO_TELA, __SessionWEB.__UsuarioWEB.Usuario.ent_id) ? "true" : "false"; } ScriptManager sm = ScriptManager.GetCurrent(this); if (sm != null) { sm.Scripts.Add(new ScriptReference("~/Includes/jsControleTurma_Efetivacao.js")); sm.Scripts.Add(new ScriptReference("~/Includes/jsUCSelecaoDisciplinaCompartilhada.js")); } UCNavegacaoTelaPeriodo.OnCarregaDadosTela += CarregaSessionPaginaRetorno; UCControleTurma1.IndexChanged = uccTurmaDisciplina_IndexChanged; UCNavegacaoTelaPeriodo.OnAlteraPeriodo += CarregarTela; UCSelecaoDisciplinaCompartilhada1.SelecionarDisciplina += UCSelecaoDisciplinaCompartilhada1_SelecionarDisciplina; UCControleTurma1.chkTurmasNormaisMultisseriadasIndexChanged += UCControleTurma_chkTurmasNormaisMultisseriadasIndexChanged; if ((__SessionWEB.__UsuarioWEB.Grupo.vis_id != SysVisaoID.Individual) && (__SessionWEB.__UsuarioWEB.GrupoPermissao.grp_consultar && // somente permissão consulta (!__SessionWEB.__UsuarioWEB.GrupoPermissao.grp_inserir) && (!__SessionWEB.__UsuarioWEB.GrupoPermissao.grp_excluir) && (!__SessionWEB.__UsuarioWEB.GrupoPermissao.grp_alterar))) { UCEfetivacaoNotas1.HabilitaBoletimAluno = true; } bool mudaCorTitulo = VS_cal_ano < DateTime.Now.Year && VS_turmasAnoAtual && VS_EntitiesControleTurma.turma.tur_situacao == 1; UCControleTurma1.CorTituloTurma = mudaCorTitulo ? System.Drawing.ColorTranslator.FromHtml("#A52A2A") : System.Drawing.Color.Black; divMessageTurmaAnterior.Visible = mudaCorTitulo; } catch (ThreadAbortException) { } catch (Exception ex) { ApplicationWEB._GravaErro(ex); lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar carregar os dados.", UtilBO.TipoMensagem.Erro); } }
/// <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); } }
/// <summary> /// Override do Save passando o banco - salva tambem a tabela CLS_CompensacaoAusenciaAluno /// </summary> /// <param name="entity">Entidade a ser salva</param> /// <param name="lista">Lista de CLS_CompensacaoAusenciaAluno a ser salva</param> /// <param name="fechamentoAutomatico">Indica se o fechamento é automático.</param> /// <param name="banco">Transação com banco</param> /// <returns>Se salvou com sucesso</returns> public static bool Save(CLS_CompensacaoAusencia entity, List <CLS_CompensacaoAusenciaAluno> lista, bool fechamentoAutomatico, int cal_id, TalkDBTransaction banco) { // permite cadatrar compensacao apenas para o ultimo periodo aberto, // o metodo ja retorna os periodos abertos ordenados do mais recente para o mais antigo List <sComboPeriodoCalendario> dtPeriodos = ACA_TipoPeriodoCalendarioBO.SelecionaPor_PeriodoVigente_EventoEfetivacaoVigente(-1, entity.tud_id, -1, Guid.Empty, true); if (dtPeriodos.Count > 0 && dtPeriodos.Any(p => p.tpc_id == entity.tpc_id)) { //validacoes DataTable dt = MTR_MatriculaTurmaDisciplinaBO.SelecionaAtivosCompensacaoAusencia( entity.tud_id, entity.tpc_id, 0, entity.cpa_id ); dt.PrimaryKey = new DataColumn[1] { dt.Columns["alu_id"] }; TUR_TurmaDisciplina turmaDisciplina = TUR_TurmaDisciplinaBO.GetEntity(new TUR_TurmaDisciplina { tud_id = entity.tud_id }); // se for disciplina especial if (turmaDisciplina.tud_disciplinaEspecial // e o docente do tipo especial tem permissao de editar a compensacao && CFG_PermissaoDocenteBO.SelecionaPermissaoModulo((byte)EnumTipoDocente.Especial, (byte)EnumModuloPermissao.Compensacoes).Any(p => p.pdc_permissaoEdicao)) { // adiciono na lista de validacao os aluno especiais DataTable dtEspecial = MTR_MatriculaTurmaDisciplinaBO.SelecionaAtivosCompensacaoAusenciaFiltroDeficiencia( -1, entity.tud_id, entity.tpc_id, 0, EnumTipoDocente.Especial, entity.cpa_id); dt.Merge(dtEspecial, false, MissingSchemaAction.AddWithKey); } bool valida = true; string msgValidacao = ""; if (turmaDisciplina.tud_tipo == (byte)TurmaDisciplinaTipo.Experiencia) { if (!TUR_TurmaDisciplinaTerritorioBO.VerificaOferecimentoExperienciaBimestre(turmaDisciplina.tud_id, cal_id, entity.tpc_id)) { valida = false; msgValidacao += "A experiência não possui territórios vigentes no bimestre."; } } // caso exista alguma compensação já criada pro aluno // valida se pode existir alguma outra. foreach (CLS_CompensacaoAusenciaAluno cpaa in lista) { var results = from row in dt.AsEnumerable() where row.Field <Int64>("alu_id") == cpaa.alu_id select row; if (results.Count() > 0) { DataTable aux = results.CopyToDataTable(); int totalFaltasCompensar = Convert.ToInt32(aux.Rows[0]["TotalFaltasCompensar"]); if (entity.cpa_quantidadeAulasCompensadas > totalFaltasCompensar) { valida = false; msgValidacao += String.Format("Aluno(a) {0} não pode ter essa quantidade de ausências compensadas. </br>", aux.Rows[0]["pes_nome"].ToString()); } } else { valida = false; ACA_Aluno aluno = ACA_AlunoBO.GetEntity(new ACA_Aluno { alu_id = cpaa.alu_id }); PES_Pessoa pes = PES_PessoaBO.GetEntity(new PES_Pessoa { pes_id = aluno.pes_id }); msgValidacao += String.Format("Aluno(a) {0} não pode ter ausências compensadas nos bimestres em que não estava na turma. </br>", pes.pes_nome); } } if (!valida) { throw new ValidationException(msgValidacao); } // Salva CLS_CompensacaoAusencia if (!Save(entity, banco)) { throw new Exception("Erro ao tentar salvar compensação de ausência."); } // Caso o fechamento seja automático, grava na fila de processamento. if (fechamentoAutomatico && entity.tpc_id != ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_PERIODO_CALENDARIO_RECESSO, new Guid())) { CLS_AlunoFechamentoPendenciaBO.SalvarFilaFrequencia(entity.tud_id, entity.tpc_id, banco); } List <CLS_CompensacaoAusenciaAluno> listaBanco = CLS_CompensacaoAusenciaAlunoBO.SelectByCpa_id(entity.cpa_id, entity.tud_id); foreach (CLS_CompensacaoAusenciaAluno item in lista) { CLS_CompensacaoAusenciaAluno ent = listaBanco.Find(p => p.tud_id == item.tud_id && p.cpa_id == entity.cpa_id && p.alu_id == item.alu_id && p.mtd_id == item.mtd_id && p.mtu_id == item.mtu_id); if (ent != null) { // Achou na lista que vem no banco, altera. ent.IsNew = false; CLS_CompensacaoAusenciaAlunoBO.Save(ent, banco); // Remove o registro da lista do banco para restar somente os que serao excluidos. listaBanco.Remove(ent); } else { // Não achou na lista do banco, inclui. item.cpa_id = entity.cpa_id; CLS_CompensacaoAusenciaAlunoBO.GetEntity(item, banco); if (item.caa_situacao == 3) { item.caa_situacao = 1; item.IsNew = false; } else { item.IsNew = true; } CLS_CompensacaoAusenciaAlunoBO.Save(item, banco); } } if (listaBanco.Count > 0) { foreach (CLS_CompensacaoAusenciaAluno item in listaBanco) { CLS_CompensacaoAusenciaAlunoBO.Delete(item, banco); } } } else { throw new ValidationException("Não existe evento de fechamento do bimestre aberto para realizar o lançamento."); } return(true); }
public static bool Salvar(RelatorioPreenchimentoAluno relatorio, List <CLS_AlunoDeficienciaDetalhe> lstDeficienciaDetalhe, bool permiteAlterarRacaCor, byte racaCor, List <CLS_RelatorioPreenchimentoAcoesRealizadas> lstAcoesRealizadas) { CLS_RelatorioPreenchimentoDAO dao = new CLS_RelatorioPreenchimentoDAO(); dao._Banco.Open(IsolationLevel.ReadCommitted); PES_PessoaDAO daoCore = new PES_PessoaDAO(); daoCore._Banco.Open(IsolationLevel.ReadCommitted); try { bool retorno = true; if (permiteAlterarRacaCor) { ACA_Aluno alu = new ACA_Aluno { alu_id = relatorio.entityPreenchimentoAlunoTurmaDisciplina.alu_id }; ACA_AlunoBO.GetEntity(alu); PES_Pessoa pes = new PES_Pessoa { pes_id = alu.pes_id }; PES_PessoaBO.GetEntity(pes); pes.pes_racaCor = racaCor; PES_PessoaBO.Save(pes, daoCore._Banco); } List <CLS_AlunoDeficienciaDetalhe> lstDeficienciaDetalheBanco = (from sAlunoDeficiencia alunoDeficiencia in CLS_AlunoDeficienciaDetalheBO.SelecionaPorAluno(relatorio.entityPreenchimentoAlunoTurmaDisciplina.alu_id) from sAlunoDeficienciaDetalhe alunoDeficienciaDetalhe in alunoDeficiencia.lstDeficienciaDetalhe select new CLS_AlunoDeficienciaDetalhe { alu_id = relatorio.entityPreenchimentoAlunoTurmaDisciplina.alu_id , tde_id = alunoDeficiencia.tde_id , dfd_id = alunoDeficienciaDetalhe.dfd_id }).ToList(); if (lstDeficienciaDetalheBanco.Any()) { lstDeficienciaDetalheBanco.ForEach(p => CLS_AlunoDeficienciaDetalheBO.Delete(p, dao._Banco)); } if (relatorio.entityRelatorioPreenchimento.reap_id > 0) { CLS_QuestionarioConteudoPreenchimentoBO.ExcluiPorReapId(relatorio.entityRelatorioPreenchimento.reap_id, dao._Banco); CLS_QuestionarioRespostaPreenchimentoBO.ExcluiPorReapId(relatorio.entityRelatorioPreenchimento.reap_id, dao._Banco); } retorno &= Save(relatorio.entityRelatorioPreenchimento, dao._Banco); relatorio.entityPreenchimentoAlunoTurmaDisciplina.reap_id = relatorio.entityRelatorioPreenchimento.reap_id; retorno &= CLS_RelatorioPreenchimentoAlunoTurmaDisciplinaBO.Save(relatorio.entityPreenchimentoAlunoTurmaDisciplina, dao._Banco); relatorio.lstQuestionarioConteudoPreenchimento.ForEach ( p => { p.reap_id = relatorio.entityRelatorioPreenchimento.reap_id; retorno &= CLS_QuestionarioConteudoPreenchimentoBO.Save(p, dao._Banco); } ); relatorio.lstQuestionarioRespostaPreenchimento.ForEach ( p => { p.reap_id = relatorio.entityRelatorioPreenchimento.reap_id; retorno &= CLS_QuestionarioRespostaPreenchimentoBO.Save(p, dao._Banco); } ); lstDeficienciaDetalhe.ForEach ( p => { retorno &= CLS_AlunoDeficienciaDetalheBO.Save(p, dao._Banco); } ); lstAcoesRealizadas.ForEach ( p => { if (p.rpa_situacao == (byte)CLS_RelatorioPreenchimentoAcoesRealizadasSituacao.Excluido) { retorno &= CLS_RelatorioPreenchimentoAcoesRealizadasBO.Delete(p, dao._Banco); } else { p.reap_id = relatorio.entityRelatorioPreenchimento.reap_id; retorno &= CLS_RelatorioPreenchimentoAcoesRealizadasBO.Save(p, dao._Banco); } } ); CLS_RelatorioAtendimento relatorioAtendimento = CLS_RelatorioAtendimentoBO.GetEntity(new CLS_RelatorioAtendimento { rea_id = relatorio.entityRelatorioPreenchimento.rea_id }); ACA_CalendarioAnual calendario = ACA_CalendarioAnualBO.SelecionaPorTurma(relatorio.entityPreenchimentoAlunoTurmaDisciplina.tur_id); List <MTR_MatriculaTurma> matriculasAno = MTR_MatriculaTurmaBO.GetSelectMatriculasAlunoAno(relatorio.entityPreenchimentoAlunoTurmaDisciplina.alu_id, calendario.cal_ano); matriculasAno.ForEach(p => CLS_RelatorioPreenchimentoAlunoTurmaDisciplinaBO.LimpaCache_AlunoPreenchimentoPorPeriodoDisciplina(relatorio.entityPreenchimentoAlunoTurmaDisciplina.tpc_id, p.tur_id)); if (relatorioAtendimento.rea_gerarPendenciaFechamento && ACA_FormatoAvaliacaoBO.CarregarPorTur(relatorio.entityPreenchimentoAlunoTurmaDisciplina.tur_id, dao._Banco).fav_fechamentoAutomatico) { List <AlunoFechamentoPendencia> FilaProcessamento = new List <AlunoFechamentoPendencia>(); if (relatorioAtendimento.rea_tipo == (byte)CLS_RelatorioAtendimentoTipo.RP && relatorio.entityPreenchimentoAlunoTurmaDisciplina.tud_id > 0) { if (relatorio.entityPreenchimentoAlunoTurmaDisciplina.tpc_id > 0) { FilaProcessamento.Add( new AlunoFechamentoPendencia { tud_id = relatorio.entityPreenchimentoAlunoTurmaDisciplina.tud_id , tpc_id = relatorio.entityPreenchimentoAlunoTurmaDisciplina.tpc_id , afp_frequencia = true , afp_nota = true , afp_processado = 2 }); } else { FilaProcessamento.AddRange(ACA_CalendarioPeriodoBO.SelecionaPor_Calendario(calendario.cal_id, GestaoEscolarUtilBO.MinutosCacheLongo) .Select(p => new AlunoFechamentoPendencia { tud_id = relatorio.entityPreenchimentoAlunoTurmaDisciplina.tud_id, tpc_id = p.tpc_id, afp_frequencia = true, afp_nota = false, afp_processado = 2 }).ToList()); } } else { if (relatorio.entityPreenchimentoAlunoTurmaDisciplina.tpc_id > 0) { FilaProcessamento.AddRange(TUR_TurmaDisciplinaBO.GetSelectBy_Turma(relatorio.entityPreenchimentoAlunoTurmaDisciplina.tur_id, dao._Banco, GestaoEscolarUtilBO.MinutosCacheLongo) .Select(p => new AlunoFechamentoPendencia { tud_id = p.tud_id , tpc_id = relatorio.entityPreenchimentoAlunoTurmaDisciplina.tpc_id , afp_frequencia = true , afp_nota = true , afp_processado = 2 }).ToList()); } else { var periodos = ACA_CalendarioPeriodoBO.SelecionaPor_Calendario(calendario.cal_id, GestaoEscolarUtilBO.MinutosCacheLongo); FilaProcessamento.AddRange(TUR_TurmaDisciplinaBO.GetSelectBy_Turma(relatorio.entityPreenchimentoAlunoTurmaDisciplina.tur_id, dao._Banco, GestaoEscolarUtilBO.MinutosCacheLongo) .SelectMany ( tud => periodos.Select ( tpc => new AlunoFechamentoPendencia { tud_id = tud.tud_id , tpc_id = tpc.tpc_id , afp_frequencia = true , afp_nota = true , afp_processado = 2 } ).ToList() )); } } if (FilaProcessamento.Any()) { CLS_AlunoFechamentoPendenciaBO.SalvarFilaPendencias(FilaProcessamento, dao._Banco); } } return(retorno); } catch (Exception ex) { dao._Banco.Close(ex); daoCore._Banco.Close(ex); throw; } finally { if (dao._Banco.ConnectionIsOpen) { dao._Banco.Close(); } if (daoCore._Banco.ConnectionIsOpen) { daoCore._Banco.Close(); } } }
/// <summary> /// Salva as entidades turmaAula e TurmaAulaAluno nas listas - com transação. /// </summary> /// <param name="listTurmaAulaAluno">Lista de entidades CLS_TurmaAulaAluno</param> /// <param name="listTurmaAula">LIsta de entidades CLS_TurmaAula</param> /// <param name="tur_id">ID da turma</param> /// <param name="tud_id">ID da disciplina que está sendo salva as frequências</param> /// <param name="tdt_posicao">Posição do docente logado no sistema</param> /// <param name="entityTurma">Turma.</param> /// <param name="entityFormatoAvaliacao">Formato de avaliação.</param> /// <param name="entityCurriculoPeriodo">CurriculoPeriodo.</param> /// <param name="banco">Transação com banco de dados aberta</param> /// <returns></returns> internal static bool Save ( List <CLS_TurmaAulaAluno> listTurmaAulaAluno , List <CLS_TurmaAula> listTurmaAula , long tur_id , long tud_id , byte tdt_posicao , TUR_Turma entityTurma , ACA_FormatoAvaliacao entityFormatoAvaliacao , ACA_CurriculoPeriodo entityCurriculoPeriodo , TalkDBTransaction banco , Guid usu_id = new Guid() , byte origemLogAula = 0 , byte tipoLogAula = 0 , Guid ent_id = new Guid() ) { string tau_ids = string.Join(",", (from CLS_TurmaAula item in listTurmaAula select item.tau_id.ToString()). ToArray()); // Recupera a lista de entidades CLS_TurmaAulaAluno para verificar se ela já existe. List <CLS_TurmaAulaAluno> listaTurmaAulaAluno = new CLS_TurmaAulaAlunoDAO { _Banco = banco } .SelectBy_Disciplina_Aulas(tud_id, tau_ids); DataTable dtTurmaAulaAluno = CLS_TurmaAulaAluno.TipoTabela_TurmaAulaAluno(); List <LOG_TurmaAula_Alteracao> listLogAula = new List <LOG_TurmaAula_Alteracao>(); object lockObject = new object(); Parallel.ForEach ( listTurmaAulaAluno, entityTurmaAulaAluno => { // Busca se a entidade já existe na lista. CLS_TurmaAulaAluno entAux = listaTurmaAulaAluno.Find(p => p.tud_id == entityTurmaAulaAluno.tud_id && p.tau_id == entityTurmaAulaAluno.tau_id && p.alu_id == entityTurmaAulaAluno.alu_id && p.mtu_id == entityTurmaAulaAluno.mtu_id && p.mtd_id == entityTurmaAulaAluno.mtd_id ); if (entAux != null) { entityTurmaAulaAluno.IsNew = entAux.IsNew; entityTurmaAulaAluno.taa_anotacao = entAux.taa_anotacao; entityTurmaAulaAluno.usu_idDocenteAlteracao = entAux.usu_idDocenteAlteracao; } Validate(entityTurmaAulaAluno, listTurmaAula); if (entityTurmaAulaAluno.Validate()) { lock (lockObject) { DataRow dr = dtTurmaAulaAluno.NewRow(); dtTurmaAulaAluno.Rows.Add(TurmaAulaAlunoToDataRow(entityTurmaAulaAluno, dr)); } } else { throw new ValidationException(GestaoEscolarUtilBO.ErrosValidacao(entityTurmaAulaAluno)); } } ); // Salva os dados de todos os alunos na tabela CLS_TurmaAulaAluno SalvaFrequenciaAlunos(dtTurmaAulaAluno, banco); // Verifica se a entidade recebida por parâmetro foi alimentada, se não foi, dá o GetEntity. TUR_Turma turma = entityTurma ?? TUR_TurmaBO.GetEntity(new TUR_Turma { tur_id = tur_id }, banco); ACA_FormatoAvaliacao formatoAvaliacao = entityFormatoAvaliacao ?? ACA_FormatoAvaliacaoBO.GetEntity(new ACA_FormatoAvaliacao { fav_id = turma.fav_id }, banco); ACA_CurriculoPeriodo entityCrp = entityCurriculoPeriodo ?? ACA_CurriculoPeriodoBO.SelecionaPorTurmaTipoNormal(turma.tur_id, GestaoEscolarUtilBO.MinutosCacheLongo); List <TUR_TurmaDisciplina> listaDisciplinas = TUR_TurmaDisciplinaBO.GetSelectBy_Turma(tur_id, banco, GestaoEscolarUtilBO.MinutosCacheLongo); TUR_TurmaDisciplina entDisciplinarincipal = listaDisciplinas.Find(p => p.tud_tipo == (byte)TurmaDisciplinaTipo.DisciplinaPrincipal); // Se não for para lançar na disciplina global, e a turma possuir uma disc. principal, // só poderá salvar na disciplina principal. bool validarDiscPrincipal = (!(turma.tur_docenteEspecialista && formatoAvaliacao.fav_planejamentoAulasNotasConjunto)) && (entDisciplinarincipal != null) && (formatoAvaliacao.fav_tipoApuracaoFrequencia != (byte)ACA_FormatoAvaliacaoTipoApuracaoFrequencia.Dia && entityCrp.crp_controleTempo != (byte)ACA_CurriculoPeriodoControleTempo.Horas); DateTime dataLogAula = DateTime.Now; foreach (CLS_TurmaAula entityTurmaAula in listTurmaAula) { // Se for pra validar a disc. principal, só pode lançar frequência nela. if (validarDiscPrincipal && (entDisciplinarincipal.tud_id != entityTurmaAula.tud_id)) { throw new ValidationException("A frequência dessa turma só pode ser lançada para o(a) " + CustomResource.GetGlobalResourceObject("Mensagens", "MSG_DISCIPLINA") + entDisciplinarincipal.tud_nome + "."); } if (origemLogAula > 0) { LOG_TurmaAula_Alteracao entLogAula = new LOG_TurmaAula_Alteracao { tud_id = entityTurmaAula.tud_id, tau_id = entityTurmaAula.tau_id, usu_id = usu_id, lta_origem = origemLogAula, lta_tipo = tipoLogAula, lta_data = dataLogAula }; listLogAula.Add(entLogAula); } } //Salva os logs de alteração de aula LOG_TurmaAula_AlteracaoBO.SalvarEmLote(listLogAula, banco); // Atualiza o campo efetivado da aula. CLS_TurmaAulaBO.AtualizarEfetivado(listTurmaAula, banco); // Caso o fechamento seja automático, grava na fila de processamento. if (formatoAvaliacao.fav_fechamentoAutomatico && listTurmaAula.Count > 0 && listTurmaAula[0].tpc_id != ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_PERIODO_CALENDARIO_RECESSO, ent_id)) { CLS_AlunoFechamentoPendenciaBO.SalvarFilaFrequencia(tud_id, listTurmaAula[0].tpc_id, banco); } if (listTurmaAula.Any() && dtTurmaAulaAluno.Rows.Count > 0 && HttpContext.Current != null) { // Limpa o cache do fechamento try { string chave = string.Empty; int tpc_id = listTurmaAula[0].tpc_id; List <ACA_Avaliacao> avaliacao = ACA_AvaliacaoBO.GetSelectBy_FormatoAvaliacaoPeriodo(turma.fav_id, tpc_id); if (avaliacao.Any()) { int ava_id = avaliacao.First().ava_id; if (tud_id > 0) { chave = MTR_MatriculaTurmaDisciplinaBO.RetornaChaveCache_GetSelectBy_TurmaDisciplinaPeriodo(tud_id, turma.fav_id, ava_id, string.Empty); CacheManager.Factory.RemoveByPattern(chave); chave = MTR_MatriculaTurmaDisciplinaBO.RetornaChaveCache_GetSelectBy_TurmaDisciplinaPeriodoFiltroDeficiencia(tud_id, turma.fav_id, ava_id, string.Empty); CacheManager.Factory.RemoveByPattern(chave); } else { chave = MTR_MatriculaTurmaBO.RetornaChaveCache_GetSelectBy_Turma_Periodo(tur_id, turma.fav_id, ava_id); HttpContext.Current.Cache.Remove(chave); } } } catch { } } return(true); }
/// <summary> /// Salva as notas das atividades extraclasse /// </summary> /// <param name="lstTurmaAtividadeExtraClasseAluno"></param> /// <returns></returns> public static bool SalvarEmLote(List <CLS_TurmaAtividadeExtraClasseAluno> lstTurmaAtividadeExtraClasseAluno, long tud_id, int tpc_id, byte tud_tipo, bool fechamentoAutomatico, Guid ent_id, List <CLS_TurmaAtividadeExtraClasse> lstRelacionamento, long tur_id) { TalkDBTransaction banco = new CLS_TurmaAtividadeExtraClasseAlunoDAO()._Banco.CopyThisInstance(); banco.Open(IsolationLevel.ReadCommitted); try { List <long> lstTudId = new List <long>(); foreach (CLS_TurmaAtividadeExtraClasse atividade in lstRelacionamento) { List <CLS_TurmaAtividadeExtraClasse> lstRelacionadas = CLS_TurmaAtividadeExtraClasseBO.SelecionaAtividadeExtraclasseRelacionada(atividade.taer_id); List <CLS_TurmaAtividadeExtraClasseAluno> lstLancamento = lstTurmaAtividadeExtraClasseAluno.FindAll(p => p.tud_id == atividade.tud_id && p.tae_id == atividade.tae_id); List <MTR_MatriculaTurmaDisciplina> lstMatriculaDisciplina = new List <MTR_MatriculaTurmaDisciplina>(); lstRelacionadas.FindAll(p => p.tud_id != atividade.tud_id || p.tae_id != atividade.tae_id).ForEach(p => { if (!lstMatriculaDisciplina.Any(m => m.tud_id == p.tud_id)) { lstMatriculaDisciplina.AddRange(MTR_MatriculaTurmaDisciplinaBO.SelecionaMatriculasPorTurmaDisciplina(p.tud_id.ToString(), banco)); } lstLancamento.ForEach(a => { CLS_TurmaAtividadeExtraClasseAluno ent = new CLS_TurmaAtividadeExtraClasseAluno { tud_id = p.tud_id, tae_id = p.tae_id, alu_id = a.alu_id, mtu_id = a.mtu_id, mtd_id = lstMatriculaDisciplina.Find(m => m.alu_id == a.alu_id && m.mtu_id == a.mtu_id && m.tud_id == p.tud_id).mtd_id, aea_avaliacao = a.aea_avaliacao, aea_relatorio = a.aea_relatorio, aea_entregue = a.aea_entregue, aea_dataAlteracao = a.aea_dataAlteracao, aea_situacao = 1 }; lstTurmaAtividadeExtraClasseAluno.Add(ent); }); if (!lstTudId.Any(t => t == p.tud_id)) { lstTudId.Add(p.tud_id); } }); } using (DataTable dt = lstTurmaAtividadeExtraClasseAluno.Select(p => new TipoTabela_TurmaAtividadeExtraClasseALuno(p).ToDataRow()).CopyToDataTable()) { CLS_TurmaAtividadeExtraClasseAlunoDAO dao = new CLS_TurmaAtividadeExtraClasseAlunoDAO(); dao._Banco = banco; if (dao.SalvarEmLote(dt)) { // Caso o fechamento seja automático, grava na fila de processamento. if (fechamentoAutomatico && tud_tipo != (byte)TurmaDisciplinaTipo.DocenteEspecificoComplementacaoRegencia && tpc_id != ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_PERIODO_CALENDARIO_RECESSO, ent_id)) { CLS_AlunoFechamentoPendenciaBO.SalvarFilaFrequencia(tud_id, tpc_id, banco); } if (lstTudId.Any()) { List <TUR_TurmaDisciplina> turmaDisciplina = TUR_TurmaDisciplinaBO.GetSelectBy_Turma(tur_id, null, GestaoEscolarUtilBO.MinutosCacheLongo); lstTudId.ForEach(p => { if (fechamentoAutomatico && turmaDisciplina.Find(t => t.tud_id == p).tud_tipo != (byte)TurmaDisciplinaTipo.DocenteEspecificoComplementacaoRegencia && tpc_id != ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_PERIODO_CALENDARIO_RECESSO, ent_id)) { CLS_AlunoFechamentoPendenciaBO.SalvarFilaFrequencia(p, tpc_id, banco); } } ); } return(true); } return(false); } } catch (Exception ex) { banco.Close(ex); throw; } finally { if (banco.ConnectionIsOpen) { banco.Close(); } } }
private void UCComboTurmaDisciplina_IndexChanged() { try { UCCPeriodoCalendario.Valor = new[] { -1, -1 }; UCCPeriodoCalendario.PermiteEditar = false; // utilizado para evitar chamar o evento de alteracao do calendario periodo duas vezes seguidas. bool selecionouComboPeriodos = false; if (UCCTurmaDisciplina1.Valor > -1) { long tur_id = Convert.ToInt64(ddlTurma.SelectedValue); TUR_Turma entTurma = new TUR_Turma { tur_id = tur_id }; TUR_TurmaBO.GetEntity(entTurma); ACA_CalendarioAnual entCalendario = new ACA_CalendarioAnual { cal_id = entTurma.cal_id }; ACA_CalendarioAnualBO.GetEntity(entCalendario); ACA_FormatoAvaliacao entFormatoAvaliacao = new ACA_FormatoAvaliacao { fav_id = entTurma.fav_id }; ACA_FormatoAvaliacaoBO.GetEntity(entFormatoAvaliacao); VS_FechamentoAutomatico = entFormatoAvaliacao.fav_fechamentoAutomatico; TUR_TurmaDisciplina entityTurmaDisciplina = new TUR_TurmaDisciplina { tud_id = UCCTurmaDisciplina1.Valor }; TUR_TurmaDisciplinaBO.GetEntity(entityTurmaDisciplina); if (entityTurmaDisciplina.tud_naoLancarFrequencia) { lblMessage.Text = UtilBO.GetErroMessage(GetGlobalResourceObject("Mensagens", "MSG_DISCIPLINA") + " não pode lançar frequência na turma.", UtilBO.TipoMensagem.Alerta); UCCTurmaDisciplina1.Valor = -1; } else { bool sucessoProcessarPendenciaFechamento = true; if (VS_FechamentoAutomatico) { var pendencias = CLS_AlunoFechamentoPendenciaBO.SelecionarAguardandoProcessamento(tur_id, entityTurmaDisciplina.tud_id, entityTurmaDisciplina.tud_tipo, 0); if ((pendencias != null) && (pendencias.Rows.Count > 0)) { try { // limpa cache desta turma string pattern; pattern = String.Format("{0}_{1}", ModelCache.FECHAMENTO_AUTO_BIMESTRE_PATTERN_KEY, entityTurmaDisciplina.tud_id); CacheManager.Factory.RemoveByPattern(pattern); pattern = String.Format("{0}_{1}", ModelCache.FECHAMENTO_AUTO_BIMESTRE_FILTRO_DEFICIENCIA_PATTERN_KEY, entityTurmaDisciplina.tud_id); CacheManager.Factory.RemoveByPattern(pattern); pattern = String.Format("{0}_{1}", ModelCache.FECHAMENTO_AUTO_BIMESTRE_COMPONENTES_REGENCIA_PATTERN_KEY, tur_id); CacheManager.Factory.RemoveByPattern(pattern); pattern = String.Format("{0}_{1}", ModelCache.FECHAMENTO_AUTO_FINAL_PATTERN_KEY, entityTurmaDisciplina.tud_id); CacheManager.Factory.RemoveByPattern(pattern); pattern = String.Format("{0}_{1}", ModelCache.FECHAMENTO_AUTO_FINAL_FILTRO_DEFICIENCIA_PATTERN_KEY, entityTurmaDisciplina.tud_id); CacheManager.Factory.RemoveByPattern(pattern); pattern = String.Format("{0}_{1}", ModelCache.FECHAMENTO_AUTO_FINAL_COMPONENTES_REGENCIA_PATTERN_KEY, tur_id); CacheManager.Factory.RemoveByPattern(pattern); pattern = String.Format(ModelCache.PENDENCIAS_DISCIPLINA_MODEL_KEY, entTurma.esc_id, entTurma.uni_id, entCalendario.cal_ano, entityTurmaDisciplina.tud_id); CacheManager.Factory.Remove(pattern); CLS_AlunoFechamentoPendenciaBO.Processar(entityTurmaDisciplina.tud_id, (byte)AvaliacaoTipo.Final, pendencias); } catch (Exception ex) { sucessoProcessarPendenciaFechamento = false; ApplicationWEB._GravaErro(ex); lblMessage.Text = UtilBO.GetErroMessage(GetGlobalResourceObject("Classe", "CompensacaoAusencia.Cadastro.MensagemErroProcessarPendenciaFechamento").ToString(), UtilBO.TipoMensagem.Erro); } } } if (sucessoProcessarPendenciaFechamento) { UCCPeriodoCalendario.CarregarPorPeriodoEventoEfetivacaoVigentes(entTurma.cal_id, UCCTurmaDisciplina1.Valor, entTurma.tur_id, true); selecionouComboPeriodos = UCCPeriodoCalendario.Valor[0] != -1 && UCCPeriodoCalendario.Valor[1] != -1; UCCPeriodoCalendario.SetarFoco(); UCCPeriodoCalendario.PermiteEditar = true; } VS_DisciplinaEspecial = entityTurmaDisciplina.tud_disciplinaEspecial; VS_posicao = TUR_TurmaDocenteBO.SelecionaPosicaoPorDocenteTurma(_VS_doc_id, UCCTurmaDisciplina1.Valor, ApplicationWEB.AppMinutosCacheLongo); VS_tipoDocente = ACA_TipoDocenteBO.SelecionaTipoDocentePorPosicao(VS_posicao, ApplicationWEB.AppMinutosCacheLongo); } } if (!selecionouComboPeriodos) { UCCPeriodoCalendario_IndexChanged(); } } catch (Exception ex) { ApplicationWEB._GravaErro(ex); lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar carregar os dados.", UtilBO.TipoMensagem.Erro); } }
/// <summary> /// Carrega dados da turma na tela para alteração. /// </summary> /// <param name="tur_id">ID da turma</param> private void CarregarDadosAlteracao(long tur_id) { try { VS_tur_id = tur_id; // Carregar entidades. TUR_Turma entTurma = new TUR_Turma { tur_id = tur_id }; TUR_TurmaBO.GetEntity(entTurma); ESC_Escola entEscola = new ESC_Escola { esc_id = entTurma.esc_id }; ESC_EscolaBO.GetEntity(entEscola); DtVigenciasDocentes = TUR_TurmaDocenteBO.SelecionaVigenciasDocentesPorDisciplina(entTurma.tur_id); List <TUR_TurmaCurriculo> listaCurriculos = TUR_TurmaCurriculoBO.GetSelectBy_Turma(entTurma.tur_id, ApplicationWEB.AppMinutosCacheLongo); List <CadastroTurmaDisciplina> listaDisciplinas = TUR_TurmaDisciplinaBO.GetSelectCadastradosBy_Turma(tur_id); if (!ValidaDadosTurma(entTurma, entEscola, listaCurriculos, listaDisciplinas)) { return; } uccFiltroEscola.Uad_ID = entEscola.uad_idSuperior; uccFiltroEscola_IndexChangedUA(); uccFiltroEscola.SelectedValueEscolas = new[] { entTurma.esc_id, entTurma.uni_id }; uccFiltroEscola_IndexChangedUnidadeEscola(); int cur_id = listaCurriculos[0].cur_id; int crr_id = listaCurriculos[0].crr_id; uccCursoCurriculo.Valor = new[] { cur_id, crr_id }; UCComboCursoCurriculo1_IndexChanged(); uccCalendario.Valor = entTurma.cal_id; UCComboCalendario1_IndexChanged(); VS_tud_id = listaDisciplinas[0].entTurmaDisciplina.tud_id; VS_tdt_id = listaDisciplinas[0].entTurmaDocente.tdt_id; uccDisciplina.Valor = listaDisciplinas[0].entTurmaDiscRelDisciplina.dis_id; UCComboDisciplina1_OnSelectedIndexChanged(); uccFormatoAvaliacao.CarregarFormatoPorFormatoPadraoAtivo(entTurma.fav_id); uccFormatoAvaliacao.Valor = entTurma.fav_id; UCComboFormatoAvaliacao1_IndexChanged(); txtCodigoTurma.Text = entTurma.tur_codigo; txtCodigoInep.Text = entTurma.tur_codigoInep; txtCapacidade.Text = entTurma.tur_vagas.ToString(); txtMinimoMatriculados.Text = entTurma.tur_minimoMatriculados.ToString(); // Carga horária semanal da disciplina. txtAulasSemanais.Text = listaDisciplinas[0].entTurmaDisciplina.tud_cargaHorariaSemanal.ToString(); foreach (ListItem item in chkPeriodosCurso.Items) { int crp_id = Convert.ToInt32(item.Value); item.Selected = listaCurriculos.Exists(p => p.crp_id == crp_id); } foreach (ListItem item in chkPeriodosCalendario.Items) { int tpc_id = Convert.ToInt32(item.Value); item.Selected = listaDisciplinas[0].entTurmaCalendario.Exists(p => p.tpc_id == tpc_id); } ACA_Disciplina entDis = new ACA_Disciplina { dis_id = listaDisciplinas[0].entTurmaDiscRelDisciplina.dis_id }; ACA_DisciplinaBO.GetEntity(entDis); DataTable informacoesDocente = ACA_DocenteBO.SelecionaPorColaboradorDocente( listaDisciplinas[0].entTurmaDocente.col_id, listaDisciplinas[0].entTurmaDocente.doc_id); bool bloqueioAtribuicao = false; divDocente.Visible = true; if (informacoesDocente.Rows.Count > 0) { UCControleVigenciaDocentes.CarregarDocente( informacoesDocente.Rows[0]["pes_nome"].ToString(), 1, 1, VS_tud_id, ref dtDocentes, entDis.tds_id, entTurma.esc_id, entTurma.uni_id, entTurma.tur_docenteEspecialista , bloqueioAtribuicao , ref DtVigenciasDocentes); } // Verifica se possui parametros de formacao MTR_ParametroFormacaoTurma entityFormacao = MTR_ParametroFormacaoTurmaBO.SelecionaParametroPorAnoCurso(cur_id, crr_id, __SessionWEB.__UsuarioWEB.Usuario.ent_id); if (entityFormacao != null) { uccTurno.CarregarTurnoPorParametroPeriodo(entityFormacao); } else { uccTurno.CarregarTurnoPorTurnoAtivo(entTurma.trn_id); } uccTurno.Valor = entTurma.trn_id; if (entTurma.tur_participaRodizio) { chkRodizio.Checked = true; } if (entTurma.tur_situacao == (byte)TUR_TurmaSituacao.Aguardando) { ddlSituacao.Items.Add(new ListItem("Aguardando", ((byte)TUR_TurmaSituacao.Aguardando).ToString())); } ddlSituacao.SelectedValue = entTurma.tur_situacao.ToString(); DesabilitaDadosAlteracao(entityFormacao); RegistraScriptConfirmacao(entTurma); } 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 a turma de eletiva.", UtilBO.TipoMensagem.Erro); } }
private void uccTurmaDisciplina_IndexChanged() { try { string[] valor = UCControleTurma1.ValorTurmas.Split(';'); if (valor.Length > 4) { byte tud_tipo = Convert.ToByte(valor[4]); bool dialogDocCompartilhada = false; if (tud_tipo == (byte)ACA_CurriculoDisciplinaTipo.DocenciaCompartilhada) { long tud_id = Convert.ToInt64(valor[1]); List <sTurmaDisciplinaRelacionada> lstDisciplinaCompartilhada = VS_historico ? TUR_TurmaDisciplinaBO.SelectRelacionadaVigenteBy_DisciplinaCompartilhada(tud_id, ApplicationWEB.AppMinutosCacheLongo, false, __SessionWEB.__UsuarioWEB.Docente.doc_id) : TUR_TurmaDisciplinaBO.SelectRelacionadaVigenteBy_DisciplinaCompartilhada(tud_id, ApplicationWEB.AppMinutosCacheLongo); if (lstDisciplinaCompartilhada.Count > 1) { UCSelecaoDisciplinaCompartilhada1.AbrirDialog(tud_id, VS_historico ? __SessionWEB.__UsuarioWEB.Docente.doc_id : 0, UCControleTurma1.TextoSelecionadoTurmas); dialogDocCompartilhada = true; hdnValorTurmas.Value = UCControleTurma1.ValorTurmas; } } if (!dialogDocCompartilhada) { Session["tud_id"] = valor[1].ToString(); Session["tdt_posicao"] = valor[3].ToString(); Session["PaginaRetorno"] = UCNavegacaoTelaPeriodo.VS_paginaRetorno; Session["VS_TpcId"] = UCNavegacaoTelaPeriodo.VS_tpc_id; Session["VS_TpcOrdem"] = UCNavegacaoTelaPeriodo.VS_tpc_ordem; if (valor.Length > 7) { Session["tur_tipo"] = valor[5].ToString(); Session["tur_idNormal"] = valor[6].ToString(); Session["tud_idAluno"] = valor[7].ToString(); } if (VS_turmaDisciplinaRelacionada.tud_id > 0) { Session["TudIdCompartilhada"] = VS_turmaDisciplinaRelacionada.tud_id.ToString(); } Session["Historico"] = VS_historico; bool fechamentoAutomatico = valor.Length > 8 && valor[8].ToString() == "true"; if (fechamentoAutomatico) { RedirecionarPagina("~/Academico/ControleTurma/Fechamento.aspx"); } else { RedirecionarPagina("~/Academico/ControleTurma/Efetivacao.aspx"); } } } } catch (Exception ex) { ApplicationWEB._GravaErro(ex); lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar carregar os dados.", UtilBO.TipoMensagem.Erro); } }
/// <summary> /// Gera o relatorio com base nos filtros selecionados. /// </summary> private void GerarRel() { SalvarBusca(); bool turmaRegencia = TUR_TurmaDisciplinaBO.GetSelectBy_Turma(UCComboTurma1.Valor[0], null, ApplicationWEB.AppMinutosCacheLongo).Any(t => t.tud_tipo == (byte)TurmaDisciplinaTipo.Regencia); // mostra a quantidade de dias letivos no ano int numeroDiasUteis = GestaoEscolarUtilBO.NumeroDeDiasUteis(UCComboCalendario1.Valor, UCComboUAEscola.Esc_ID, UCComboUAEscola.Uni_ID, __SessionWEB.__UsuarioWEB.Usuario.ent_id, turmaRegencia); string parameter = string.Empty; string parametroAtivDiversificada = ACA_ParametroAcademicoBO.ParametroValorPorEntidade(eChaveAcademico.TIPO_EVENTO_ATIVIDADE_DIVERSIFICADA, __SessionWEB.__UsuarioWEB.Usuario.ent_id); string report = ((int)MSTech.GestaoEscolar.BLL.ReportNameGestaoAcademica.DivergenciasRematriculas).ToString(); Guid uad_idSuperior = UCComboUAEscola.Uad_ID; string DRE = UCComboUAEscola.DdlUA.SelectedItem.Text; if (uad_idSuperior.Equals(Guid.Empty)) { ESC_Escola esc = new ESC_Escola { esc_id = UCComboUAEscola.Esc_ID }; ESC_EscolaBO.GetEntity(esc); uad_idSuperior = esc.uad_idSuperiorGestao; if (uad_idSuperior.Equals(Guid.Empty)) { SYS_UnidadeAdministrativa uad = new SYS_UnidadeAdministrativa { uad_id = esc.uad_id, ent_id = __SessionWEB.__UsuarioWEB.Usuario.ent_id }; SYS_UnidadeAdministrativaBO.GetEntity(uad); uad_idSuperior = uad.uad_idSuperior; } SYS_UnidadeAdministrativa uadSuperior = new SYS_UnidadeAdministrativa { uad_id = uad_idSuperior, ent_id = __SessionWEB.__UsuarioWEB.Usuario.ent_id }; SYS_UnidadeAdministrativaBO.GetEntity(uadSuperior); DRE = uadSuperior.uad_nome; } parameter = "cal_id=" + UCComboCalendario1.Valor.ToString() + "&uad_idSuperior=" + uad_idSuperior.ToString() + "&esc_id=" + UCComboUAEscola.Esc_ID.ToString() + "&uni_id=" + UCComboUAEscola.Uni_ID.ToString() + "&cur_id=" + UCComboCursoCurriculo1.Valor[0].ToString() + "&crr_id=" + UCComboCursoCurriculo1.Valor[1].ToString() + "&crp_id=" + UCComboCurriculoPeriodo1.Valor[2].ToString() + "&mostraCodigoEscola=" + ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.ORDENAR_ESCOLAS_POR_CODIGO, __SessionWEB.__UsuarioWEB.Usuario.ent_id) + "&tur_id=" + UCComboTurma1.Valor[0].ToString() + "&logo=" + String.Concat(MSTech.GestaoEscolar.BLL.CFG_ServidorRelatorioBO.CarregarServidorRelatorioPorEntidade(__SessionWEB.__UsuarioWEB.Usuario.ent_id, ApplicationWEB.AppMinutosCacheLongo).srr_pastaRelatorios.ToString() , ApplicationWEB.LogoRelatorioSSRS) + "&mensagemAlerta=" + GetGlobalResourceObject("Relatorios", "DivergenciasRematriculas.Busca.MensagemAviso") + "&periodoCurso=" + GestaoEscolarUtilBO.nomePadraoPeriodo(__SessionWEB.__UsuarioWEB.Usuario.ent_id) + "&nomeMunicipio=" + GetGlobalResourceObject("Reporting", "Reporting.DocDctSubCabecalhoRetrato.Municipio") + "&nomeSecretaria=" + GetGlobalResourceObject("Reporting", "Reporting.DocDctSubCabecalhoRetrato.Secretaria") + "&cal_ano=" + UCComboCalendario1.Cal_ano.ToString() + "&ent_id=" + __SessionWEB.__UsuarioWEB.Usuario.ent_id.ToString() + "&adm=" + (__SessionWEB.__UsuarioWEB.Grupo.vis_id == SysVisaoID.Administracao) + "&usu_id=" + __SessionWEB.__UsuarioWEB.Usuario.usu_id + "&gru_id=" + __SessionWEB.__UsuarioWEB.Grupo.gru_id + "&DRE=" + DRE; MSTech.GestaoEscolar.BLL.CFG_RelatorioBO.CallReport("Relatorios", report, parameter, HttpContext.Current); }
/// <summary> /// Realiza as validações necessárias e salva a atividade extraclasse. /// </summary> /// <param name="entity"></param> /// <returns></returns> public static bool Salvar(CLS_TurmaAtividadeExtraClasse entity, int cal_id, bool fechamentoAutomatico, Guid ent_id, List <long> lstDisciplinas, Guid usu_id, long tur_id) { TalkDBTransaction banco = new CLS_TurmaAtividadeExtraClasseDAO()._Banco.CopyThisInstance(); banco.Open(IsolationLevel.ReadCommitted); try { List <CLS_TurmaAtividadeExtraClasse> lstEntities = new List <CLS_TurmaAtividadeExtraClasse>(); bool isNew = entity.IsNew; if (lstDisciplinas.Count > 0) { if (isNew) { CLS_TurmaAtividadeExtraClasseRelacionada relacionada = new CLS_TurmaAtividadeExtraClasseRelacionada(); relacionada.IsNew = true; relacionada.usu_id = usu_id; if (CLS_TurmaAtividadeExtraClasseRelacionadaBO.Save(relacionada, banco)) { entity.taer_id = relacionada.taer_id; lstDisciplinas.ForEach(p => { if (p != entity.tud_id) { lstEntities.Add(new CLS_TurmaAtividadeExtraClasse { tud_id = p, tae_id = -1, taer_id = entity.taer_id, IsNew = true }); } }); } else { throw new Exception("Erro ao tentar salvar componente curricular relacionado."); } } else { List <CLS_TurmaAtividadeExtraClasse> lstRelacionadas = SelecionaAtividadeExtraclasseRelacionada(entity.taer_id); if (lstRelacionadas.Count > 0) { lstEntities.AddRange(lstRelacionadas.FindAll(p => p.tud_id != entity.tud_id)); } } lstEntities.ForEach(p => { p.tpc_id = entity.tpc_id; p.tav_id = entity.tav_id; p.tae_nome = entity.tae_nome; p.tae_descricao = entity.tae_descricao; p.tae_cargaHoraria = entity.tae_cargaHoraria; p.tdt_posicao = entity.tdt_posicao; p.IsNew = p.tae_id <= 0; }); } lstEntities.Add(entity); List <TUR_TurmaDisciplina> turmaDisciplina = TUR_TurmaDisciplinaBO.GetSelectBy_Turma(tur_id, null, GestaoEscolarUtilBO.MinutosCacheLongo); CLS_TurmaAtividadeExtraClasseDAO dao = new CLS_TurmaAtividadeExtraClasseDAO(); dao._Banco = banco; foreach (CLS_TurmaAtividadeExtraClasse atividade in lstEntities) { if (atividade.Validate()) { if (VerificaExistePorDisciplinaNomeTipoBimestre(atividade)) { throw new ValidationException(string.Format("Já existe uma atividade extraclasse com o mesmo nome e tipo para o componente curricular '{0}' no bimestre.", TUR_TurmaDisciplinaBO.GetEntity(new TUR_TurmaDisciplina { tud_id = atividade.tud_id }).tud_nome)); } decimal dis_cargaHorariaExtraClasse = 0, cargaAtividadeExtraTotal = 0; if (VerificaCargaHorariaCursoCalendario(atividade, cal_id, out dis_cargaHorariaExtraClasse, out cargaAtividadeExtraTotal)) { throw new ValidationException(string.Format("A soma de carga horária de atividades extraclasse ({0}) está acima da máxima permitida pelo componente curricular '{1}' ({2}).", cargaAtividadeExtraTotal, TUR_TurmaDisciplinaBO.GetEntity(new TUR_TurmaDisciplina { tud_id = atividade.tud_id }).tud_nome, dis_cargaHorariaExtraClasse)); } if (dao.Salvar(atividade)) { // Caso o fechamento seja automático, grava na fila de processamento. if (!isNew && fechamentoAutomatico && turmaDisciplina.Find(t => t.tud_id == atividade.tud_id).tud_tipo != (byte)TurmaDisciplinaTipo.DocenteEspecificoComplementacaoRegencia && atividade.tpc_id != ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_PERIODO_CALENDARIO_RECESSO, ent_id)) { CLS_AlunoFechamentoPendenciaBO.SalvarFilaFrequencia(atividade.tud_id, atividade.tpc_id, banco); } } } } return(true); } catch (Exception ex) { banco.Close(ex); throw; } finally { if (banco.ConnectionIsOpen) { banco.Close(); } } throw new ValidationException(GestaoEscolarUtilBO.ErrosValidacao(entity)); }
/// <summary> /// Carrega as turmas de recuperação paralela de acordo com a escola e o calendário. /// </summary> /// <param name="esc_id">Id da escola</param> /// <param name="cal_id">Id do calendário</param> public void CarregarTurmaDisciplinaEletivaAluno(int esc_id, int cal_id) { CarregarCombo(TUR_TurmaDisciplinaBO.GetSelectEletivaAlunoBy_EscolaCalendario(esc_id, cal_id)); }
public static bool Delete(CLS_RelatorioPreenchimentoAlunoTurmaDisciplina entity, int rea_id) { CLS_RelatorioPreenchimentoAlunoTurmaDisciplinaDAO dao = new CLS_RelatorioPreenchimentoAlunoTurmaDisciplinaDAO(); dao._Banco.Open(IsolationLevel.ReadCommitted); try { bool sucesso = Delete(entity, dao._Banco); if (sucesso) { CLS_RelatorioAtendimento relatorioAtendimento = CLS_RelatorioAtendimentoBO.GetEntity(new CLS_RelatorioAtendimento { rea_id = rea_id }); if (relatorioAtendimento.rea_tipo == (byte)CLS_RelatorioAtendimentoTipo.RP) { ACA_CalendarioAnual calendario = ACA_CalendarioAnualBO.SelecionaPorTurma(entity.tur_id); List <MTR_MatriculaTurma> matriculasAno = MTR_MatriculaTurmaBO.GetSelectMatriculasAlunoAno(entity.alu_id, calendario.cal_ano); matriculasAno.ForEach(p => LimpaCache_AlunoPreenchimentoPorPeriodoDisciplina(entity.tpc_id, p.tur_id)); ACA_FormatoAvaliacao fav = TUR_TurmaBO.SelecionaFormatoAvaliacao(entity.tur_id, dao._Banco); if (fav != null && fav.fav_fechamentoAutomatico) { CLS_AlunoFechamentoPendenciaBO.SalvarFilaPendencias(entity.tud_id, entity.tpc_id, dao._Banco); } } else if (relatorioAtendimento.rea_tipo == (byte)CLS_RelatorioAtendimentoTipo.NAAPA) { List <AlunoFechamentoPendencia> FilaProcessamento = new List <AlunoFechamentoPendencia>(); ACA_CalendarioAnual cal = ACA_CalendarioAnualBO.SelecionaPorTurma(entity.tur_id, dao._Banco); var periodos = ACA_CalendarioPeriodoBO.SelecionaPor_Calendario(cal.cal_id, GestaoEscolarUtilBO.MinutosCacheLongo); FilaProcessamento.AddRange(TUR_TurmaDisciplinaBO.GetSelectBy_Turma(entity.tur_id, dao._Banco, GestaoEscolarUtilBO.MinutosCacheLongo) .SelectMany ( tud => periodos.Select ( tpc => new AlunoFechamentoPendencia { tud_id = tud.tud_id , tpc_id = tpc.tpc_id , afp_frequencia = true , afp_nota = true , afp_processado = 2 } ).ToList() )); if (FilaProcessamento.Any()) { CLS_AlunoFechamentoPendenciaBO.SalvarFilaPendencias(FilaProcessamento, dao._Banco); } } } return(sucesso); } catch (Exception ex) { dao._Banco.Close(ex); throw; } finally { if (dao._Banco.ConnectionIsOpen) { dao._Banco.Close(); } } }
/// <summary> /// O método salva as observações para conselho pedagógico. /// </summary> /// <param name="tur_id">ID da turma.</param> /// <param name="alu_id">ID do aluno.</param> /// <param name="mtu_id">ID da matrícula turma do aluno.</param> /// <param name="fav_id">ID do formato de avaliação.</param> /// <param name="ava_id">ID da avaliação.</param> /// <param name="ltObservacao">Lista de observações.</param> /// <param name="banco">Banco</param> /// <param name="ent_id">Id da entidade do usuário logado.</param> /// <returns></returns> public static bool SalvarObservacao ( long tur_id, long alu_id, int mtu_id, long[] tud_ids, List <CLS_AlunoAvaliacaoTurmaObservacao> listaObservacao, List <CLS_AlunoAvaliacaoTurma> listaAlunoAvaliacaoTurma, List <CLS_AlunoAvaliacaoTurmaDisciplina> listaAlunoAvaliacaoTurmaDisciplina, List <ACA_AlunoAnotacao> listaAlunoAnotacao, bool permiteEditarResultadoFinal, Guid usu_idLogado, byte resultado, DateTime dataUltimaAlteracaoObservacao, DateTime dataUltimaAlteracaoNotaFinal, ACA_FormatoAvaliacao entFormatoAvaliacao, List <CLS_AvaliacaoTurDisc_Cadastro> listaDisciplina, List <MTR_MatriculaTurmaDisciplina> listaMatriculaTurmaDisciplina, int tamanhoMaximoKB, string[] TiposArquivosPermitidos, ref List <CLS_AlunoAvaliacaoTurmaDisciplina> listaAtualizacaoEfetivacao, Guid ent_id, IDictionary <int, int> dicAvaTpc, List <CLS_AlunoAvaliacaoTurmaObservacaoBO.DadosAlunoObservacao> listaDadosPeriodo ) { TalkDBTransaction banco = new CLS_AlunoAvaliacaoTurmaObservacaoDAO()._Banco.CopyThisInstance(); banco.Open(IsolationLevel.ReadCommitted); List <AlunoFechamentoPendencia> FilaProcessamento = new List <AlunoFechamentoPendencia>(); int tpc_idUltimoPeriodo = (dicAvaTpc.Count() > 0 ? dicAvaTpc.Max(p => p.Value) : 0); try { foreach (CLS_AlunoAvaliacaoTurmaObservacao observacao in listaObservacao) { observacao.usu_idAlteracao = usu_idLogado; Save(observacao, banco); } foreach (CLS_AlunoAvaliacaoTurma alunoAvaliacaoTurma in listaAlunoAvaliacaoTurma) { CLS_AlunoAvaliacaoTurmaBO.Save(alunoAvaliacaoTurma, banco); } object lockObject = new object(); DataTable dtAlunoAvaliacaoTurmaDisciplina = CLS_AlunoAvaliacaoTurmaDisciplina.TipoTabela_AlunoAvaliacaoTurmaDisciplina(); if (listaAlunoAvaliacaoTurmaDisciplina.Any()) { Parallel.ForEach ( listaAlunoAvaliacaoTurmaDisciplina, alunoAvaliacaoTurmaDisciplina => { lock (lockObject) { DataRow drAlunoAvaliacaoTurmaDisciplina = dtAlunoAvaliacaoTurmaDisciplina.NewRow(); dtAlunoAvaliacaoTurmaDisciplina.Rows.Add( CLS_AlunoAvaliacaoTurmaDisciplinaBO.EntityToDataRow(alunoAvaliacaoTurmaDisciplina, drAlunoAvaliacaoTurmaDisciplina)); } } ); } if (dtAlunoAvaliacaoTurmaDisciplina.Rows.Count > 0) { CLS_AlunoAvaliacaoTurmaDisciplinaBO.SalvarEmLotePosConselho(dtAlunoAvaliacaoTurmaDisciplina, banco); if (entFormatoAvaliacao.fav_fechamentoAutomatico && listaAlunoAvaliacaoTurmaDisciplina.Any()) { FilaProcessamento.AddRange(listaAlunoAvaliacaoTurmaDisciplina .Select(p => new AlunoFechamentoPendencia { tud_id = p.tud_id, tpc_id = (p.tpc_id > 0 ? p.tpc_id : tpc_idUltimoPeriodo), afp_frequencia = true, afp_nota = true, afp_processado = (Byte)(p.atd_id <= 0 ? 0 : 2) }).ToList()); } } foreach (ACA_AlunoAnotacao alunoAnotacao in listaAlunoAnotacao) { ACA_AlunoAnotacaoBO.Save(alunoAnotacao, banco); } CLS_AlunoAvaliacaoTurmaDisciplinaBO.SaveAvaliacaoFinal( tur_id , entFormatoAvaliacao , listaDisciplina , tamanhoMaximoKB , TiposArquivosPermitidos , dataUltimaAlteracaoNotaFinal , listaMatriculaTurmaDisciplina , ref listaAtualizacaoEfetivacao , banco); if (entFormatoAvaliacao.fav_fechamentoAutomatico && listaMatriculaTurmaDisciplina.Any() && (tpc_idUltimoPeriodo > 0)) { FilaProcessamento.AddRange(listaMatriculaTurmaDisciplina .Select(p => new AlunoFechamentoPendencia { tud_id = p.tud_id, tpc_id = tpc_idUltimoPeriodo, afp_frequencia = true, afp_nota = true, afp_processado = (Byte)(p.mtd_id <= 0 ? 0 : 2) }).ToList()); } if (permiteEditarResultadoFinal) { // Se for passado o resultado, salva na MTR_MatriculaTurma. MTR_MatriculaTurma entMatr = new MTR_MatriculaTurma { alu_id = alu_id , mtu_id = mtu_id }; MTR_MatriculaTurmaBO.GetEntity(entMatr, banco); // So registra a alteracao do parecer conclusivo (resultado) // se for um registro novo e tem valor selecionado, ou se houve alteracao do valor. if ((entMatr.IsNew && entMatr.mtu_resultado > 0) || entMatr.mtu_resultado != resultado) { // Se o registro foi alterado depois da data da alteração mais recente no momento em que os dados foram carregados, // interrompe o salvamento e alerta o usuário de que é necessário atualizar os dados if (entMatr != null && !entMatr.IsNew && Convert.ToDateTime(entMatr.mtu_dataAlteracao.ToString()) > dataUltimaAlteracaoObservacao) { throw new ValidationException("Existe registro alterado mais recentemente, é necessário atualizar os dados."); } else { entMatr.usu_idResultado = usu_idLogado; entMatr.mtu_resultado = resultado; MTR_MatriculaTurmaBO.Save(entMatr, banco); if (ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.GERAR_HISTORICO_SALVAR_PARECER_CONCLUSIVO, ent_id)) { ACA_AlunoHistoricoBO.GeracaoHistoricoPedagogicoPorAluno(entMatr.alu_id, entMatr.mtu_id, banco); } if (entFormatoAvaliacao.fav_fechamentoAutomatico) { FilaProcessamento.Add(new AlunoFechamentoPendencia { tud_id = tud_ids.FirstOrDefault(), tpc_id = tpc_idUltimoPeriodo, afp_frequencia = true, afp_nota = true, afp_processado = (Byte)(entMatr.IsNew == true ? 0 : 2) }); } } } } // Limpa cache do fechamento, para atualizar o check, as notas pos-conselho, o parecer e a sintese final. string chave = string.Empty; int tpcId = -1; listaDadosPeriodo.ForEach(q => { // Fechamento de bimestre chave = MTR_MatriculaTurmaBO.RetornaChaveCache_GetSelectBy_Turma_Periodo(tur_id, entFormatoAvaliacao.fav_id, q.ava_id); if (HttpContext.Current != null) { HttpContext.Current.Cache.Remove(chave); } chave = MTR_MatriculaTurmaDisciplinaBO.RetornaChaveCache_GetSelect_ComponentesRegencia_By_TurmaFormato(tur_id, entFormatoAvaliacao.fav_id, q.ava_id); CacheManager.Factory.Remove(chave); // Fechamento final chave = MTR_MatriculaTurmaBO.RetornaChaveCache_GetSelectBy_Turma_Final(tur_id, entFormatoAvaliacao.fav_id, q.ava_id); if (HttpContext.Current != null) { HttpContext.Current.Cache.Remove(chave); } chave = MTR_MatriculaTurmaDisciplinaBO.RetornaChaveCache_GetSelect_ComponentesRegencia_By_TurmaFormato_Final(tur_id, entFormatoAvaliacao.fav_id, q.ava_id); CacheManager.Factory.Remove(chave); // Fechamento automatico de bimestre if (dicAvaTpc.TryGetValue(q.ava_id, out tpcId)) { chave = String.Format(ModelCache.FECHAMENTO_AUTO_BIMESTRE_COMPONENTES_REGENCIA_MODEL_KEY, tur_id, tpcId); CacheManager.Factory.Remove(chave); } // Fechamento automatico final chave = String.Format(ModelCache.FECHAMENTO_AUTO_FINAL_COMPONENTES_REGENCIA_MODEL_KEY, tur_id); CacheManager.Factory.Remove(chave); }); List <TUR_TurmaDisciplina> listaDisciplinas = TUR_TurmaDisciplinaBO.GetSelectBy_Turma(tur_id, null, GestaoEscolarUtilBO.MinutosCacheLongo); listaDisciplinas.ForEach(p => { // Fechamento de bimestre chave = String.Format("{0}_{1}_{2}", ModelCache.FECHAMENTO_BIMESTRE_PATTERN_KEY, p.tud_id, entFormatoAvaliacao.fav_id); CacheManager.Factory.RemoveByPattern(chave); chave = String.Format("{0}_{1}_{2}", ModelCache.FECHAMENTO_BIMESTRE_FILTRO_DEFICIENCIA_PATTERN_KEY, p.tud_id, entFormatoAvaliacao.fav_id); CacheManager.Factory.RemoveByPattern(chave); // Fechamento final chave = String.Format("{0}_{1}_{2}", ModelCache.FECHAMENTO_FINAL_PATTERN_KEY, p.tud_id, entFormatoAvaliacao.fav_id); CacheManager.Factory.RemoveByPattern(chave); chave = String.Format("{0}_{1}_{2}", ModelCache.FECHAMENTO_FINAL_FILTRO_DEFICIENCIA_PATTERN_KEY, p.tud_id, entFormatoAvaliacao.fav_id); CacheManager.Factory.RemoveByPattern(chave); // Fechamento automatico final chave = String.Format(ModelCache.FECHAMENTO_AUTO_FINAL_MODEL_KEY, p.tud_id); CacheManager.Factory.Remove(chave); chave = String.Format(ModelCache.FECHAMENTO_AUTO_FINAL_FILTRO_DEFICIENCIA_MODEL_KEY, p.tud_id); CacheManager.Factory.Remove(chave); listaDadosPeriodo.ForEach(q => { // Fechamento automatico de bimestre if (dicAvaTpc.TryGetValue(q.ava_id, out tpcId)) { chave = String.Format(ModelCache.FECHAMENTO_AUTO_BIMESTRE_MODEL_KEY, p.tud_id, tpcId); CacheManager.Factory.Remove(chave); chave = String.Format(ModelCache.FECHAMENTO_AUTO_BIMESTRE_FILTRO_DEFICIENCIA_MODEL_KEY, p.tud_id, tpcId); CacheManager.Factory.Remove(chave); } }); }); // //Adiciona tuds para processamento de pendência de notas (quando salva o parecer final foreach (long tud in tud_ids.Where(t => !FilaProcessamento.Any(f => f.tud_id == t))) { FilaProcessamento.Add(new AlunoFechamentoPendencia { tud_id = tud, tpc_id = tpc_idUltimoPeriodo, afp_frequencia = false, afp_frequenciaExterna = false, afp_nota = true, afp_processado = (byte)2 }); } if (entFormatoAvaliacao.fav_fechamentoAutomatico && FilaProcessamento.Any(a => a.tpc_id > 0)) { CLS_AlunoFechamentoPendenciaBO.SalvarFilaPendencias( FilaProcessamento .GroupBy(g => new { g.tud_id, g.tpc_id }) .Select(p => new AlunoFechamentoPendencia { tud_id = p.FirstOrDefault().tud_id, tpc_id = p.FirstOrDefault().tpc_id, afp_frequencia = p.FirstOrDefault().afp_frequencia, afp_nota = p.FirstOrDefault().afp_nota, afp_processado = FilaProcessamento .Where(w => w.tud_id == p.FirstOrDefault().tud_id&& w.tpc_id == p.FirstOrDefault().tpc_id) .Min(m => m.afp_processado) }) .Where(w => w.tpc_id > 0 && w.tpc_id != ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_PERIODO_CALENDARIO_RECESSO, ent_id)) .ToList() , banco); } return(true); } catch (ValidationException ex) { banco.Close(ex); throw; } catch (Exception ex) { banco.Close(ex); throw; } finally { if (banco.ConnectionIsOpen) { banco.Close(); } } }