示例#1
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
        }
示例#2
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);
            }
        }
示例#3
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.");
                    }
                }
            }
        }