/// <summary>
    /// Retorna os períodos que possuem a mesma quantidade de níveis da orientação curricular
    /// </summary>
    /// <param name="qtdeNiveis">Quantidade de níveis da orientação curricular</param>
    /// <param name="cur_id">Id do curso</param>
    /// <param name="crr_id">Id do currículo</param>
    public void CarregarPorQtdeNivelOrientacaoCurricular(int qtdeNiveis, int cur_id, int crr_id, int cal_id, int tds_id, Guid ent_id)
    {
        odsDados.SelectParameters.Clear();
        ddlCombo.Items.Clear();

        ddlCombo.DataSourceID         = "";
        ddlCombo.AppendDataBoundItems = true;

        ddlCombo.DataValueField = "cur_id_crr_id_crp_id";
        ddlCombo.DataTextField  = "crp_descricao";

        DataTable dtCurriculoPeriodo = ACA_CurriculoPeriodoBO.SelecionaPorQtdeNiveisOrientacaoCurricular(cur_id, crr_id, cal_id, tds_id, ent_id, qtdeNiveis);
        int       aux = 0;

        foreach (DataRow row in dtCurriculoPeriodo.Rows)
        {
            ddlCombo.Items.Insert(aux, new ListItem(row["crp_descricao"].ToString(), row["cur_id_crr_id_crp_id"].ToString(), true));
            aux++;
        }

        if (ddlCombo.Items.IndexOf(ddlCombo.Items.FindByValue("-1;-1;-1")) == -1)
        {
            ddlCombo.Items.Insert(0, new ListItem("-- Selecione um(a) " + GestaoEscolarUtilBO.nomePadraoPeriodo(__SessionWEB.__UsuarioWEB.Usuario.ent_id).ToLower() + " --", "-1;-1;-1", true));
        }

        ddlCombo.SelectedValue = "-1;-1;-1";
    }
Esempio n. 2
0
        private void UCCCursoCurriculo_IndexChanged()
        {
            if (UCCCursoCurriculo.Valor[0] != -1)
            {
                cblPeriodos.Items.Clear();
                DataTable dt = ACA_CurriculoPeriodoBO.BuscaCurriculoPeriodoPorEntidadeCursoCurriculo(Ent_ID_UsuarioLogado, UCCCursoCurriculo.Valor[0], UCCCursoCurriculo.Valor[1]);
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    DataRow  row  = dt.Rows[i];
                    ListItem item = new ListItem();
                    item.Text  = row["crp_descricao"].ToString();
                    item.Value = row["crp_id"].ToString();
                    cblPeriodos.Items.Add(item);
                }
                pnlPeriodos.Visible = true;
            }
            else
            {
                pnlPeriodos.Visible = false;
            }

            // Recarrega os tipos de disciplina
            ddlTipoDisciplina.Items.Clear();
            ddlTipoDisciplina.Items.Add(new ListItem(GetGlobalResourceObject("Configuracao", "ParametroResultado.Cadastro.ddlTipoDisciplina.valor0").ToString(), "-1"));
            MostrarTiposDisciplina(ddlTipoLancamento.SelectedValue == ((byte)EnumTipoLancamento.Disciplinas).ToString());
        }
Esempio n. 3
0
        public HttpResponseMessage GetPeriodos(int cursoId, int curriculoId, int cicloId = 0)
        {
            try
            {
                List <sComboPeriodo> lst = new List <sComboPeriodo>();
                if (cicloId > 0)
                {
                    lst = ACA_CurriculoPeriodoBO.Select_Por_TipoCiclo(cursoId, curriculoId, cicloId, __userLogged.Usuario.ent_id, ApplicationWEB.AppMinutosCacheLongo);
                }
                else
                {
                    lst = ACA_CurriculoPeriodoBO.GetSelect(cursoId, curriculoId, __userLogged.Usuario.ent_id, ApplicationWEB.AppMinutosCacheLongo);
                }

                return(Request.CreateResponse(HttpStatusCode.OK,
                                              lst.Select(p => new jsonObject
                {
                    id = p.cur_id_crr_id_crp_id.Split(';')[2],
                    text = p.crp_descricao
                })
                                              ));
            }
            catch (Exception ex)
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex));
            }
        }
Esempio n. 4
0
        public static bool DeletarPorEletivasAlunos
        (
            ACA_CurriculoDisciplina entity
            , TalkDBTransaction banco
            , Guid ent_id
        )
        {
            if (VerificaCurriculoDisciplina(entity.cur_id, entity.crr_id, entity.crp_id, entity.dis_id, banco))
            {
                ACA_CurriculoPeriodo crp = new ACA_CurriculoPeriodo {
                    cur_id = entity.cur_id, crr_id = entity.crr_id, crp_id = entity.crp_id
                };
                ACA_CurriculoPeriodoBO.GetEntity(crp, banco);

                ACA_Disciplina dis = new ACA_Disciplina {
                    dis_id = entity.dis_id
                };
                ACA_DisciplinaBO.GetEntity(dis, banco);

                throw new ValidationException("Não é possível excluir o(a) " + GestaoEscolarUtilBO.nomePadraoPeriodo(ent_id).ToLower() + " " + crp.crp_descricao + " do(a) " +
                                              CustomResource.GetGlobalResourceObject("Mensagens", "MSG_DISCIPLINA") + " eletiva " + dis.dis_nome + ", pois possui outros registros ligados a ele(a).");
            }

            ACA_CurriculoDisciplinaDAO dao = new ACA_CurriculoDisciplinaDAO {
                _Banco = banco
            };

            return(dao.Update_Situacao_By_EletivasAlunos(entity.cur_id, entity.crr_id, entity.crp_id, entity.dis_id));
        }
Esempio n. 5
0
        /// <summary>
        /// Carrega todos os cursos/periodos ativos.
        /// </summary>
        public void Carregar()
        {
            ddlCursoPeriodo.Items.Clear();

            ddlCursoPeriodo.DataSource = ACA_CurriculoPeriodoBO.Select_Ativos(__SessionWEB.__UsuarioWEB.Usuario.ent_id);
            ddlCursoPeriodo.Items.Insert(0, new ListItem("-- Selecione o(a) " + GestaoEscolarUtilBO.nomePadraoCurso(__SessionWEB.__UsuarioWEB.Usuario.ent_id).ToLower() + " / " + GestaoEscolarUtilBO.nomePadraoPeriodo(__SessionWEB.__UsuarioWEB.Usuario.ent_id).ToLower() + " --", "-1", true));
            ddlCursoPeriodo.DataBind();

            cpvCursoPeriodo.Visible = Obrigatorio;
        }
Esempio n. 6
0
        /// <summary>
        /// Valida dados necessários para salvar a entidade. Dispara um ValidationException caso não
        /// esteja válida.
        /// </summary>
        /// <param name="entity">Entidade a validar</param>
        /// <param name="banco">Transação com banco do Gestão - obrigatório</param>
        /// <param name="ent_id">Id da entidade do usuário logado.</param>
        private static void ValidaDados(ACA_AlunoCurriculo entity, TalkDBTransaction banco, Guid ent_id)
        {
            //Validação feita no BO devido a alteração de nome dos campos para os diferentes clientes
            if (entity.cur_id <= 0)
            {
                throw new ACA_AlunoCurriculo_ValidationException(GestaoEscolarUtilBO.nomePadraoCurso(ent_id) + " é obrigatório.");
            }

            if (entity.crr_id <= 0)
            {
                throw new ACA_AlunoCurriculo_ValidationException(GestaoEscolarUtilBO.nomePadraoCurso(ent_id) + " é obrigatório.");
            }

            if (entity.crp_id <= 0)
            {
                throw new ACA_AlunoCurriculo_ValidationException(GestaoEscolarUtilBO.nomePadraoPeriodo(ent_id) + " é obrigatório.");
            }

            if (!string.IsNullOrEmpty(entity.alc_matriculaEstadual) && entity.alc_matriculaEstadual.Length > 50)
            {
                throw new ACA_AlunoCurriculo_ValidationException(GestaoEscolarUtilBO.nomePadraoMatriculaEstadual(ent_id) + " pode conter até 50 caracteres.");
            }

            //Se for uma nova matrícula e se a situação dela for 'Ativa' ou 'Em matrícula'
            //Verifica se já existe uma matrícula cadastrada com os mesmos dados
            if (entity.IsNew &&
                (entity.alc_situacao == Convert.ToByte(ACA_AlunoCurriculoSituacao.Ativo) ||
                 entity.alc_situacao == Convert.ToByte(ACA_AlunoCurriculoSituacao.EmMatricula)))
            {
                if (Existe_AlunoCurriculo(entity.alu_id, entity.cur_id, entity.crr_id, entity.crp_id, banco))
                {
                    ESC_Escola esc = new ESC_Escola {
                        esc_id = entity.esc_id
                    };
                    ESC_EscolaBO.GetEntity(esc, banco);

                    ACA_Curso cur = new ACA_Curso {
                        cur_id = entity.cur_id
                    };
                    ACA_CursoBO.GetEntity(cur, banco);

                    ACA_CurriculoPeriodo crp = new ACA_CurriculoPeriodo {
                        cur_id = entity.cur_id, crr_id = entity.crr_id, crp_id = entity.crp_id
                    };
                    ACA_CurriculoPeriodoBO.GetEntity(crp, banco);

                    throw new ACA_AlunoCurriculo_ValidationException("Já existe uma matrícula 'Ativa' ou 'Em matrícula' cadastrada com os mesmos dados: <BR/>" +
                                                                     "Escola: " + esc.esc_nome + "<BR/>" +
                                                                     GestaoEscolarUtilBO.nomePadraoCurso(ent_id) + ": " + cur.cur_nome + "<BR/>" +
                                                                     GestaoEscolarUtilBO.nomePadraoPeriodo(ent_id) + ": " + crp.crp_descricao);
                }
            }
        }
    public void CarregarPorCursoDisciplina(int cur_id, int crr_id, int dis_id)
    {
        odsDados.SelectParameters.Clear();
        ddlCombo.DataSourceID = "";
        ddlCombo.Items.Clear();

        ddlCombo.DataSource = ACA_CurriculoPeriodoBO.SelecionaPorCursoDisciplina(cur_id, crr_id, dis_id, __SessionWEB.__UsuarioWEB.Usuario.ent_id, ApplicationWEB.AppMinutosCacheLongo);

        ddlCombo.Items.Insert(0, new ListItem("-- Selecione um(a) " + GestaoEscolarUtilBO.nomePadraoPeriodo(__SessionWEB.__UsuarioWEB.Usuario.ent_id).ToLower() + " --", "-1;-1;-1", true));
        ddlCombo.AppendDataBoundItems = true;

        ddlCombo.DataBind();
    }
Esempio n. 8
0
        /// <summary>
        /// Verifica se o curso da turma possui avaliação do tipo seriado.
        /// </summary>
        /// <param name="entTurma">Entidade da turma.</param>
        /// <param name="EntFormatoAvaliacao">Entidade do formato de avaliação da turma.</param>
        /// <param name="banco">Transação.</param>
        /// <param name="entCurriculoPeriodo">Entidade do grupamento da turma (parâmatro de sáida)</param>
        /// <param name="Seriado">Flag que indica se o curso ~possui avaliação do tipo seriado (parâmatro de sáida)</param>
        /// <returns></returns>
        public static bool ValidaCursoSeriadoAvaliacao(TUR_Turma entTurma, ACA_FormatoAvaliacao EntFormatoAvaliacao, TalkDBTransaction banco, out ACA_CurriculoPeriodo entCurriculoPeriodo, out bool Seriado)
        {
            Seriado = false;

            List <TUR_TurmaCurriculo> listCurriculos = TUR_TurmaCurriculoBO.GetSelectBy_Turma(entTurma.tur_id, banco, GestaoEscolarUtilBO.MinutosCacheLongo);

            if (listCurriculos.Count == 0)
            {
                throw new Exception("A turma (tur_id: " + entTurma.tur_id + ") não possui nenhum curriculoPeriodo cadastrado.");
            }

            ACA_Curriculo entCurriculo = new ACA_Curriculo
            {
                cur_id = listCurriculos[0].cur_id
                ,
                crr_id = listCurriculos[0].crr_id
            };

            ACA_CurriculoBO.GetEntity(entCurriculo, banco);

            // Se curso for seriado por avaliações - EJA.
            if (entCurriculo.crr_regimeMatricula ==
                (byte)ACA_CurriculoRegimeMatricula.SeriadoPorAvaliacoes)
            {
                Seriado = true;

                if ((EntFormatoAvaliacao.fav_tipo != (byte)ACA_FormatoAvaliacaoTipo.ConceitoGlobal) &&
                    (EntFormatoAvaliacao.fav_tipo != (byte)ACA_FormatoAvaliacaoTipo.GlobalDisciplina))
                {
                    // Curso do EJA não pode efetivar notas por disciplina - não possui ligação
                    // com lançamento por disciplina.
                    throw new ValidationException("O formato de avaliação \"" + EntFormatoAvaliacao.fav_nome +
                                                  "\" deve ser do tipo \"Conceito global\" ou " +
                                                  "\"Conceito global e nota por " + CustomResource.GetGlobalResourceObject("Mensagens", "MSG_DISCIPLINA") + "\", " +
                                                  "pois o curso da turma é seriado por avaliações.");
                }
            }

            entCurriculoPeriodo = new ACA_CurriculoPeriodo
            {
                cur_id = entCurriculo.cur_id
                ,
                crr_id = entCurriculo.crr_id
                ,
                crp_id = listCurriculos[0].crp_id
            };
            ACA_CurriculoPeriodoBO.GetEntity(entCurriculoPeriodo, banco);

            return(true);
        }
Esempio n. 9
0
 /// <summary>
 /// Carrega os curriculo período equivalentes ao currículo período informado
 /// filtrados por curso, currículo, escola e curso/currículo/período equivalente
 /// </summary>
 /// <param name="cur_id">ID do curso</param>
 /// <param name="crr_id">ID do currículo</param>
 /// <param name="esc_id">ID da escola</param>
 /// <param name="uni_id">ID da unidade da escola</param>
 /// <param name="cur_idEquivalente">ID do curso equivalente</param>
 /// <param name="crr_idEquivalente">ID do currículo equivalente</param>
 /// <param name="crp_idEquivalente">ID do período equivalente</param>
 public void CarregarPorCursoEscolaPeriodoEquivalente
 (
     int cur_id,
     int crr_id,
     int esc_id,
     int uni_id,
     int cur_idEquivalente,
     int crr_idEquivalente,
     int crp_idEquivalente
 )
 {
     CarregarCombo(ACA_CurriculoPeriodoBO.Seleciona_Por_CursoEscola_PeriodoEquivalente(cur_id, crr_id, esc_id, uni_id,
                                                                                       cur_idEquivalente, crr_idEquivalente, crp_idEquivalente));
 }
    /// <summary>
    /// Carrega no combo os currículoPeriodo cadastrados para o curso e escola informados, e filtra também
    /// o currículoPeríodo que seja equivalente (mesmo crp_ordem) do crpEquivalente informado.
    /// </summary>
    /// <param name="cur_id">ID do curso</param>
    /// <param name="crr_id">ID do currículo</param>
    /// <param name="esc_id">ID da escola</param>
    /// <param name="uni_id">ID da unidade da escola</param>
    /// <param name="cur_idEquivalente">ID do curso equivalente</param>
    /// <param name="crr_idEquivalente">ID do currículo equivalente</param>
    /// <param name="crp_idEquivalente">ID do período equivalente</param>
    /// <returns></returns>
    public void Carregar_Por_CursoEscola_PeriodoEquivalente
        (int cur_id, int crr_id, int esc_id, int uni_id, int cur_idEquivalente, int crr_idEquivalente, int crp_idEquivalente)
    {
        odsDados.SelectParameters.Clear();
        ddlCombo.Items.Clear();

        ddlCombo.DataSourceID = "";

        ddlCombo.DataSource = ACA_CurriculoPeriodoBO.Seleciona_Por_CursoEscola_PeriodoEquivalente
                                  (cur_id, crr_id, esc_id, uni_id, cur_idEquivalente, crr_idEquivalente, crp_idEquivalente);
        ddlCombo.Items.Insert(0, new ListItem("-- Selecione um(a) " + GestaoEscolarUtilBO.nomePadraoPeriodo(__SessionWEB.__UsuarioWEB.Usuario.ent_id).ToLower() + " --", "-1;-1;-1", true));
        ddlCombo.AppendDataBoundItems = true;

        ddlCombo.DataBind();
    }
    /// <summary>
    /// Retorna os períodos por curso e disciplina da turma
    /// </summary>
    /// <param name="dis_id">ID da disciplina</param>
    /// <param name="cur_id">Id da tabela ACA_Curso do bd</param>
    /// <param name="crr_id">Id da tabela ACA_Curriculo do bd</param>
    public void CarregarPorDisciplina(int dis_id, int cur_id, int crr_id)
    {
        odsDados.SelectParameters.Clear();
        ddlCombo.Items.Clear();

        ddlCombo.DataSourceID         = "";
        ddlCombo.AppendDataBoundItems = true;

        ddlCombo.DataSource = ACA_CurriculoPeriodoBO.Select_Por_Disciplina(dis_id, cur_id, crr_id);
        ddlCombo.DataBind();

        if (ddlCombo.Items.IndexOf(ddlCombo.Items.FindByValue("-1;-1;-1")) == -1)
        {
            ddlCombo.Items.Insert(0, new ListItem("-- Selecione um(a) " + GestaoEscolarUtilBO.nomePadraoPeriodo(__SessionWEB.__UsuarioWEB.Usuario.ent_id).ToLower() + " --", "-1;-1;-1", true));
        }

        ddlCombo.SelectedValue = "-1;-1;-1";
    }
Esempio n. 12
0
        /// <summary>
        /// Método que verifica se o turno selecionado é valido com o
        /// currículo do curso.
        /// </summary>
        /// <param name="entTurmaCurriculo">entidade com dados Turma currículo</param>
        /// <param name="trn_id">id do turno</param>
        /// <param name="msgErro">Mensagem de erro</param>
        /// <param name="ent_id">Id da entidade do usuário logado.</param>
        /// <returns>True - caso é compatível o turno com Curriculo Período / False - caso não seja compatível</returns>
        public static bool VerificaTurno(TUR_TurmaCurriculo entTurmaCurriculo, int trn_id, out string msgErro, Guid ent_id)
        {
            msgErro = "";

            ACA_CurriculoPeriodo entity = new ACA_CurriculoPeriodo
            {
                cur_id = entTurmaCurriculo.cur_id
                ,
                crr_id = entTurmaCurriculo.crr_id
                ,
                crp_id = entTurmaCurriculo.crp_id
            };

            ACA_CurriculoPeriodoBO.GetEntity(entity);

            if (ACA_TurnoHorarioBO.GetSelectDiasSemana(trn_id).Rows.Count !=
                entity.crp_qtdeDiasSemana)
            {
                msgErro = "A quantidade de dias da semana que possui aula do(a) " + GestaoEscolarUtilBO.nomePadraoPeriodo(ent_id) + " deve ser o mesmo do turno.";
                return(true);
            }

            // Verifica o tipo de controle de tempo (TemposAula/Horas).
            if (entity.crp_controleTempo == Convert.ToInt32(ACA_CurriculoPeriodoControleTempo.TemposAula))
            {
                //Compara a quantidade de aulas lançadas no currículo período com a quantidades de aulas lançadas no turno.
                if (!(entity.crp_qtdeTemposSemana == ACA_TurnoBO.QuantidadeTemposAulaTurno(trn_id)))
                {
                    msgErro = "A quantidade de tempos de aula de uma semana do(a) " + GestaoEscolarUtilBO.nomePadraoPeriodo(ent_id) + " deve ser o mesmo do turno.";
                    return(true);
                }
            }
            else
            {
                //Faz o calculo da horas de aula na semana definido no currículo período e compara com as horas lançadas no turno.
                if (!((entity.crp_qtdeHorasDia * 60 + entity.crp_qtdeMinutosDia) * entity.crp_qtdeDiasSemana == ACA_TurnoBO.QuantidadeHorasTurno(trn_id)))
                {
                    msgErro = "A quantidade de tempos de aula de uma semana do(a) " + GestaoEscolarUtilBO.nomePadraoPeriodo(ent_id) + " deve ser o mesmo do turno.";
                    return(true);
                }
            }

            return(false);
        }
    /// <summary>
    /// Seleciona por escola, curso, e ordem do período (apenas períodos com ordem igual ou superior)
    /// </summary>
    /// <param name="esc_id">ID da escola.</param>
    /// <param name="uni_id">ID da unidade de escola.</param>
    /// <param name="cur_id">ID do curso.</param>
    /// <param name="crr_id">ID do currículo do curso.</param>
    /// <param name="crp_ordem">Ordem de validação do período.</param>
    public void CarregarPorEscolaCursoPeriodoOrdem(int esc_id, int uni_id, int cur_id, int crr_id, int crp_ordem)
    {
        odsDados.SelectParameters.Clear();
        ddlCombo.Items.Clear();

        ddlCombo.DataSourceID         = "";
        ddlCombo.AppendDataBoundItems = true;

        ddlCombo.DataSource = ACA_CurriculoPeriodoBO.SelecionaPorEscolaCursoPeriodoOrdem(esc_id, uni_id, cur_id, crr_id, crp_ordem, ApplicationWEB.AppMinutosCacheLongo);

        if (ddlCombo.Items.IndexOf(ddlCombo.Items.FindByValue("-1;-1;-1")) == -1)
        {
            ddlCombo.Items.Insert(0, new ListItem("-- Selecione um(a) " + GestaoEscolarUtilBO.nomePadraoPeriodo(__SessionWEB.__UsuarioWEB.Usuario.ent_id).ToLower() + " --", "-1;-1;-1", true));
        }

        ddlCombo.DataBind();

        ddlCombo.SelectedValue = "-1;-1;-1";
    }
Esempio n. 14
0
        /// <summary>
        /// Verifica se o tipo de movimentação gera transferencia de matricula do aluno.
        /// </summary>
        /// <param name="tipoMovimento">Tipo do movimento</param>
        /// <returns></returns>
        public static bool VerificarMovimentacaoTransferenciaMatriculaAluno(MTR_Movimentacao_Cadastro cadMov)
        {
            MTR_MovimentacaoDAO daoMov      = new MTR_MovimentacaoDAO();
            TalkDBTransaction   bancoGestao = daoMov._Banco;

            MTR_TipoMovimentacao tmo;

            if (cadMov.listasFechamentoMatricula.listTipoMovimentacao != null)
            {
                // Se os dados do fechamento de matrícula forem alimentados, pegar dados do fechamento.
                tmo = cadMov.listasFechamentoMatricula.listTipoMovimentacao.
                      Find(p => p.tmo_id == cadMov.entMovimentacao.tmo_id) ?? new MTR_TipoMovimentacao();
            }
            else
            {
                tmo = new MTR_TipoMovimentacao {
                    tmo_id = cadMov.entMovimentacao.tmo_id
                };
                MTR_TipoMovimentacaoBO.GetEntity(tmo, daoMov._Banco);
            }

            switch ((MTR_TipoMovimentacaoTipoMovimento)tmo.tmo_tipoMovimento)
            {
            case MTR_TipoMovimentacaoTipoMovimento.MudancaTurma:
            case MTR_TipoMovimentacaoTipoMovimento.MudancaBlocoPEJA:
            case MTR_TipoMovimentacaoTipoMovimento.RenovacaoMatricula:
                return(true);

            case MTR_TipoMovimentacaoTipoMovimento.Adequacao:
                bool isCurriculoPeriodoEJA = ACA_CurriculoPeriodoBO.VerificaCurriculoPeriodoEJA(new ACA_CurriculoPeriodo {
                    cur_id = cadMov.entAluCurNovo.cur_id, crr_id = cadMov.entAluCurNovo.crr_id, crp_id = cadMov.entAluCurNovo.crp_id
                }, bancoGestao);
                return(!(cadMov.entAluCurAnterior.cur_id == cadMov.entAluCurNovo.cur_id &&
                         cadMov.entAluCurAnterior.crr_id == cadMov.entAluCurNovo.crr_id &&
                         cadMov.entAluCurAnterior.crp_id == cadMov.entAluCurNovo.crp_id &&
                         isCurriculoPeriodoEJA) &&
                       cadMov.entAluCurAnterior.esc_id == cadMov.entAluCurNovo.esc_id &&
                       cadMov.entAluCurAnterior.uni_id == cadMov.entAluCurNovo.uni_id);

            case MTR_TipoMovimentacaoTipoMovimento.MudancaModalidaeEnsino:
                return(cadMov.entAluCurAnterior.esc_id == cadMov.entAluCurNovo.esc_id &&
                       cadMov.entAluCurAnterior.uni_id == cadMov.entAluCurNovo.uni_id);

            case MTR_TipoMovimentacaoTipoMovimento.Reclassificacao:
                ACA_CurriculoPeriodo entCurPerAnterior = new ACA_CurriculoPeriodo
                {
                    cur_id = cadMov.entAluCurAnterior.cur_id,
                    crr_id = cadMov.entAluCurAnterior.crr_id,
                    crp_id = cadMov.entAluCurAnterior.crp_id
                };
                ACA_CurriculoPeriodoBO.GetEntity(entCurPerAnterior, bancoGestao);

                ACA_CurriculoPeriodo entCurPerNovo = new ACA_CurriculoPeriodo
                {
                    cur_id = cadMov.entAluCurNovo.cur_id,
                    crr_id = cadMov.entAluCurNovo.crr_id,
                    crp_id = cadMov.entAluCurNovo.crp_id
                };
                ACA_CurriculoPeriodoBO.GetEntity(entCurPerNovo, bancoGestao);

                // Alterado para pegar os cursos/períodos equivalentes com o curso de destino.
                List <ACA_CurriculoPeriodo> listPeriodosEquivalentes = ACA_CurriculoPeriodoBO.Seleciona_PeriodosRelacionados_Equivalentes(cadMov.entAluCurNovo.cur_id, cadMov.entAluCurNovo.crr_id, cadMov.entAluCurNovo.crp_id);

                return(((entCurPerAnterior.cur_id == entCurPerNovo.cur_id && entCurPerAnterior.crr_id == entCurPerNovo.crr_id) ||
                        (listPeriodosEquivalentes.Count > 0 && listPeriodosEquivalentes.Exists(p => p.cur_id == entCurPerNovo.cur_id && p.crr_id == entCurPerNovo.crr_id))) &&
                       !(entCurPerAnterior.crp_ordem == entCurPerNovo.crp_ordem &&
                         ACA_CurriculoPeriodoBO.VerificaCurriculoPeriodoEJA(entCurPerNovo, bancoGestao) &&
                         entCurPerNovo.crp_turmaAvaliacao) &&
                       entCurPerAnterior.crp_ordem == entCurPerNovo.crp_ordem - 1 &&
                       cadMov.entAluCurAnterior.esc_id == cadMov.entAluCurNovo.esc_id &&
                       cadMov.entAluCurAnterior.uni_id == cadMov.entAluCurNovo.uni_id);

            default:
                return(false);
            }
        }
Esempio n. 15
0
        /// <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 ProcessaProtocoloPlanejamentoAnual(List <DCL_Protocolo> ltProtocolo, int tentativasProtocolo)
        {
            // DataTable de protocolos
            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)
                    {
                        if (string.IsNullOrEmpty(protocolo.pro_versaoAplicativo))
                        {
                            throw new ValidationException("É necessário atualizar a versão do sistema.");
                        }

                        ///*
                        // * na versão 44 o planejamento mudou e não mais podera mais processar
                        // * protocolos de planejamento antigos
                        // * */
                        //int minorVersion = int.Parse(protocolo.pro_versaoAplicativo.Split('.')[1]);
                        //if (minorVersion < 44)
                        //    throw new ValidationException("É necessário atualizar a versão do sistema.");

                        #region Varável

                        List <CLS_TurmaDisciplinaPlanejamento> listaPlanejamento = new List <CLS_TurmaDisciplinaPlanejamento>();

                        #endregion

                        #region Informações do planejamento anual

                        // Objeto JSON de entrada.
                        JObject planejamento = JObject.Parse(protocolo.pro_pacote);

                        long tud_id = (long)planejamento.SelectToken("tud_id");
                        protocolo.tud_id = tud_id;

                        // 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!");
                        }

                        ACA_CurriculoPeriodo entCrp = ACA_CurriculoPeriodoBO.SelecionaPorTurmaDisciplina(tud_id, bancoSincronizacao).FirstOrDefault();

                        #endregion

                        // Todas as matrículas de aluno na disciplina.
                        List <MTR_MatriculaTurmaDisciplina> listaMatriculas = MTR_MatriculaTurmaDisciplinaBO.
                                                                              SelecionaMatriculasPorTurmaDisciplina(tud_id.ToString(), bancoSincronizacao);

                        List <CLS_AlunoTurmaDisciplinaOrientacaoCurricular>    listaAlunoTurmaDisciplinaOrientacao = new List <CLS_AlunoTurmaDisciplinaOrientacaoCurricular>();
                        List <CLS_PlanejamentoOrientacaoCurricular>            listaPlanejamentoOrientacao         = new List <CLS_PlanejamentoOrientacaoCurricular>();
                        List <CLS_PlanejamentoOrientacaoCurricularDiagnostico> listaPlanejamentoDiagnostico        = new List <CLS_PlanejamentoOrientacaoCurricularDiagnostico>();

                        if (!ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.PLANEJAMENTO_ANUAL_CICLO, Guid.Empty))
                        {
                            #region Informações sobre alcance dos alunos nas orientações curriculares

                            JArray alunoLista = ((JArray)planejamento.SelectToken("AlunoTurmaDisciplinaOrientacaoCurricular") ?? new JArray());

                            List <CLS_AlunoTurmaDisciplinaOrientacaoCurricular> listaAlunoTurmaDisciplinaOrientacaoCadastrados =
                                CLS_AlunoTurmaDisciplinaOrientacaoCurricularBO.SelecionaAlunosPorTurmaDisciplina(tud_id, bancoSincronizacao);

                            listaAlunoTurmaDisciplinaOrientacao =
                                alunoLista.Count > 0 ?
                                (from JObject aluno in alunoLista
                                 let alu_id = (long)aluno.SelectToken("alu_id")
                                              let ocr_id = (long)aluno.SelectToken("ocr_id")
                                                           let tpc_id = (int)aluno.SelectToken("tpc_id")
                                                                        let aha_alcancada = (bool)aluno.SelectToken("aha_alcancada")
                                                                                            let aha_efetivada = (bool)aluno.SelectToken("aha_efetivada")
                                                                                                                let dataAlteracao = Convert.ToDateTime(aluno.SelectToken("DataAlteracao") ?? new DateTime())
                                                                                                                                    let entMtd = listaMatriculas.Find(p => p.alu_id == alu_id)
                                                                                                                                                 where entMtd != null && !entMtd.IsNew
                                                                                                                                                 let entAlunoTurmaOrientacao = listaAlunoTurmaDisciplinaOrientacaoCadastrados.Any(p => p.alu_id == entMtd.alu_id &&
                                                                                                                                                                                                                                  p.mtu_id == entMtd.mtu_id &&
                                                                                                                                                                                                                                  p.mtd_id == entMtd.mtd_id &&
                                                                                                                                                                                                                                  p.ocr_id == ocr_id &&
                                                                                                                                                                                                                                  p.tpc_id == tpc_id) ?
                                                                                                                                                                               listaAlunoTurmaDisciplinaOrientacaoCadastrados.Find(p => p.alu_id == entMtd.alu_id &&
                                                                                                                                                                                                                                   p.mtu_id == entMtd.mtu_id &&
                                                                                                                                                                                                                                   p.mtd_id == entMtd.mtd_id &&
                                                                                                                                                                                                                                   p.ocr_id == ocr_id &&
                                                                                                                                                                                                                                   p.tpc_id == tpc_id) :
                                                                                                                                                                               new CLS_AlunoTurmaDisciplinaOrientacaoCurricular()
                                                                                                                                                                               let aha_id = entAlunoTurmaOrientacao != null && entAlunoTurmaOrientacao.aha_id > 0 ?
                                                                                                                                                                                            entAlunoTurmaOrientacao.aha_id :
                                                                                                                                                                                            -1
                                                                                                                                                                                            select new CLS_AlunoTurmaDisciplinaOrientacaoCurricular
                            {
                                tud_id = tud_id
                                ,
                                alu_id = alu_id
                                ,
                                mtu_id = entMtd.mtu_id
                                ,
                                mtd_id = entMtd.mtd_id
                                ,
                                ocr_id = ocr_id
                                ,
                                tpc_id = tpc_id
                                ,
                                aha_id = aha_id
                                ,
                                aha_alcancada = entAlunoTurmaOrientacao.aha_dataAlteracao > dataAlteracao ? entAlunoTurmaOrientacao.aha_alcancada : aha_alcancada
                                ,
                                aha_efetivada = entAlunoTurmaOrientacao.aha_dataAlteracao > dataAlteracao ? entAlunoTurmaOrientacao.aha_efetivada : aha_efetivada
                                ,
                                aha_situacao = 1
                                ,
                                aha_dataAlteracao = dataAlteracao
                                ,
                                IsNew = aha_id <= 0
                            }).ToList() :
                                new List <CLS_AlunoTurmaDisciplinaOrientacaoCurricular>();

                            #endregion

                            #region Informações sobre planejamento das orientações curriculares nos bimestre

                            JArray planejamentoOrientacaoLista = ((JArray)planejamento.SelectToken("PlanejamentoOrientacaoCurricular") ?? new JArray());

                            listaPlanejamentoOrientacao =
                                planejamentoOrientacaoLista.Count > 0 ?
                                (from JObject planejamentoOrientacao in planejamentoOrientacaoLista
                                 select new CLS_PlanejamentoOrientacaoCurricular
                            {
                                tud_id = tud_id
                                ,
                                ocr_id = (long)planejamentoOrientacao.SelectToken("ocr_id")
                                ,
                                tpc_id = (int)planejamentoOrientacao.SelectToken("tpc_id")
                                ,
                                poc_planejado = (bool)planejamentoOrientacao.SelectToken("poc_planejado")
                                ,
                                poc_trabalhado = (bool)planejamentoOrientacao.SelectToken("poc_trabalhado")
                                ,
                                poc_alcancado = (bool)planejamentoOrientacao.SelectToken("poc_alcancado")
                                ,
                                tdt_posicao = (byte)(planejamentoOrientacao.SelectToken("tdt_posicao") ?? 1)
                            }).ToList() :
                                new List <CLS_PlanejamentoOrientacaoCurricular>();

                            #endregion

                            #region Informações sobre o planejamento das orientações curriculares no ano anterior

                            JArray planejamentoOrientacaoDiagLista = ((JArray)planejamento.SelectToken("PlanejamentoOrientacaoCurricularDiagnostico") ?? new JArray());

                            listaPlanejamentoDiagnostico =
                                planejamentoOrientacaoDiagLista.Count > 0 ?
                                (from JObject diagnostico in planejamentoOrientacaoDiagLista
                                 select new CLS_PlanejamentoOrientacaoCurricularDiagnostico
                            {
                                tud_id = tud_id
                                ,
                                ocr_id = (long)diagnostico.SelectToken("ocr_id")
                                ,
                                pod_alcancado = (bool)diagnostico.SelectToken("pod_alcancado")
                                ,
                                tdt_posicao = (byte)(diagnostico.SelectToken("tdt_posicao") ?? 1)
                            }).ToList() :
                                new List <CLS_PlanejamentoOrientacaoCurricularDiagnostico>();

                            #endregion
                        }

                        #region Informações sobre os planejamentos anuais e/ou bimestrais

                        JArray TudPlanejamentoLista = ((JArray)planejamento.SelectToken("TurmaDisciplinaPlanejamento") ?? new JArray());

                        List <CLS_TurmaDisciplinaPlanejamento> ltPlanejamentoBanco = SelecionaListaPorTurmaDisciplina(tud_id, bancoSincronizacao);

                        foreach (JObject turmaPlanejamento in TudPlanejamentoLista)
                        {
                            DateTime tdp_dataAlteracao = Convert.ToDateTime(turmaPlanejamento.SelectToken("tdp_dataAlteracao").ToString());

                            if (tdp_dataAlteracao > DateTime.Now.AddMinutes(10))
                            {
                                throw new ValidationException("A data de alteração do planejamento é maior que a data atual.");
                            }

                            int  tpc_id      = (int)(turmaPlanejamento.SelectToken("tpc_id") ?? -1);
                            int  tdp_id      = (int)turmaPlanejamento.SelectToken("tdp_id");
                            byte tdt_posicao = (byte)(turmaPlanejamento.SelectToken("tdt_posicao") ?? 1);

                            CLS_TurmaDisciplinaPlanejamento planejamentoBanco = ltPlanejamentoBanco.Any(p => p.tud_id == tud_id && p.tdp_id == tdp_id && p.tdt_posicao == tdt_posicao) ?
                                                                                ltPlanejamentoBanco.Find(p => p.tud_id == tud_id && p.tdp_id == tdp_id && p.tdt_posicao == tdt_posicao) :
                                                                                new CLS_TurmaDisciplinaPlanejamento();

                            planejamentoBanco.IsNew = planejamentoBanco.tdp_id <= 0;

                            string tdp_planejamento            = (turmaPlanejamento.SelectToken("tdp_planejamento") ?? string.Empty).ToString();
                            string tdp_diagnostico             = (turmaPlanejamento.SelectToken("tdp_diagnostico") ?? string.Empty).ToString();
                            string tdp_avaliacaoTrabalho       = (turmaPlanejamento.SelectToken("tdp_avaliacaoTrabalho") ?? string.Empty).ToString();
                            string tdp_recursos                = (turmaPlanejamento.SelectToken("tdp_recursos") ?? string.Empty).ToString();
                            string tdp_intervencoesPedagogicas = (turmaPlanejamento.SelectToken("tdp_intervencoesPedagogicas") ?? string.Empty).ToString();
                            string tdp_registroIntervencoes    = (turmaPlanejamento.SelectToken("tdp_registroIntervencoes") ?? string.Empty).ToString();

                            CLS_TurmaDisciplinaPlanejamento entPlanejamento = new CLS_TurmaDisciplinaPlanejamento();

                            if (!planejamentoBanco.IsNew)
                            {
                                entPlanejamento = planejamentoBanco;
                            }
                            else
                            {
                                entPlanejamento = new CLS_TurmaDisciplinaPlanejamento
                                {
                                    tud_id = tud_id
                                    ,
                                    tdp_id = -1
                                    ,
                                    tpc_id = tpc_id
                                    ,
                                    tdt_posicao = (byte)(turmaPlanejamento.SelectToken("tdt_posicao") ?? 1)
                                    ,
                                    tdp_situacao = 1
                                    ,
                                    pro_id = protocolo.pro_id
                                };
                            }

                            entPlanejamento.tdp_planejamento = RetornaValorTextoSincronizacao(tdp_planejamento, tdp_dataAlteracao, planejamentoBanco.tdp_planejamento, planejamentoBanco.tdp_dataAlteracao);

                            entPlanejamento.tdp_diagnostico = RetornaValorTextoSincronizacao(tdp_diagnostico, tdp_dataAlteracao, planejamentoBanco.tdp_diagnostico, planejamentoBanco.tdp_dataAlteracao);

                            entPlanejamento.tdp_avaliacaoTrabalho = RetornaValorTextoSincronizacao(tdp_avaliacaoTrabalho, tdp_dataAlteracao, planejamentoBanco.tdp_avaliacaoTrabalho, planejamentoBanco.tdp_dataAlteracao);

                            entPlanejamento.tdp_recursos = RetornaValorTextoSincronizacao(tdp_recursos, tdp_dataAlteracao, planejamentoBanco.tdp_recursos, planejamentoBanco.tdp_dataAlteracao);

                            entPlanejamento.tdp_intervencoesPedagogicas = RetornaValorTextoSincronizacao(tdp_intervencoesPedagogicas, tdp_dataAlteracao, planejamentoBanco.tdp_intervencoesPedagogicas, planejamentoBanco.tdp_dataAlteracao);

                            entPlanejamento.tdp_registroIntervencoes = RetornaValorTextoSincronizacao(tdp_registroIntervencoes, tdp_dataAlteracao, planejamentoBanco.tdp_registroIntervencoes, planejamentoBanco.tdp_dataAlteracao);

                            entPlanejamento.cur_id = entCrp.cur_id;
                            entPlanejamento.crr_id = entCrp.crr_id;
                            entPlanejamento.crp_id = entCrp.crp_id;

                            entPlanejamento.tdp_dataAlteracao = tdp_dataAlteracao;

                            listaPlanejamento.Add(entPlanejamento);
                        }

                        #endregion

                        if (!ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.PLANEJAMENTO_ANUAL_CICLO, Guid.Empty))
                        {
                            #region Salvar alcance dos alunos nas orientações curriculares

                            processou = CLS_AlunoTurmaDisciplinaOrientacaoCurricularBO.Salvar(listaAlunoTurmaDisciplinaOrientacao, bancoSincronizacao, true);

                            #endregion
                        }

                        #region Salvar os planejamentos anuais e bimestrais

                        processou |= CLS_PlanejamentoOrientacaoCurricularBO.SalvaPlanejamentoTurmaDisciplina(listaPlanejamento, listaPlanejamentoOrientacao, listaPlanejamentoDiagnostico, bancoSincronizacao, true);

                        #endregion
                    }

                    if (processou)
                    {
                        // 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;
                    }
                    else
                    {
                        if (protocolo.pro_tentativa > tentativasProtocolo)
                        {
                            throw new ValidationException(String.Format("Número máximo ({0}) de tentativas de processamento deste protocolo foram excedidas. Erro: {1}"
                                                                        , tentativasProtocolo, protocolo.pro_statusObservacao));
                        }

                        // Não processou sem erro - volta o protocolo para não processado.
                        protocolo.pro_statusObservacao = String.Format("Protocolo não processado ({0}).",
                                                                       DateTime.Now.ToString("dd/MM/yyyy hh:mm"));
                        protocolo.tur_id         = -1;
                        protocolo.tud_id         = -1;
                        protocolo.tau_id         = -1;
                        protocolo.pro_qtdeAlunos = -1;
                        protocolo.pro_status     = (byte)DCL_ProtocoloBO.eStatus.NaoProcessado;
                    }

                    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);
        }
Esempio n. 16
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;
            }
        }
Esempio n. 17
0
        /// <summary>
        /// Carrega repeaters do boletim do aluno.
        /// </summary>
        /// <param name="listaNotasEFaltas">Lista com os dados do boletim.</param>
        private void CarregaBoletim(ACA_AlunoBO.BoletimDadosAluno dadosBoletimAluno)
        {
            BoletimDados = dadosBoletimAluno.listaNotasEFaltas;

            int cur_id = dadosBoletimAluno.cur_id;
            int crr_id = dadosBoletimAluno.crr_id;
            int crp_id = dadosBoletimAluno.crp_id;

            List <ACA_CurriculoPeriodo> lstCurriculoPeriodo = ACA_CurriculoPeriodoBO.Seleciona_PeriodosRelacionados_Equivalentes(cur_id, crr_id, crp_id);

            mostraConceitoGlobal = BoletimDados.Count(p => p.tud_global && p.mtu_id > 0) > 0;

            // Seta nota ou conceito com base no tipo da escala de avaliacao
            nomeNota = BoletimDados.Any(p => p.esa_tipo == 1) ? "Nota" : "Conceito";

            lblNotasFaltas.Text = nomeNota + "s e Faltas";

            decimal variacao = BoletimDados.FirstOrDefault().fav_variacao;

            VS_FormatacaoPorcentagemFrequencia =
                GestaoEscolarUtilBO.CriaFormatacaoDecimal(variacao > 0 ? GestaoEscolarUtilBO.RetornaNumeroCasasDecimais(variacao) : 2);

            divBoletim.Visible = true;

            if (ExibeCompensacaoAusencia)
            {
                var thTotalComp = new HtmlTableCell();
                thTotalComp         = (HtmlTableCell)divBoletim.FindControl("thTotalComp");
                thTotalComp.Visible = true;

                var thFreqFinal = new HtmlTableCell();
                thFreqFinal         = (HtmlTableCell)divBoletim.FindControl("thFreqFinal");
                thFreqFinal.Visible = true;

                var thTotalCompEnriquecimento = new HtmlTableCell();
                thTotalCompEnriquecimento         = (HtmlTableCell)divBoletim.FindControl("thTotalCompEnriquecimento");
                thTotalCompEnriquecimento.Visible = true;

                var thFreqFinalEnriquecimento = new HtmlTableCell();
                thFreqFinalEnriquecimento         = (HtmlTableCell)divBoletim.FindControl("thFreqFinalEnriquecimento");
                thFreqFinalEnriquecimento.Visible = true;

                var thFreqFinalRecuperacao = new HtmlTableCell();
                thFreqFinalRecuperacao         = (HtmlTableCell)divBoletim.FindControl("thFreqFinalRecuperacao");
                thFreqFinalRecuperacao.Visible = true;
            }

            #region Periodos / COCs / Bimestres

            var periodos = from BoletimAluno item in BoletimDados
                           orderby item.tpc_ordem
                           group item by item.tpc_id
                           into g
                           select
                           new
            {
                tpc_id = g.Key
                ,
                g.First().tpc_nome
                ,
                g.First().tpc_ordem
                ,
                g.First().ava_idRec
                ,
                g.First().ava_nomeRec
                ,
                MatriculaPeriodo =
                    g.First().mtu_id > 0
                                   ? "Responsável pelo lançamento no " + g.First().tpc_nome + ": Turma " +
                    g.First().tur_codigo + " (" +
                    (ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.ORDENAR_ESCOLAS_POR_CODIGO, __SessionWEB.__UsuarioWEB.Usuario.ent_id)
                                          ? g.First().esc_codigo + " - " + g.First().esc_nome
                                          : g.First().esc_nome)
                    + ")"
                                   : "Aluno não matriculado no " + g.First().tpc_nome
            };

            rptPeriodosNomes.DataSource                      = periodos;
            rptPeriodosColunasFixas.DataSource               = periodos;
            rptPeriodosNomesEnriquecimento.DataSource        = periodos;
            rptPeriodosColunasFixasEnriquecimento.DataSource = periodos;
            rptPeriodosNomesRecuperacao.DataSource           = periodos;
            rptPeriodosColunasFixasRecuperacao.DataSource    = periodos;
            rptPeriodosNomes.DataBind();
            rptPeriodosColunasFixas.DataBind();
            rptPeriodosNomesEnriquecimento.DataBind();
            rptPeriodosColunasFixasEnriquecimento.DataBind();
            rptPeriodosNomesRecuperacao.DataBind();
            rptPeriodosColunasFixasRecuperacao.DataBind();

            #endregion Periodos / COCs / Bimestres

            #region Disciplinas
            bool controleOrdemDisciplinas = ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.CONTROLAR_ORDEM_DISCIPLINAS,
                                                                                                       __SessionWEB.__UsuarioWEB.Usuario.ent_id);

            decimal FrequenciaFinalAjustadaRegencia = BoletimDados.LastOrDefault(p => ((p.tud_tipo == (byte)TurmaDisciplinaTipo.ComponenteRegencia ||
                                                                                        p.tud_tipo == (byte)TurmaDisciplinaTipo.Regencia) &&
                                                                                       (p.FrequenciaFinalAjustada > 0 && p.tpc_id == VS_tpc_id))).FrequenciaFinalAjustada;

            int  tpc_ordem      = BoletimDados.FirstOrDefault(p => p.tpc_id == VS_tpc_id).tpc_ordem;
            bool ultimoBimestre = BoletimDados.OrderByDescending(i => i.tpc_ordem).FirstOrDefault().tpc_id.Equals(VS_tpc_id);

            var todasDisciplinas = (from BoletimAluno item in BoletimDados
                                    where item.tur_id > 0
                                    orderby item.tud_tipo, item.tud_global descending, item.Disciplina
                                    group item by item.Disciplina
                                    into g
                                    select
                                    new
            {
                tud_id = g.First().tud_id
                ,
                Disciplina = g.First().nomeDisciplina
                ,
                tds_ordem = g.First().tds_ordem
                ,
                totalFaltas = g.First().tud_tipo == (byte)ACA_CurriculoDisciplinaTipo.DocenciaCompartilhada || g.Any(p => p.naoExibirFrequencia) ? "-" :
                              g.Any(p => p.NotaID > 0) ? (g.Sum(p => (p.mostraFrequencia && !p.naoExibirFrequencia && (p.NotaID > 0 || tipoComponenteRegencia(p.tud_tipo)) &&
                                                                      p.tpc_ordem <= tpc_ordem) ? p.numeroFaltas : 0)).ToString() : "-"
                ,
                ausenciasCompensadas = g.First().tud_tipo == (byte)ACA_CurriculoDisciplinaTipo.DocenciaCompartilhada || g.Any(p => p.naoExibirFrequencia) ? "-" :
                                       g.Any(p => p.NotaID > 0) ? (g.Sum(p => p.tpc_ordem <= tpc_ordem ? p.ausenciasCompensadas : 0)).ToString() : "-"
                ,
                FrequenciaFinalAjustada = g.Any(p => p.naoExibirFrequencia) ? "-" :
                                          g.Any(p => p.NotaID > 0 && p.tpc_id == VS_tpc_id) ? ((FrequenciaFinalAjustadaRegencia > 0) ? FrequenciaFinalAjustadaRegencia :
                                                                                               g.LastOrDefault(p => p.FrequenciaFinalAjustada > 0 && p.tpc_id == VS_tpc_id).FrequenciaFinalAjustada).ToString(VS_FormatacaoPorcentagemFrequencia) : "-"
                ,
                tud_Tipo = g.First().tud_tipo
                ,
                g.First().tud_global
                ,
                mostrarDisciplina = g.Count(p => p.MostrarLinhaDisciplina)
                ,
                NotaTotal = g.First().NotaTotal
                ,
                MediaFinal = (g.Any(p => p.naoExibirNota) || !ultimoBimestre) ? "-" : (!string.IsNullOrEmpty(g.Last().NotaResultado) ? g.Last().NotaResultado : "-")
                ,
                regencia = g.First().tud_tipo == (byte)TurmaDisciplinaTipo.Regencia ||
                           g.First().tud_tipo == (byte)TurmaDisciplinaTipo.ComponenteRegencia ||
                           (g.First().tud_tipo == (byte)TurmaDisciplinaTipo.DocenteEspecificoComplementacaoRegencia &&
                            controleOrdemDisciplinas) ? 1 : 2
                ,
                enriquecimentoCurricular = g.First().EnriquecimentoCurricular
                ,
                parecerFinal = g.First().tud_tipo == (byte)ACA_CurriculoDisciplinaTipo.DocenciaCompartilhada ? "-" :
                               // Se for experiência, vai exibir o menor resultado do aluno (F, NF e nulo nessa ordem)
                               g.First().tud_tipo == (byte)ACA_CurriculoDisciplinaTipo.Experiencia ? g.OrderBy(p => p.ParecerFinal ?? "z").FirstOrDefault().ParecerFinal :
                               // Caso contrário, mantem o parecer final atual
                               g.Last().ParecerFinal
                ,
                parecerConclusivo = g.Last().ParecerConclusivo
                ,
                recuperacao = g.First().Recuperacao
                ,
                disRelacionadas = g.First().disRelacionadas
                ,
                notas = (
                    from per in periodos.ToList()
                    orderby per.tpc_ordem
                    select new
                {
                    per.tpc_id
                    ,
                    nota = (
                        from BoletimAluno bNota in BoletimDados
                        where
                        bNota.Disciplina == g.Key &&
                        bNota.tpc_id == per.tpc_id
                        select new
                    {
                        Nota = (
                            //
                            bNota.dda_id > 0 ? "-"
                                                                                                 :
                            //
                            !bNota.mostraNota || bNota.naoExibirNota || (VS_tpc_id > 0 && bNota.tpc_id > VS_tpc_id)
                                                                                                     ? "-"
                                                                                                     : (bNota.NotaNumerica
                                                                                                            ? bNota.avaliacao ??
                                                                                                        "-"
                                                                                                            : (bNota.
                                                                                                               NotaAdicionalNumerica
                                                                                                                   ? bNota.
                                                                                                               avaliacaoAdicional ??
                                                                                                               "-"
                                                                                                                   : bNota.esa_tipo == (byte)EscalaAvaliacaoTipo.Pareceres
                                                                                                                         ? bNota.avaliacao ?? "-"
                                                                                                                         : "-")
                                                                                                        )
                            ).Replace(".", ",")
                        ,
                        Conceito =
                            (
                                //
                                bNota.dda_id > 0 ? "-"
                                                                                       :
                                //
                                bNota.mostraConceito
                                                                                            ? (bNota.NotaNumerica
                                                                                                   ? "-"
                                                                                                   : bNota.avaliacao)
                                                                                            : "-")
                        ,
                        bNota.tpc_id
                        ,
                        bNota.NotaRP
                        ,
                        numeroFaltas = bNota.tud_tipo == (byte)ACA_CurriculoDisciplinaTipo.DocenciaCompartilhada ? "-" :

                                       // Se for "Experiência", faz contagem específica
                                       bNota.tud_tipo == (byte)ACA_CurriculoDisciplinaTipo.Experiencia ?

                                       ((((bNota.cur_id == cur_id && bNota.crr_id == crr_id && bNota.crp_id == crp_id) || lstCurriculoPeriodo.Any(p => p.cur_id == bNota.cur_id && p.crr_id == bNota.crr_id && p.crp_id == bNota.crp_id)) &&
                                         bNota.mostraFrequencia && !bNota.naoExibirFrequencia && bNota.tpc_id <= VS_tpc_id && (bNota.NotaID > 0 || bNota.numeroFaltas > 0))
                                                                                                         ? (g.Sum(p => (p.tpc_id == bNota.tpc_id) ? p.numeroFaltas : 0)).ToString() : "-")

                                                                                                         :

                                       // Caso contrário, mantem a contagem atual
                                       ((((bNota.cur_id == cur_id && bNota.crr_id == crr_id && bNota.crp_id == crp_id) || lstCurriculoPeriodo.Any(p => p.cur_id == bNota.cur_id && p.crr_id == bNota.crr_id && p.crp_id == bNota.crp_id)) &&
                                         bNota.mostraFrequencia && !bNota.naoExibirFrequencia && bNota.tpc_id <= VS_tpc_id && (bNota.NotaID > 0 || bNota.numeroFaltas > 0)) ? bNota.numeroFaltas.ToString() : "-")
                        ,
                        tud_Tipo = g.First().tud_tipo
                    }).FirstOrDefault()
                })
            }).ToList();

            var disciplinas = (from item in todasDisciplinas
                               where !item.enriquecimentoCurricular && //Retira as que são de enriquecimento curricular
                               !item.recuperacao    //Retira as recuperacoes
                               select item
                               );

            // Realiza uma ordenação posterior em que so importa se a disciplina é ou nao regencia/componente da regencia para manter o agrupamento
            var dispOrdenadas = from item in disciplinas
                                orderby item.regencia, controleOrdemDisciplinas ? item.tds_ordem.ToString() : item.Disciplina
            select item;

            // "Agrupa" a frequência das disciplinas componentes e complementares à regência.
            QtComponenteRegencia = dispOrdenadas.Count(p => (tipoComponenteRegencia(p.tud_Tipo)) && p.mostrarDisciplina > 0);

            // "Agrupa" a frequência das disciplinas
            QtComponentes = dispOrdenadas.Count(p => (p.mostrarDisciplina > 0));

            rptDisciplinas.DataSource = dispOrdenadas.Where(p => p.mostrarDisciplina > 0);
            rptDisciplinas.DataBind();

            #endregion Disciplinas

            #region Disciplinas de enriquecimento curricular

            var disciplinasEnriquecimentoCurricular = (from item in todasDisciplinas
                                                       where item.enriquecimentoCurricular && //Verifica se são de enriquecimento curricular
                                                       !item.recuperacao    //Retira as recuperacoes
                                                       select item
                                                       );

            if (disciplinasEnriquecimentoCurricular.Count() > 0)
            {
                divEnriquecimentoCurricular.Visible = true;
                // Realiza uma ordenação posterior em que so importa se a disciplina é ou nao regencia/componente da regencia para manter o agrupamento
                var dispOrdenadasEnriquecimento = from item in disciplinasEnriquecimentoCurricular
                                                  orderby item.regencia, controleOrdemDisciplinas ? item.tds_ordem.ToString() : item.Disciplina
                select item;

                rptDisciplinasEnriquecimentoCurricular.DataSource = dispOrdenadasEnriquecimento.Where(p => p.mostrarDisciplina > 0);
                rptDisciplinasEnriquecimentoCurricular.DataBind();
            }
            else
            {
                divEnriquecimentoCurricular.Visible = false;
            }

            #endregion Disciplinas de enriquecimento curricular

            #region Território do saber


            if (!string.IsNullOrEmpty(dadosBoletimAluno.territorioSaber))
            {
                divTerritorioSaber.Visible = true;

                string[] linhasTS = dadosBoletimAluno.linhaTerritorioSaber.Split(';');
                string[] itensTS  = dadosBoletimAluno.territorioSaber.Split(';');

                int qtdMaxColunas = 5;// itensTS.Max(i => i.Split(',').Length);//tamanho fixo de 5 colunas
                thTerritorioSaber.ColSpan = qtdMaxColunas;

                Dictionary <string, DataTable> dicLinhasOrdenadas = new Dictionary <string, DataTable>();
                for (int i = 0; i < linhasTS.Length; i++)
                {
                    List <string> itemAdd = itensTS[i].Split(',').ToList();
                    while (itemAdd.Count < qtdMaxColunas)
                    {
                        itemAdd.Add("-");
                    }
                    DataTable dtAdd = new DataTable();
                    dtAdd.Columns.Add("territorio");
                    foreach (string t in itemAdd)
                    {
                        DataRow rowAdd = dtAdd.NewRow();
                        rowAdd["territorio"] = t;
                        dtAdd.Rows.Add(rowAdd);
                    }
                    dicLinhasOrdenadas.Add(linhasTS[i], dtAdd);
                }

                rptLinhasTerritorio.DataSource = dicLinhasOrdenadas.Select(t => new { linha = t.Key, itemTerritorio = t.Value });
                rptLinhasTerritorio.DataBind();
            }
            else
            {
                divTerritorioSaber.Visible = false;
            }

            #endregion Território do saber

            #region Recuperacao

            var disciplinasRecuperacao = (from item in todasDisciplinas
                                          where item.recuperacao //Seleciona as recuperacoes
                                          select item
                                          );

            if (disciplinasRecuperacao.Count() > 0)
            {
                divRecuperacao.Visible = true;
                var dispOrdenadasRecuperacao = from item in disciplinasRecuperacao
                                               orderby item.regencia, controleOrdemDisciplinas ? item.tds_ordem.ToString() : item.Disciplina
                select item;

                rptDisciplinasRecuperacao.DataSource = disciplinasRecuperacao.Where(p => p.mostrarDisciplina > 0);
                rptDisciplinasRecuperacao.DataBind();
            }
            else
            {
                divRecuperacao.Visible = false;
            }

            // Exibe a linha do parecer conclusivo caso seja o último bimestre selecionado, e o parecer tenha sido lançado.
            if (ultimoBimestre && !String.IsNullOrEmpty(todasDisciplinas
                                                        .Where(p => p.tud_Tipo != (byte)ACA_CurriculoDisciplinaTipo.DisciplinaEletivaAluno)
                                                        .Last().parecerConclusivo))
            {
                trParecerConclusivo.Visible           = true;
                lblParecerConclusivoResultado.Visible = true;

                lblParecerConclusivoResultado.Text = todasDisciplinas
                                                     .Where(p => p.tud_Tipo != (byte)ACA_CurriculoDisciplinaTipo.DisciplinaEletivaAluno)
                                                     .Last().parecerConclusivo;
            }
            else
            {
                trParecerConclusivo.Visible = false;
            }

            #endregion Recuperacao

            #region Docencia compartilhada

            if (DocenciasCompartilhadas.Any())
            {
                divDocenciaCompartilhada.Visible       = true;
                rptTudDocenciaCompartilhada.DataSource = DocenciasCompartilhadas;
                rptTudDocenciaCompartilhada.DataBind();
            }
            else
            {
                divDocenciaCompartilhada.Visible = false;
            }

            #endregion

            //#region Disciplinas do tipo Eletiva
            //CarregarDisciplinasEletivas(dadosBoletimAluno);
            //#endregion

            #region Linha de Faltas

            //var linhaFaltas = (from per in periodos.ToList()
            //                   orderby per.tpc_ordem
            //                   select new
            //                   {
            //                       tpc_id = per.tpc_id,
            //                       nota = (from f in BoletimDados
            //                               where f.tpc_id == per.tpc_id
            //                               group f by f.tpc_id into g
            //                               select
            //                                   g.Count(p => p.mostraFrequencia && (p.NotaID > 0 || p.tud_tipo == tipoComponenteRegencia)) > 0 ?
            //                                   (g.Sum(p => (p.mostraFrequencia && p.NotaID > 0
            //                                                && p.tud_tipo != tipoComponenteRegencia
            //                                                ) ? p.numeroFaltas : 0)
            //                                               + g.FirstOrDefault
            //                                               (p => p.tud_tipo == tipoComponenteRegencia
            //                                               ).numeroFaltas).ToString() : "-"
            //                       ).FirstOrDefault()
            //                   }
            //                ).ToList();

            //LINHA TOTALIZADORA
            //litLinhaFaltasTotal.Text = linhaFaltas.Count(p => string.IsNullOrEmpty(p.nota)) == linhaFaltas.Count() ?
            //                                "-"
            //                                : linhaFaltas.Where(p => p.nota != "-").Sum(p => Convert.ToInt32(p.nota)).ToString();

            //rptFaltasPeriodo.DataSource = linhaFaltas;
            //rptFaltasPeriodo.DataBind();

            #endregion Linha de Faltas
        }
Esempio n. 18
0
 /// <summary>
 /// Carrega os curriculo período não excluídos logicamente
 /// filtrados por curso, currículo e escola
 /// </summary>
 /// <param name="cur_id">ID de curso</param>
 /// <param name="crr_id">ID de curriculo</param>
 /// <param name="esc_id">ID de escola</param>
 /// <param name="uni_id">ID de unidade</param>
 public void CarregaPorCursoCurriculoEscola(int cur_id, int crr_id, int esc_id, int uni_id)
 {
     CarregarCombo(ACA_CurriculoPeriodoBO.GetSelect(cur_id, crr_id, esc_id, uni_id, __SessionWEB.__UsuarioWEB.Usuario.ent_id, ApplicationWEB.AppMinutosCacheLongo));
 }
Esempio n. 19
0
 /// <summary>
 /// Carrega os curriculo período
 /// filtrados por curso e currículo e disciplina
 /// </summary>
 /// <param name="dis_id">ID da disciplina</param>
 /// <param name="cur_id">ID do curso</param>
 /// <param name="crr_id">ID do currículo</param>
 public void CarregarPorCursoCurriculoDisciplina(int cur_id, int crr_id, int dis_id)
 {
     CarregarCombo(ACA_CurriculoPeriodoBO.Select_Por_Disciplina(dis_id, cur_id, crr_id));
 }
Esempio n. 20
0
 /// <summary>
 /// Carrega os curriculo período
 /// filtrados por curso e currículo e turma disciplina
 /// </summary>
 /// <param name="cur_id">ID do curso</param>
 /// <param name="crr_id">ID do currículo</param>
 /// <param name="tud_id">ID da turma disciplina</param>
 public void CarregarPorCursoCurriculoTurmaDisciplina(int cur_id, int crr_id, long tud_id)
 {
     CarregarCombo(ACA_CurriculoPeriodoBO.SelecionaPorCursoTurmaDisciplina(cur_id, crr_id, tud_id, __SessionWEB.__UsuarioWEB.Usuario.ent_id));
 }
Esempio n. 21
0
 /// <summary>
 /// Carrega os curriculo período
 /// filtrados por curso e currículo e tipo ciclo
 /// </summary>
 /// <param name="cur_id">ID do curso</param>
 /// <param name="crr_id">ID do currículo</param>
 /// <param name="tci_id">ID do tipo do ciclo</param>
 public void CarregarPorCursoCurriculoTipoCiclo(int cur_id, int crr_id, int tci_id)
 {
     CarregarCombo(ACA_CurriculoPeriodoBO.Select_Por_TipoCiclo(cur_id, crr_id, tci_id, __SessionWEB.__UsuarioWEB.Usuario.ent_id, ApplicationWEB.AppMinutosCacheLongo));
 }
Esempio n. 22
0
        public new static bool Delete
        (
            MTR_ParametroTipoMovimentacaoCurriculoPeriodo entity
            , Data.Common.TalkDBTransaction banco
            , Guid ent_id
        )
        {
            MTR_ParametroTipoMovimentacaoCurriculoPeriodoDAO dao = new MTR_ParametroTipoMovimentacaoCurriculoPeriodoDAO();

            if (banco == null)
            {
                dao._Banco.Open(IsolationLevel.ReadCommitted);
            }
            else
            {
                dao._Banco = banco;
            }

            try
            {
                // Verifica se o curso período do parâmetro de movimentação pode ser deletado
                if (GestaoEscolarUtilBO.VerificaIntegridadaChaveDupla("tmo_id", "tmp_id", entity.tmo_id.ToString(), entity.tmp_id.ToString(), "MTR_TipoMovimentacaoCurriculoPeriodo,MTR_ParametroTipoMovimentacaoCurriculoPeriodo", dao._Banco))
                {
                    MTR_TipoMovimentacaoCurriculoPeriodo tmp = new MTR_TipoMovimentacaoCurriculoPeriodo {
                        tmo_id = entity.tmo_id, tmp_id = entity.tmp_id
                    };
                    MTR_TipoMovimentacaoCurriculoPeriodoBO.GetEntity(tmp, dao._Banco);

                    ACA_Curso cur = new ACA_Curso {
                        cur_id = tmp.cur_id
                    };
                    ACA_CursoBO.GetEntity(cur, dao._Banco);

                    ACA_CurriculoPeriodo crp = new ACA_CurriculoPeriodo {
                        cur_id = tmp.cur_id, crr_id = tmp.crr_id, crp_id = tmp.crp_id
                    };
                    ACA_CurriculoPeriodoBO.GetEntity(crp, dao._Banco);

                    throw new ValidationException("Não é possível excluir o(a) " + GestaoEscolarUtilBO.nomePadraoCurso(ent_id).ToLower() + " " + cur.cur_nome + " e " + GestaoEscolarUtilBO.nomePadraoPeriodo(ent_id).ToLower() + " " + crp.crp_descricao + " pois possui outros registros ligados a ele(a).");
                }

                // Deleta logicamente o parâmetro do curso período para parâmetro de movimentação
                dao.Delete(entity);

                return(true);
            }
            catch (Exception err)
            {
                if (banco == null)
                {
                    dao._Banco.Close(err);
                }

                throw;
            }
            finally
            {
                if (banco == null)
                {
                    dao._Banco.Close();
                }
            }
        }
Esempio n. 23
0
        /// <summary>
        /// Valida e configura se a turma destino possui a mesma avaliação turma atual do aluno.
        /// </summary>
        /// <param name="cadMov">Estrutura de movimentação</param>
        /// <param name="progressaoPEJA">Verifica se o método é chamado pela tela de progressão</param>
        /// <param name="bancoGestao">Transação com banco Gestão - obrigatório</param>
        public static void ConfiguraTurmaAvaliacao(MTR_Movimentacao_Cadastro cadMov, bool progressaoPEJA, TalkDBTransaction bancoGestao)
        {
            List <ACA_CurriculoPeriodo> listPeriodosEquivalentes = ACA_CurriculoPeriodoBO.
                                                                   Seleciona_PeriodosRelacionados_Equivalentes(cadMov.entAluCurAnterior.cur_id, cadMov.entAluCurAnterior.crr_id, cadMov.entAluCurAnterior.crp_id);

            // Apenas valida a avaliação da turma caso seja o mesmo Curso/Período.
            // Também verifica se os cursos são equivalentes
            if (
                ((cadMov.entAluCurAnterior.cur_id == cadMov.entAluCurNovo.cur_id) &&
                 (cadMov.entAluCurAnterior.crr_id == cadMov.entAluCurNovo.crr_id) &&
                 (cadMov.entAluCurAnterior.crp_id == cadMov.entAluCurNovo.crp_id)) ||
                (listPeriodosEquivalentes.Count > 0 && listPeriodosEquivalentes.Exists(p => p.cur_id == cadMov.entAluCurNovo.cur_id &&
                                                                                       p.crr_id == cadMov.entAluCurNovo.crr_id &&
                                                                                       p.crp_id == cadMov.entAluCurNovo.crp_id)))
            {
                // Apenas valida a avaliação da turma caso definido a turma destino.
                if (cadMov.entMatTurNovo.tur_id > 0)
                {
                    ACA_CurriculoPeriodo entityCurriculoPeriodo = new ACA_CurriculoPeriodo {
                        cur_id = cadMov.entAluCurAnterior.cur_id, crr_id = cadMov.entAluCurAnterior.crr_id, crp_id = cadMov.entAluCurAnterior.crp_id
                    };
                    ACA_CurriculoPeriodoBO.GetEntity(entityCurriculoPeriodo, bancoGestao);

                    TUR_TurmaCurriculoAvaliacao entityTurmaCurriculoAvaliacaoAtual = new TUR_TurmaCurriculoAvaliacao {
                        tur_id = cadMov.entAluCurAvaAnterior.tur_id, cur_id = cadMov.entAluCurAvaAnterior.cur_id, crr_id = cadMov.entAluCurAvaAnterior.crr_id, crp_id = cadMov.entAluCurAvaAnterior.crp_id, tca_id = cadMov.entAluCurAvaAnterior.tca_id
                    };
                    TUR_TurmaCurriculoAvaliacaoBO.GetEntity(entityTurmaCurriculoAvaliacaoAtual, bancoGestao);
                    if (entityTurmaCurriculoAvaliacaoAtual.tca_id > 0)
                    {
                        TUR_TurmaCurriculoAvaliacao entityTurmaCurriculoAvaliacaoDestino;
                        string msg;

                        if (!progressaoPEJA)
                        {
                            // Verifica se a turma destino possui a avaliação da turma origem.
                            entityTurmaCurriculoAvaliacaoDestino =
                                TUR_TurmaCurriculoAvaliacaoBO.SelecionaAvaliacaoExistenteParaTurma(cadMov.entMatTurNovo.tur_id,
                                                                                                   cadMov.entAluCurNovo.cur_id,
                                                                                                   cadMov.entAluCurNovo.crr_id,
                                                                                                   cadMov.entAluCurNovo.crp_id,
                                                                                                   entityTurmaCurriculoAvaliacaoAtual.tca_numeroAvaliacao);
                            msg = "A turma destino do aluno deve possuir o(a) mesmo(a) " +
                                  GestaoEscolarUtilBO.nomePadraoPeriodoAvaliacao(entityCurriculoPeriodo.crp_nomeAvaliacao) + " atual do aluno.";
                        }
                        else
                        {
                            entityTurmaCurriculoAvaliacaoDestino = new TUR_TurmaCurriculoAvaliacao
                            {
                                tur_id = cadMov.entMatTurNovo.tur_id
                                ,
                                cur_id = cadMov.entAluCurAvaNovo.cur_id
                                ,
                                crr_id = cadMov.entAluCurAvaNovo.crr_id
                                ,
                                crp_id = cadMov.entAluCurAvaNovo.crp_id
                                ,
                                tca_id = cadMov.entAluCurAvaNovo.tca_id
                            };
                            TUR_TurmaCurriculoAvaliacaoBO.GetEntity(entityTurmaCurriculoAvaliacaoDestino, bancoGestao);
                            msg = "A turma destino do aluno não possui o(a) " +
                                  GestaoEscolarUtilBO.nomePadraoPeriodoAvaliacao(entityCurriculoPeriodo.crp_nomeAvaliacao) + " configurada para o aluno.";
                        }

                        if ((entityTurmaCurriculoAvaliacaoDestino != null) && (entityTurmaCurriculoAvaliacaoDestino.tca_id > 0))
                        {
                            // Configura o currículo avaliação novo com mesma avaliação, caso necessário.
                            if (cadMov.entAluCurAvaNovo.tca_id <= 0)
                            {
                                cadMov.entAluCurAvaNovo.alu_id = cadMov.entAluCurNovo.alu_id;
                                cadMov.entAluCurAvaNovo.tur_id = entityTurmaCurriculoAvaliacaoDestino.tur_id;
                                cadMov.entAluCurAvaNovo.cur_id = entityTurmaCurriculoAvaliacaoDestino.cur_id;
                                cadMov.entAluCurAvaNovo.crr_id = entityTurmaCurriculoAvaliacaoDestino.crr_id;
                                cadMov.entAluCurAvaNovo.crp_id = entityTurmaCurriculoAvaliacaoDestino.crp_id;
                                cadMov.entAluCurAvaNovo.tca_id = entityTurmaCurriculoAvaliacaoDestino.tca_id;
                            }
                        }
                        else
                        {
                            throw new ValidationException(msg);
                        }
                    }
                    else
                    {
                        throw new ValidationException("Não é possível realizar essa movimentação, pois o aluno não possui " +
                                                      GestaoEscolarUtilBO.nomePadraoPeriodoAvaliacao(entityCurriculoPeriodo.crp_nomeAvaliacao) + " ativo(a) na turma.");
                    }
                }
            }
        }
Esempio n. 24
0
        /// <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);
        }
Esempio n. 25
0
        /// <summary>
        /// Validar idade do aluno de acordo com o CurriculoPeriodo no qual ele está inserido.
        /// Valida a idade máxima ideal + a amplitude do parâmetro acadêmico ou o valor informado
        /// no parâmetro amplitude.
        /// Valida a idade mínima ideal quando informado através da flag validarIdadeMinima - quando
        /// informada sempre valida usando a amplitudo passada por parâmetro na função.
        /// </summary>
        /// <param name="entity">Entidade AlunoCurriculo carregada</param>
        /// <param name="bancoGestao">Transação com banco Gestão - obrigatório</param>
        /// <param name="bancoCore">Transação com banco CoreSSO - opcional</param>
        /// <param name="validarIdadeMinima">Flag que indica se é pra validar idade mínima também</param>
        /// <param name="amplitude">Amplitude, se > 0, substitui a amplitude do parâmetro acadêmico</param>
        /// <param name="ent_id">Id da entidade do usuário logado.</param>
        /// <returns>Se idade válida</returns>
        internal static bool ValidarIdadeIdeal
        (
            ACA_AlunoCurriculo entity
            , TalkDBTransaction bancoGestao
            , TalkDBTransaction bancoCore
            , bool validarIdadeMinima
            , int amplitude
            , Guid ent_id
        )
        {
            ACA_Aluno entAluno = new ACA_Aluno {
                alu_id = entity.alu_id
            };

            ACA_AlunoBO.GetEntity(entAluno, bancoGestao);

            if (entAluno.alu_situacao != Convert.ToByte(ACA_AlunoSituacao.Inativo))
            {
                if (entity.alc_situacao == Convert.ToByte(ACA_AlunoCurriculoSituacao.Ativo) ||
                    entity.alc_situacao == Convert.ToByte(ACA_AlunoCurriculoSituacao.EmMatricula))
                {
                    ACA_CurriculoPeriodo entCurPer = new ACA_CurriculoPeriodo {
                        cur_id = entity.cur_id, crr_id = entity.crr_id, crp_id = entity.crp_id
                    };
                    ACA_CurriculoPeriodoBO.GetEntity(entCurPer, bancoGestao);

                    PES_Pessoa entPessoa = new PES_Pessoa {
                        pes_id = entAluno.pes_id
                    };
                    if (bancoCore == null)
                    {
                        PES_PessoaBO.GetEntity(entPessoa);
                    }
                    else
                    {
                        PES_PessoaBO.GetEntity(entPessoa, bancoCore);
                    }

                    // Quantidade de meses da idade máxima da criança cadastrada no CurrPeriodo.
                    int idadeMaxima = (entCurPer.crp_idadeIdealAnoFim * 12) + entCurPer.crp_idadeIdealMesFim;

                    if (amplitude > 0)
                    {
                        idadeMaxima += amplitude;
                    }
                    else
                    {
                        int pac_valor = ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.AMPLITUDE_IDADE_ALERTA, ent_id);

                        // Soma quantidade em meses do parâmetro de amplitude.
                        idadeMaxima += (pac_valor > 0 ? (pac_valor * 12) : 0);
                    }

                    // Valida a quantidade de meses da idade da criança.
                    int anos, meses, dias;
                    GestaoEscolarUtilBO.CalculaAniversarioCompleto(DateTime.Now, entPessoa.pes_dataNascimento, out anos, out meses, out dias);

                    int idade = (anos * 12) + meses;

                    if (idade > idadeMaxima)
                    {
                        anos  = idadeMaxima / 12;
                        meses = idadeMaxima % 12;

                        string sAnos  = anos > 0 ? (anos + (anos > 1 ? " anos" : " ano")) : string.Empty;
                        string sMeses = meses > 0 ? (anos > 0 ? " e " : "") + meses + (meses > 1 ? " meses" : " mês") : string.Empty;
                        throw new ACA_Aluno_ValidationException("A idade do aluno não pode ser maior que " + sAnos + sMeses + ".");
                    }

                    ACA_Curriculo curso = ACA_CurriculoBO.GetEntity(new ACA_Curriculo {
                        cur_id = entity.cur_id, crr_id = entity.crr_id
                    });

                    if (validarIdadeMinima &&
                        curso.crr_regimeMatricula == 3 &&
                        ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.VALIDAR_IDADE_MINIMA_PEJA, ent_id))
                    {
                        // Quantidade de meses da idade máxima da criança cadastrada no CurrPeriodo.
                        int idadeMinima = (entCurPer.crp_idadeIdealAnoInicio * 12) + entCurPer.crp_idadeIdealMesInicio;

                        idadeMinima -= amplitude;

                        if (idade < idadeMinima)
                        {
                            anos  = idadeMinima / 12;
                            meses = idadeMinima % 12;

                            string sAnos  = anos > 0 ? (anos + (anos > 1 ? " anos" : " ano")) : string.Empty;
                            string sMeses = meses > 0 ? (anos > 0 ? " e " : "") + meses + (meses > 1 ? " meses" : " mês") : string.Empty;
                            throw new ACA_Aluno_ValidationException("A idade do aluno não pode ser menor que " + sAnos + sMeses + ".");
                        }
                    }
                }
            }

            return(true);
        }