/// <summary> /// Retorna a data de início e fim do período do calendário do tipo informado /// (quando informado o tpc_id). /// Quando não informado o tpc_id, retorna o primeiro período de acordo /// com as avaliações relacionadas. /// </summary> /// <param name="tpc_id">ID do tipo de período do calendário</param> /// <param name="avaliacaoesRelacionadas">IDs das avaliações relacionadas (separadas por ",")</param> /// <param name="tur_id">ID da turma</param> /// <param name="fav_id">ID do formato de avaliação</param> /// <param name="avaliacaoTipo">Tipo da avaliação</param> /// <param name="cal_id">ID do calendário</param> /// <param name="cap_dataInicio">Data de início do período</param> /// <param name="cap_dataFim">Data de fim do período</param> /// <returns></returns> public static void RetornaDatasPeriodoPor_FormatoAvaliacaoTurma ( int tpc_id , string avaliacaoesRelacionadas , long tur_id , int fav_id , AvaliacaoTipo avaliacaoTipo , int cal_id , out DateTime cap_dataInicio , out DateTime cap_dataFim ) { // Se for avaliação final, retorna a data de inicio e fim do calendário if (avaliacaoTipo == AvaliacaoTipo.Final || avaliacaoTipo == AvaliacaoTipo.ConselhoClasse) { ACA_CalendarioAnual cal = new ACA_CalendarioAnual { cal_id = cal_id }; ACA_CalendarioAnualBO.GetEntity(cal); cap_dataInicio = cal.cal_dataInicio; cap_dataFim = cal.cal_dataFim; } // Se não for avaliação final, retorna a data de inicio e fim do periodo do calendario else { RetornaDatasPeriodoPor_FormatoAvaliacaoTurma(tpc_id, avaliacaoesRelacionadas, tur_id, fav_id, out cap_dataInicio, out cap_dataFim); } }
protected void _dgvCalendarioAnual_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "Deletar") { try { int index = int.Parse(e.CommandArgument.ToString()); int cal_id = Convert.ToInt32(_dgvCalendarioAnual.DataKeys[index].Value); ACA_CalendarioAnual entity = new ACA_CalendarioAnual { cal_id = cal_id }; ACA_CalendarioAnualBO.GetEntity(entity); if (ACA_CalendarioAnualBO.Delete(entity)) { _dgvCalendarioAnual.PageIndex = 0; _dgvCalendarioAnual.DataBind(); ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Delete, "cal_id: " + cal_id); _lblMessage.Text = UtilBO.GetErroMessage("Calendário escolar excluído com sucesso.", UtilBO.TipoMensagem.Sucesso); } } 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 excluir o calendário escolar.", UtilBO.TipoMensagem.Erro); } } }
/// <summary> /// Carrega o calendario selecionado nos campos da tela. /// </summary> /// <param name="cal_id">The cal_id.</param> private void _LoadFromEntity(int cal_id) { try { ACA_CalendarioAnual _calendarioAnual = new ACA_CalendarioAnual { cal_id = cal_id }; ACA_CalendarioAnualBO.GetEntity(_calendarioAnual); if (_calendarioAnual.ent_id != __SessionWEB.__UsuarioWEB.Usuario.ent_id) { __SessionWEB.PostMessages = UtilBO.GetErroMessage("O calendário não pertence à entidade na qual você está logado.", UtilBO.TipoMensagem.Alerta); Response.Redirect("Busca.aspx", false); HttpContext.Current.ApplicationInstance.CompleteRequest(); } _VS_cal_id = _calendarioAnual.cal_id; _txtAno.Text = Convert.ToString(_calendarioAnual.cal_ano); _txtAno.Enabled = false; _txtDescricao.Text = _calendarioAnual.cal_descricao; _txtDataInicio.Text = _calendarioAnual.cal_dataInicio.ToString("dd/MM/yyyy"); _txtDataFim.Text = _calendarioAnual.cal_dataFim.ToString("dd/MM/yyyy"); ckbPermiteRecesso.Checked = _calendarioAnual.cal_permiteLancamentoRecesso; CarregaPeriodo(); _dgvCalendarioPeriodo.Columns[posExcluirAdicionarPeriodo].Visible = !(ACA_CalendarioAnualBO.VerificaTurmaPejaExistente(_VS_cal_id, __SessionWEB.__UsuarioWEB.Usuario.ent_id)); } catch (Exception ex) { ApplicationWEB._GravaErro(ex); _lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar carregar o calendário escolar.", UtilBO.TipoMensagem.Erro); } }
/// <summary> /// Carrega os dados da pagina. /// </summary> private void CarregarDados() { long alu_id = __SessionWEB.__UsuarioWEB.alu_id; int mtu_id = __SessionWEB.__UsuarioWEB.mtu_id; int esc_id = __SessionWEB.__UsuarioWEB.esc_id; _VS_cal_id = ACA_CalendarioEscolaBO.SelectCalendarioByAluIdMtuIdEscId(alu_id, mtu_id, esc_id); if (_VS_cal_id > 0) { ACA_CalendarioAnual calendario = new ACA_CalendarioAnual { cal_id = _VS_cal_id }; ACA_CalendarioAnualBO.GetEntity(calendario); CalendarioAnual = calendario; // busca os periodos referentes ao calendário Periodos = ACA_CalendarioPeriodoBO.Seleciona_cal_id(CalendarioAnual.cal_id, false, 1, 1); // busca os dias não úteis DiasNaoUteis = SYS_DiaNaoUtilBO.SelecionaTodosPorCidade(CarregarCidadeUsuarioLogado()); // mostra o nome da calendário lblCalendario.Text = "Calendário escolar: <b>" + CalendarioAnual.cal_descricao + "</b>"; // mostra o ano letivo lblAnoLetivo.Text = "Ano Letivo: <b>" + CalendarioAnual.cal_ano + "</b>"; Eventos = ACA_CalendarioEventoBO.BuscaEventosCalendario( CalendarioAnual.cal_id, false, esc_id ); IniciaRepeater(); IniciaRepeaterDiasLetivos(); CriaTabelaLegenda(); // mostra a quantidade de dias letivos no ano int totalDeDiasLetivos = NumeroDeDiasUteis(CalendarioAnual.cal_dataInicio, CalendarioAnual.cal_dataFim); //- NumeroDeDiasSemAtividadeDiscente(CalendarioAnual.cal_dataInicio, CalendarioAnual.cal_dataFim); lblDiasLetivosNoAno.Text = "Dias letivos do ano: <b>" + totalDeDiasLetivos + "</b>"; } else { _lblMessage.Text = UtilBO.GetErroMessage("Calendário não encontrado.", UtilBO.TipoMensagem.Alerta); } }
/// <summary> /// Carrega os dados da pagina. /// </summary> private void CarregarDados() { ACA_CalendarioAnual calendario = new ACA_CalendarioAnual { cal_id = _VS_cal_id }; ACA_CalendarioAnualBO.GetEntity(calendario); CalendarioAnual = calendario; // busca os periodos referentes ao calendário Periodos = ACA_CalendarioPeriodoBO.Seleciona_cal_id(CalendarioAnual.cal_id, false, 1, 1); // busca os dias não úteis DiasNaoUteis = SYS_DiaNaoUtilBO.SelecionaTodosPorCidade(CarregarCidadeUsuarioLogado()); // mostra o nome da calendário lblCalendario.Text = "Calendário escolar: <b>" + CalendarioAnual.cal_descricao + "</b>"; // mostra o ano letivo lblAnoLetivo.Text = "Ano Letivo: <b>" + CalendarioAnual.cal_ano + "</b>"; if (ddlComboTipoEvento.SelectedValue.Equals("2") && ucComboUAEscola.Esc_ID <= 0) { fdsVisualizacao.Visible = false; return; } Eventos = ACA_CalendarioEventoBO.BuscaEventosCalendario( CalendarioAnual.cal_id, ddlComboTipoEvento.SelectedValue.Equals("0"), ddlComboTipoEvento.SelectedValue.Equals("2") ? ucComboUAEscola.Esc_ID : 0 ); IniciaRepeater(); IniciaRepeaterDiasLetivos(); CriaTabelaLegenda(); fdsVisualizacao.Visible = true; // mostra a quantidade de dias letivos no ano int totalDeDiasLetivos = NumeroDeDiasUteis(CalendarioAnual.cal_dataInicio, CalendarioAnual.cal_dataFim); //- NumeroDeDiasSemAtividadeDiscente(CalendarioAnual.cal_dataInicio, CalendarioAnual.cal_dataFim); lblDiasLetivosNoAno.Text = "Dias letivos do ano: <b>" + totalDeDiasLetivos + "</b>"; }
protected void Page_Load(object sender, EventArgs e) { ScriptManager sm = ScriptManager.GetCurrent(this); if (sm != null) { sm.Scripts.Add(new ScriptReference(ArquivoJS.JQueryValidation)); sm.Scripts.Add(new ScriptReference(ArquivoJS.JqueryMask)); sm.Scripts.Add(new ScriptReference(ArquivoJS.MascarasCampos)); sm.Scripts.Add(new ScriptReference(ArquivoJS.CamposData)); sm.Scripts.Add(new ScriptReference(ArquivoJS.MsgConfirmExclusao)); sm.Scripts.Add(new ScriptReference("~/Includes/jsCadastroEventoLimite.js")); } if (!IsPostBack) { cpvDataInicio.ValueToCompare = DateTime.Now.ToString("dd/MM/yyyy"); if (PreviousPage != null && PreviousPage.IsCrossPagePostBack) { VS_cal_id = PreviousPage.SelectedItem; var entityCalendario = new ACA_CalendarioAnual() { cal_id = VS_cal_id }; ACA_CalendarioAnualBO.GetEntity(entityCalendario); lblCalendarioAno.Text = string.Format("{0} (Ano {1})", entityCalendario.cal_descricao, entityCalendario.cal_ano); UCCTipoEvento.CarregarLiberacao(); UCCPeriodoCalendario.CarregarPorCalendario(VS_cal_id, entityCalendario.cal_permiteLancamentoRecesso); UCComboUAEscola.Inicializar(); //btnSalvar.Visible = __SessionWEB.__UsuarioWEB.GrupoPermissao.grp_inserir; Pesquisar(); } else { __SessionWEB.PostMessages = UtilBO.GetErroMessage("Selecione um calendário para definir os limites para data de criação de eventos.", UtilBO.TipoMensagem.Alerta); Response.Redirect("Busca.aspx", false); HttpContext.Current.ApplicationInstance.CompleteRequest(); } } }
/// <summary> /// Cria lista de entidades de CalendarioCurso de acordo com os calendários selecionados /// </summary> private void CriarListaCalendarioEvento() { _VS_Calendario = null; DataTable dtTemp = _VS_Calendario; foreach (RepeaterItem item in rptCampos.Items) { CheckBox ckbCampo = (CheckBox)item.FindControl("ckbCampo"); if (ckbCampo != null && ckbCampo.Checked) { HiddenField hdnId = (HiddenField)item.FindControl("hdnId"); DataRow dr = dtTemp.NewRow(); ACA_CalendarioAnual calendario = new ACA_CalendarioAnual { cal_id = Convert.ToInt32(hdnId.Value) }; ACA_CalendarioAnualBO.GetEntity(calendario); dr["cal_id"] = calendario.cal_id; dr["cal_id_novo"] = calendario.cal_id; dr["cal_descricao"] = calendario.cal_descricao; dr["cal_ano"] = calendario.cal_ano; if (calendario.cal_dataFim.Equals(null)) { dr["cap_periodo"] = calendario.cal_dataInicio.ToString("dd/MM/yyyy"); } else { dr["cal_periodo"] = calendario.cal_dataInicio.ToString("dd/MM/yyyy") + " - " + calendario.cal_dataFim.ToString("dd/MM/yyyy"); } dtTemp.Rows.Add(dr); } } _VS_Calendario = dtTemp; }
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> /// Retorna nas 2 variáveis se a movimentação está no período válido, para o curso e ano letivo /// informados (através da matrícula do aluno). /// </summary> /// <param name="tur_id">ID da turma</param> /// <param name="cur_id">ID do curso</param> /// <param name="crr_id">ID do curriculo do curso</param> /// <param name="tmo_id">ID do tipo de movimentação</param> /// <param name="dataComparar">Data para comparação do momento</param> /// <param name="bancoGestao">Transação com banco - obrigatório</param> /// <param name="estaInicioMovimentacao">OUT - retorna se está no período de início de movimentação</param> /// <param name="estaFechamentoMovimentacao">OUT - retorna se está no período de fechamento de movimentação</param> /// <param name="listasFechamentoMatricula">Listas carregadas com dados do fechamento de matrícula</param> public static void VerificaPeriodoValidoMovimentacao ( long tur_id , int cur_id , int crr_id , int tmo_id , DateTime dataComparar , TalkDBTransaction bancoGestao , out bool estaInicioMovimentacao , out bool estaFechamentoMovimentacao , FormacaoTurmaBO.ListasFechamentoMatricula listasFechamentoMatricula = null ) { TUR_Turma entTur = null; if (listasFechamentoMatricula != null && listasFechamentoMatricula.listTurma != null) { // Busca a entidade da lista de fechamento de matrícula. entTur = listasFechamentoMatricula.listTurma.Find(p => p.tur_id == tur_id); } if (entTur == null) { entTur = new TUR_Turma { tur_id = tur_id }; TUR_TurmaBO.GetEntity(entTur, bancoGestao); } ACA_CalendarioAnual entCalendario = null; if (listasFechamentoMatricula != null && listasFechamentoMatricula.listCalendarios != null) { // Busca a entidade da lista de fechamento de matrícula. entCalendario = listasFechamentoMatricula.listCalendarios.Find(p => p.cal_id == entTur.cal_id); } if (entCalendario == null) { entCalendario = new ACA_CalendarioAnual { cal_id = entTur.cal_id }; ACA_CalendarioAnualBO.GetEntity(entCalendario, bancoGestao); } int mom_ano = entCalendario.cal_ano; MTR_TipoMovimentacaoDAO dao = new MTR_TipoMovimentacaoDAO { _Banco = bancoGestao }; DataTable dt = dao.SelectBy_PeriodoValido_Curso(cur_id, crr_id, tmo_id, mom_ano, dataComparar); if (dt.Rows.Count > 0) { if (!String.IsNullOrEmpty(dt.Rows[0]["IsPeriodoInicioProcesso"].ToString())) { estaInicioMovimentacao = Convert.ToBoolean(dt.Rows[0]["IsPeriodoInicioProcesso"]); } else { estaInicioMovimentacao = false; } if (!String.IsNullOrEmpty(dt.Rows[0]["IsPeriodoFimProcesso"].ToString())) { estaFechamentoMovimentacao = Convert.ToBoolean(dt.Rows[0]["IsPeriodoFimProcesso"]); } else { estaFechamentoMovimentacao = false; } } else { estaInicioMovimentacao = false; estaFechamentoMovimentacao = false; } }
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> /// Processa os protocolos informados. /// </summary> /// <param name="ltProtocolo">Lista de protocolos em processamento.</param> /// <param name="tentativasProtocolo">Quantidade máxima de tentativas para processar protocolos.</param> /// <returns></returns> public static bool ProcessarProtocoloCompensacao(List <DCL_Protocolo> ltProtocolo, int tentativasProtocolo) { DataTable dtProtocolo = DCL_Protocolo.TipoTabela_Protocolo(); foreach (DCL_Protocolo protocolo in ltProtocolo.Where(pro => pro.pro_tentativa > tentativasProtocolo)) { protocolo.pro_statusObservacao = String.Format("Número máximo ({0}) de tentativas de processamento deste protocolo foram excedidas. Erro: {1}" , tentativasProtocolo, protocolo.pro_statusObservacao); protocolo.pro_status = (byte)DCL_ProtocoloBO.eStatus.ProcessadoComErrosValidacao; protocolo.tur_id = -1; protocolo.tud_id = -1; protocolo.tau_id = -1; protocolo.pro_qtdeAlunos = -1; dtProtocolo.Rows.Add(DCL_ProtocoloBO.ProtocoloToDataRow(protocolo, dtProtocolo.NewRow())); } foreach (DCL_Protocolo protocolo in ltProtocolo.Where(pro => pro.pro_tentativa <= tentativasProtocolo)) { // Abre uma transação para cada protocolo dentro do laço. // Assim é possível processar o próximo protocolo, mesmo que o atual esteja com erro. TalkDBTransaction bancoSincronizacao = new CLS_TurmaAulaDAO()._Banco.CopyThisInstance(); bancoSincronizacao.Open(IsolationLevel.ReadCommitted); bool processou = false; try { if (protocolo.pro_tentativa <= tentativasProtocolo) { JObject json = JObject.Parse(protocolo.pro_pacote); JArray compensacoes = ((JArray)json.SelectToken("CompensacaoFalta") ?? new JArray()); foreach (JObject compensacao in compensacoes) { long tud_id = Convert.ToInt64(compensacao.SelectToken("tud_id")); ACA_FormatoAvaliacao formatoAvaliacao = ACA_FormatoAvaliacaoBO.CarregarPorTud(tud_id); ACA_CalendarioAnual cal = ACA_CalendarioAnualBO.SelecionaPorTurmaDisciplina(tud_id, bancoSincronizacao); // apenas protocolos de turmas ativas e do ano letivo corrente podem ser processados if (!DCL_ProtocoloBO.PodeProcessarProtocolo(0, tud_id)) { throw new ValidationException("O protocolo pertence a uma turma que não esta ativa ou de um ano letivo diferente do corrente, não pode ser processado!"); } int cpa_id = Convert.ToInt32(compensacao.SelectToken("cpa_id")); int quantidadeAulasCompensadas = Convert.ToInt32(compensacao.SelectToken("cpa_quantidadeAulasCompensadas")); DateTime cpa_dataAlteracao = Convert.ToDateTime(compensacao.SelectToken("cpa_dataAlteracao")); CLS_CompensacaoAusencia compensacaoAusencia; long pro_protocoloCriacao = (long)(compensacao.GetValue("pro_protocolo", StringComparison.OrdinalIgnoreCase) ?? "0"); if (cpa_id > 0 || pro_protocoloCriacao <= 0) { compensacaoAusencia = new CLS_CompensacaoAusencia { tud_id = tud_id, cpa_id = cpa_id }; GetEntity(compensacaoAusencia, bancoSincronizacao); } else { List <DCL_Protocolo> protocoloCriacaoCompensacao = DCL_ProtocoloBO.SelectBy_Protocolos(pro_protocoloCriacao.ToString()); Guid pro_idCriacao = protocoloCriacaoCompensacao.Count() > 0 ? protocoloCriacaoCompensacao[0].pro_id : Guid.Empty; compensacaoAusencia = SelectByDisciplinaProtocolo(tud_id, pro_idCriacao); if (!compensacaoAusencia.IsNew) { compensacaoAusencia.pro_id = protocolo.pro_id; } } if (compensacaoAusencia.IsNew) { compensacaoAusencia.cpa_id = -1; compensacaoAusencia.cpa_dataCriacao = DateTime.Now; compensacaoAusencia.pro_id = protocolo.pro_id; } else if (!compensacaoAusencia.IsNew && (cpa_dataAlteracao < compensacaoAusencia.cpa_dataAlteracao)) { throw new ValidationException("Compensação existe e foi alterada mais recentemente."); } compensacaoAusencia.tpc_id = Convert.ToInt32(compensacao.SelectToken("tpc_id")); compensacaoAusencia.cpa_quantidadeAulasCompensadas = quantidadeAulasCompensadas; compensacaoAusencia.cpa_atividadesDesenvolvidas = Convert.ToString(compensacao.SelectToken("cpa_atividadesDesenvolvidas")); compensacaoAusencia.cpa_situacao = Convert.ToInt16(compensacao.SelectToken("cpa_situacao")); compensacaoAusencia.cpa_dataAlteracao = DateTime.Now; if (compensacaoAusencia.cpa_situacao != 3) { JArray arrayAlunos = ((JArray)compensacao.SelectToken("AlunosCompensados") ?? new JArray()); List <CLS_CompensacaoAusenciaAluno> listaAlunos = new List <CLS_CompensacaoAusenciaAluno>(); foreach (JObject jsonAluno in arrayAlunos) { int alu_id = Convert.ToInt32(jsonAluno.SelectToken("alu_id")); MTR_MatriculaTurmaDisciplina matricula = MTR_MatriculaTurmaDisciplinaBO.BuscarPorAlunoTurmaDisciplina(alu_id, tud_id, bancoSincronizacao); CLS_CompensacaoAusenciaAluno compensacaoAluno = new CLS_CompensacaoAusenciaAluno { tud_id = tud_id, cpa_id = compensacaoAusencia.cpa_id, alu_id = alu_id, mtu_id = matricula.mtu_id, mtd_id = matricula.mtd_id }; CLS_CompensacaoAusenciaAlunoBO.GetEntity(compensacaoAluno); if (compensacaoAluno.IsNew) { compensacaoAluno.caa_dataCriacao = DateTime.Now; } compensacaoAluno.caa_situacao = 1; compensacaoAluno.caa_dataAlteracao = DateTime.Now; listaAlunos.Add(compensacaoAluno); } processou = Save(compensacaoAusencia, listaAlunos, formatoAvaliacao.fav_fechamentoAutomatico, cal.cal_id, bancoSincronizacao); } else { // persistindo os dados. processou = true; // Caso o fechamento seja automático, grava na fila de processamento. if (formatoAvaliacao.fav_fechamentoAutomatico && compensacaoAusencia.tpc_id != ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_PERIODO_CALENDARIO_RECESSO, new Guid())) { processou &= CLS_AlunoFechamentoPendenciaBO.SalvarFilaFrequencia(compensacaoAusencia.tud_id, compensacaoAusencia.tpc_id, bancoSincronizacao); } processou &= Delete(compensacaoAusencia, bancoSincronizacao); } } } // Processou com sucesso. protocolo.pro_statusObservacao = String.Format("Protocolo processado com sucesso ({0}).", DateTime.Now.ToString("dd/MM/yyyy HH:mm")); protocolo.pro_status = (byte)DCL_ProtocoloBO.eStatus.ProcessadoComSucesso; dtProtocolo.Rows.Add(DCL_ProtocoloBO.ProtocoloToDataRow(protocolo, dtProtocolo.NewRow())); } catch (ArgumentException ex) { // Se ocorrer uma excessão de validação, guardar novo status. protocolo.pro_status = (byte)DCL_ProtocoloBO.eStatus.ProcessadoComErrosValidacao; protocolo.pro_statusObservacao = ex.Message; protocolo.tur_id = -1; protocolo.tud_id = -1; protocolo.tau_id = -1; protocolo.pro_qtdeAlunos = -1; dtProtocolo.Rows.Add(DCL_ProtocoloBO.ProtocoloToDataRow(protocolo, dtProtocolo.NewRow())); bancoSincronizacao.Close(ex); } catch (ValidationException ex) { // Se ocorrer uma excessão de validação, guardar novo status. protocolo.pro_status = (byte)DCL_ProtocoloBO.eStatus.ProcessadoComErrosValidacao; protocolo.pro_statusObservacao = ex.Message; protocolo.tur_id = -1; protocolo.tud_id = -1; protocolo.tau_id = -1; protocolo.pro_qtdeAlunos = -1; dtProtocolo.Rows.Add(DCL_ProtocoloBO.ProtocoloToDataRow(protocolo, dtProtocolo.NewRow())); bancoSincronizacao.Close(ex); } catch (Exception ex) { // Se ocorrer uma excessão de erro, guardar novo status. protocolo.pro_status = (byte)DCL_ProtocoloBO.eStatus.ProcessadoComErro; protocolo.pro_statusObservacao = ex.Message; protocolo.tur_id = -1; protocolo.tud_id = -1; protocolo.tau_id = -1; protocolo.pro_qtdeAlunos = -1; dtProtocolo.Rows.Add(DCL_ProtocoloBO.ProtocoloToDataRow(protocolo, dtProtocolo.NewRow())); bancoSincronizacao.Close(ex); } finally { if (bancoSincronizacao.ConnectionIsOpen) { bancoSincronizacao.Close(); } } } DCL_ProtocoloBO.AtualizaProtocolos(dtProtocolo); return(true); }
/// <summary> /// Salva o calendário anual /// </summary> public void Salvar() { try { DataTable CalendarioPeriodico = new DataTable(); int valida = ValidaCampos(); if (valida != 1) { if (valida == 0) { CalendarioPeriodico = dtCalendarioPeriodo(listCalendarioPeriodo()); } ACA_CalendarioAnual _calendarioAnual = new ACA_CalendarioAnual { ent_id = __SessionWEB.__UsuarioWEB.Usuario.ent_id , cal_id = _VS_cal_id , cal_padrao = true , cal_ano = Convert.ToInt32(_txtAno.Text) , cal_descricao = _txtDescricao.Text , cal_dataInicio = Convert.ToDateTime(_txtDataInicio.Text) , cal_dataFim = Convert.ToDateTime(_txtDataFim.Text) , cal_permiteLancamentoRecesso = ckbPermiteRecesso.Checked , cal_situacao = 1 , IsNew = (_VS_cal_id > 0) ? false : true }; List <ACA_CalendarioCurso> ListaCursoCurriculo = CriarListaCalendarioCurso(); if (ACA_CalendarioAnualBO.Save(_calendarioAnual, CalendarioPeriodico, ListaCursoCurriculo, __SessionWEB.__UsuarioWEB.Usuario.ent_id)) { if (_VS_cal_id <= 0) { ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Insert, "cal_id: " + _calendarioAnual.cal_id); __SessionWEB.PostMessages = UtilBO.GetErroMessage("Calendário escolar incluído com sucesso.", UtilBO.TipoMensagem.Sucesso); } else { ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Update, "cal_id: " + _calendarioAnual.cal_id); __SessionWEB.PostMessages = UtilBO.GetErroMessage("Calendário escolar alterado com sucesso.", UtilBO.TipoMensagem.Sucesso); } Response.Redirect("Busca.aspx", false); HttpContext.Current.ApplicationInstance.CompleteRequest(); } else { _lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar salvar o calendário escolar.", UtilBO.TipoMensagem.Erro); } } } catch (MSTech.Validation.Exceptions.ValidationException ex) { _lblMessage.Text = UtilBO.GetErroMessage(ex.Message, UtilBO.TipoMensagem.Alerta); } catch (DuplicateNameException ex) { _lblMessage.Text = UtilBO.GetErroMessage(ex.Message, UtilBO.TipoMensagem.Alerta); } catch (ArgumentException 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 calendário escolar.", UtilBO.TipoMensagem.Erro); } }
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); } }