コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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;
            }
        }