/// <summary> /// Salva no banco as frequências. /// </summary> public bool Salvar(out string msg , bool periodoEfetivado , bool periodoAberto , ref List <int> lstTauSalvas , ControleTurmas entitiesControleTurma , DateTime dataUltimaAlteracao , ref bool recarregarDataAula , int tpc_id , byte posicaoDocente , bool permiteLancarFrequencia , int situacaoTurmaDisciplina) { msg = ""; this.periodoEfetivado = periodoEfetivado; if (ValidaFrequencias()) { if (!periodoAberto) { throw new ValidationException( String.Format(GetGlobalResourceObject("WebControls", "UCLancamentoFrequencia.FrequenciaDisponivelApenasConsulta").ToString(), GestaoEscolarUtilBO.nomePadraoPeriodo_Calendario(__SessionWEB.__UsuarioWEB.Usuario.ent_id))); } List <CLS_TurmaAulaAluno> listTurmaAulaAluno = new List <CLS_TurmaAulaAluno>(); List <CLS_TurmaAula> listTurmaAula = new List <CLS_TurmaAula>(); RepeaterItem header = (RepeaterItem)rptAlunosFrequencia.Controls[0]; Repeater rptAulasEfetivado = (Repeater)header.FindControl("rptAulasEfetivado"); lstTauSalvas = new List <int>(); List <CLS_TurmaAula> listaTurmaAulaBD = new List <CLS_TurmaAula>(); if (rptAulasEfetivado.Items.Count > 0) { List <string> lstTauIdsSalvar = (from RepeaterItem item in rptAulasEfetivado.Items select((Label)item.FindControl("lbltau_id")).Text).ToList(); listaTurmaAulaBD = CLS_TurmaAulaBO.SelecionarListaAulasPorIds(entitiesControleTurma.turmaDisciplina.tud_id, string.Join(",", lstTauIdsSalvar)); } // Adiciona itens na lista de TurmaAula - só pra alterar o tau_efetivado. foreach (RepeaterItem itemAtividade in rptAulasEfetivado.Items) { CheckBox chkEfetivado = (CheckBox)itemAtividade.FindControl("chkEfetivado"); int tau_id = Convert.ToInt32(((Label)itemAtividade.FindControl("lbltau_id")).Text); DateTime tau_data = Convert.ToDateTime(((Label)itemAtividade.FindControl("lbltnt_data")).Text); Guid usu_id_criou_aula = Guid.Empty; Label lblUsuId = (Label)itemAtividade.FindControl("lblUsuId"); if (lblUsuId != null && !string.IsNullOrEmpty(lblUsuId.Text)) { usu_id_criou_aula = new Guid(lblUsuId.Text); } bool permissaoAlteracao = permiteLancarFrequencia && Convert.ToBoolean(((HiddenField)itemAtividade.FindControl("hdnPermissaoAlteracao")).Value); if (permissaoAlteracao && __SessionWEB.__UsuarioWEB.Docente.doc_id > 0) { permissaoAlteracao = (situacaoTurmaDisciplina == 1 || (situacaoTurmaDisciplina != 1 && __SessionWEB.__UsuarioWEB.Usuario.usu_id == usu_id_criou_aula)); } permissaoAlteracao &= !periodoEfetivado; if (permissaoAlteracao) { if ((entitiesControleTurma.turma.tur_situacao == (byte)TUR_TurmaSituacao.Encerrada || entitiesControleTurma.turma.tur_situacao == (byte)TUR_TurmaSituacao.Extinta) && entitiesControleTurma.turma.tur_dataEncerramento != new DateTime() && tau_data > entitiesControleTurma.turma.tur_dataEncerramento) { throw new ValidationException("Existem aulas com data maior que a data de encerramento da turma."); } CLS_TurmaAula ent = listaTurmaAulaBD.FirstOrDefault(p => p.tud_id == entitiesControleTurma.turmaDisciplina.tud_id && p.tau_id == tau_id); if (!ent.IsNew && ent.tau_dataAlteracao > dataUltimaAlteracao) { recarregarDataAula = false; throw new ValidationException(GetGlobalResourceObject("Academico", "ControleTurma.Listao.Validacao_Data_TurmaFrequencia").ToString()); } lstTauSalvas.Add(tau_id); ent.tau_efetivado = chkEfetivado.Checked; ent.tau_statusFrequencia = (byte)(chkEfetivado.Checked ? CLS_TurmaAulaStatusFrequencia.Efetivada : CLS_TurmaAulaStatusFrequencia.Preenchida); ent.usu_idDocenteAlteracao = __SessionWEB.__UsuarioWEB.Usuario.usu_id; ent.tpc_id = tpc_id; listTurmaAula.Add(ent); } } foreach (RepeaterItem itemAluno in rptAlunosFrequencia.Items) { rptAulasEfetivado = (Repeater)itemAluno.FindControl("rptAulas"); Int64 alu_id = Convert.ToInt64(((Label)itemAluno.FindControl("lblalu_id")).Text); Int32 mtu_id = Convert.ToInt32(((Label)itemAluno.FindControl("lblmtu_id")).Text); Int32 mtd_id = Convert.ToInt32(((Label)itemAluno.FindControl("lblmtd_id")).Text); // Adiciona itens na lista de TurmaNota - só pra alterar o tnt_efetivado. foreach (RepeaterItem itemAtividadeAluno in rptAulasEfetivado.Items) { Guid usu_id_criou_aula = Guid.Empty; Label lblUsuId = (Label)itemAtividadeAluno.FindControl("lblUsuId"); if (lblUsuId != null && !string.IsNullOrEmpty(lblUsuId.Text)) { usu_id_criou_aula = new Guid(lblUsuId.Text); } bool permiteAlteracao; Boolean.TryParse(((HiddenField)itemAtividadeAluno.FindControl("hdnPermissaoAlteracao")).Value, out permiteAlteracao); bool permissaoAlteracao = permiteLancarFrequencia && permiteAlteracao; if (permissaoAlteracao && __SessionWEB.__UsuarioWEB.Docente.doc_id > 0) { permissaoAlteracao = (situacaoTurmaDisciplina == 1 || (situacaoTurmaDisciplina != 1 && __SessionWEB.__UsuarioWEB.Usuario.usu_id == usu_id_criou_aula)); } permissaoAlteracao &= !periodoEfetivado; if (permissaoAlteracao) { int tau_id = Convert.ToInt32(((Label)itemAtividadeAluno.FindControl("lbltau_id")).Text); CheckBoxList cblFrequencia = (CheckBoxList)itemAtividadeAluno.FindControl("cblFrequencia"); int frequencia = 0; string bitmap = ""; for (int i = 0; i < cblFrequencia.Items.Count; i++) { frequencia += cblFrequencia.Items[i].Selected ? 1 : 0; bitmap += cblFrequencia.Items[i].Selected ? "1" : "0"; } CLS_TurmaAulaAluno ent = new CLS_TurmaAulaAluno { tud_id = entitiesControleTurma.turmaDisciplina.tud_id , tau_id = tau_id , alu_id = alu_id , mtu_id = mtu_id , mtd_id = mtd_id , taa_frequencia = frequencia , taa_situacao = 1 , taa_frequenciaBitMap = bitmap }; listTurmaAulaAluno.Add(ent); } } } CLS_TurmaAulaAlunoBO.Save(listTurmaAulaAluno, listTurmaAula, entitiesControleTurma.turma.tur_id, entitiesControleTurma.turmaDisciplina.tud_id, posicaoDocente, entitiesControleTurma.turma, entitiesControleTurma.formatoAvaliacao, entitiesControleTurma.curriculoPeriodo, __SessionWEB.__UsuarioWEB.Usuario.usu_id, (byte)LOG_TurmaAula_Alteracao_Origem.WebListao, (byte)LOG_TurmaAula_Alteracao_Tipo.AlteracaoFreq, __SessionWEB.__UsuarioWEB.Usuario.ent_id); try { ApplicationWEB._GravaLogSistema(LOG_SistemaTipo.Update, string.Concat(GetGlobalResourceObject("WebControls", "UCLancamentoFrequencia.Frequencia").ToString(), "cal_id: ", entitiesControleTurma.turma.cal_id, " | tpc_id: ", tpc_id, " | tur_id: ", entitiesControleTurma.turma.tur_id, "; tud_id: ", entitiesControleTurma.turmaDisciplina.tud_id)); } catch (Exception ex) { ApplicationWEB._GravaErro(ex); } if (this.Recarregar != null) { this.Recarregar(false, false, false, true); } msg = UtilBO.GetErroMessage(GetGlobalResourceObject("WebControls", "UCLancamentoFrequencia.FrequanciaSalva").ToString(), UtilBO.TipoMensagem.Sucesso); } return(true); }
/// <summary> /// Carrega dados de lançamento de frequência na tela. /// Só carrega caso a disciplina não seja do tipo /// complementação da regência. /// </summary> public void Carregar(bool proximo , bool anterior , bool inalterado , ControleTurmas entitiesControleTurma , int tpcId , DateTime capDataInicio , DateTime capDataFim , byte tdtPosicao , EnumTipoDocente tipoDocente , long tudIdRelacionada , bool permiteVisualizarCompensacao , List <sPermissaoDocente> ltPermissaoFrequencia , bool permiteLancarFrequencia , out int countAulas , int situacaoTurmaDisciplina , ref bool permiteEdicao , bool usuarioPermissao , bool periodoEfetivado , bool periodoAberto , ref bool esconderSalvar , ref int paginaFreq , int tne_id , string tur_ids = null) { countAulas = 0; long tudId = entitiesControleTurma.turmaDisciplina.tud_id; long turId = entitiesControleTurma.turma.tur_id; int qtdAulasSemana = ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.QUANTIDADE_AULAS_LISTAO_FREQUENCIA, __SessionWEB.__UsuarioWEB.Usuario.ent_id); DateTime dtInicio = new DateTime(); DateTime dtFim = new DateTime(); if (proximo) { paginaFreq++; } else if (anterior && paginaFreq > 1) { paginaFreq--; } else if (!inalterado) { paginaFreq = 1; } // Carregar tabela com aulas e frequências das aulas para os alunos. VS_Aulas_Alunos = CLS_TurmaAulaAlunoBO.GetSelectBy_TurmaDisciplina(tudId, tpcId, (__SessionWEB.__UsuarioWEB.Docente.doc_id > 0 ? __SessionWEB.__UsuarioWEB.Usuario.usu_id : Guid.Empty), capDataInicio, capDataFim, tdtPosicao, __SessionWEB.__UsuarioWEB.Docente.doc_id == 0, tudIdRelacionada, tur_ids); int qtdAlunos = VS_Aulas_Alunos.GroupBy(p => new { p.alu_id, p.mtu_id }).Count(); int skip = qtdAulasSemana * (paginaFreq - 1) * qtdAlunos; while (proximo && VS_Aulas_Alunos.Count < skip) { paginaFreq--; skip = (qtdAulasSemana * (paginaFreq - 1)) * qtdAlunos; if (paginaFreq == 1) { break; } } //Quando carrega pela primeira vez e o bimestre é ativo então abre a página que possui a data atual if (!proximo && !anterior && !inalterado && paginaFreq == 1 && capDataInicio <= DateTime.Today && capDataFim >= DateTime.Today) { while (VS_Aulas_Alunos.Skip(skip).Take(qtdAulasSemana * qtdAlunos).ToList().LastOrDefault().tau_data < DateTime.Today && VS_Aulas_Alunos.Skip(skip).Count() > (qtdAulasSemana * qtdAlunos)) { paginaFreq++; skip = (qtdAulasSemana * (paginaFreq - 1)) * qtdAlunos; } } lkbProximo.Visible = VS_Aulas_Alunos.Skip(skip).Count() > (qtdAulasSemana * qtdAlunos); lkbAnterior.Visible = skip > 0; VS_Aulas_Alunos = VS_Aulas_Alunos.Skip(skip).Take(qtdAulasSemana * qtdAlunos).ToList(); dtInicio = VS_Aulas_Alunos.Count > 0 ? VS_Aulas_Alunos.FirstOrDefault().tau_data : capDataInicio.Date; dtFim = VS_Aulas_Alunos.Count > 0 ? VS_Aulas_Alunos.LastOrDefault().tau_data : capDataFim.Date; lblInicio.Text = dtInicio == new DateTime() ? "" : dtInicio.ToShortDateString(); lblFim.Text = dtFim == new DateTime() ? "" : dtFim.ToShortDateString(); // Carregar repeater de alunos. rptAlunosFrequencia.DataSource = MTR_MatriculaTurmaDisciplinaBO.SelecionaAlunosAtivosCOCPorTurmaDisciplina(tudId, tpcId, tipoDocente, false, capDataInicio, capDataFim, ApplicationWEB.AppMinutosCacheMedio, tur_ids) .Where(p => ((p.mtd_dataSaida > dtInicio) || (p.mtd_dataSaida == null)) && (p.mtd_dataMatricula <= dtFim)); if (entitiesControleTurma.turma.tur_tipo == (byte)TUR_TurmaTipo.Normal) { lstAlunosRelatorioRP = CLS_RelatorioPreenchimentoAlunoTurmaDisciplinaBO.SelecionaAlunoPreenchimentoPorPeriodoDisciplina(tpcId, turId, tudId, ApplicationWEB.AppMinutosCacheMedio); } this.tudTipo = entitiesControleTurma.turmaDisciplina.tud_tipo; this.permiteVisualizarCompensacao = permiteVisualizarCompensacao; this.ltPermissaoFrequencia = ltPermissaoFrequencia; this.permiteLancarFrequencia = permiteLancarFrequencia; this.permiteEdicao = false; this.situacaoTurmaDisciplina = situacaoTurmaDisciplina; this.posicaoDocente = tdtPosicao; this.usuarioPermissao = usuarioPermissao; this.periodoEfetivado = periodoEfetivado; this.periodoAberto = periodoAberto; ACA_CurriculoPeriodo entityCrp = ACA_CurriculoPeriodoBO.SelecionaPorTurmaTipoNormal(turId, ApplicationWEB.AppMinutosCacheLongo); this.crpControleTempo = entityCrp.crp_controleTempo; this.possuiRegencia = TUR_TurmaBO.VerificaPossuiDisciplinaPorTipo(turId, TurmaDisciplinaTipo.Regencia, ApplicationWEB.AppMinutosCacheLongo); this.tipoApuracaoFrequencia = entitiesControleTurma.formatoAvaliacao.fav_tipoApuracaoFrequencia; this.tne_id = tne_id; this.ttn_tipo = entitiesControleTurma.tipoTurno.ttn_tipo; rptAlunosFrequencia.DataBind(); // Limpa o hiddenfield do listão de frequência pra zerar a ordenação. hdnOrdenacaoFrequencia.Value = ""; //Fazendo as validações após carregar os dados. if (rptAlunosFrequencia.Items.Count == 0) { EscondeGridAlunosFrequencia("Não foram encontrados alunos na turma selecionada."); esconderSalvar = true; } else { MostraPeriodo(true); pnlLancamentoFrequencias.Visible = true; RepeaterItem header = (RepeaterItem)rptAlunosFrequencia.Controls[0]; Repeater rptAulas = (Repeater)header.FindControl("rptAulas"); lblMsgParecer.Visible = rptAulas.Items.Count > 0; _lblMsgRepeater.Visible = rptAulas.Items.Count == 0; if (rptAulas.Items.Count == 0) { _lblMsgRepeater.Text = UtilBO.GetErroMessage(GetGlobalResourceObject("Academico", "ControleTurma.Listao.MensagemSemAulas").ToString(), UtilBO.TipoMensagem.Alerta); esconderSalvar = true; } countAulas = rptAulas.Items.Count; rptAlunosFrequencia.Visible = true; } if (this.permiteEdicao && !periodoEfetivado) { permiteEdicao = true; } }