Ejemplo n.º 1
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));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Salva as entidades turmaAula e TurmaAulaAluno nas listas.
        /// </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>
        /// <returns></returns>
        public static bool Save
        (
            List <CLS_TurmaAulaAluno> listTurmaAulaAluno
            , List <CLS_TurmaAula> listTurmaAula
            , long tur_id
            , long tud_id
            , byte tdt_posicao
            , TUR_Turma entityTurma = null
            , ACA_FormatoAvaliacao entityFormatoAvaliacao = null
            , ACA_CurriculoPeriodo entityCurriculoPeriodo = null
            , Guid usu_id        = new Guid()
            , byte origemLogAula = 0
            , byte tipoLogAula   = 0
            , Guid ent_id        = new Guid()
        )
        {
            TalkDBTransaction banco = new CLS_TurmaAulaAlunoDAO()._Banco.CopyThisInstance();

            banco.Open(IsolationLevel.ReadCommitted);

            try
            {
                return(Save(listTurmaAulaAluno, listTurmaAula, tur_id, tud_id, tdt_posicao, entityTurma, entityFormatoAvaliacao, entityCurriculoPeriodo, banco, usu_id, origemLogAula, tipoLogAula, ent_id));
            }
            catch (Exception err)
            {
                banco.Close(err);
                throw;
            }
            finally
            {
                banco.Close();
            }
        }
Ejemplo n.º 3
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);
                }
            }
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 5
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);
        }
Ejemplo n.º 6
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);
            }
        }
Ejemplo n.º 7
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;
            }
        }
Ejemplo n.º 8
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);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Seleciona as disciplinas das grades curriculares
        /// </summary>
        /// <param name="listaCurriculoPeriodo"></param>
        /// <param name="banco"></param>
        /// <returns></returns>
        public static List <ACA_CurriculoDisciplina_DisciplinasBase> SelecionaPorGradesCurriculares(List <ACA_CurriculoPeriodo> listaCurriculoPeriodo, TalkDBTransaction banco = null)
        {
            ACA_CurriculoDisciplinaDAO dao = banco == null ?
                                             new ACA_CurriculoDisciplinaDAO() : new ACA_CurriculoDisciplinaDAO {
                _Banco = banco
            };

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

            try
            {
                List <ACA_CurriculoDisciplina_DisciplinasBase> dados = new List <ACA_CurriculoDisciplina_DisciplinasBase>();

                using (DataTable dtCurriculoPeriodo = ACA_CurriculoPeriodo.TipoTabela_CurriculoPeriodo())
                {
                    listaCurriculoPeriodo.ForEach(p => dtCurriculoPeriodo.Rows.Add(p.EntityToDataRow_TipoTabela_CurriculoPeriodo(dtCurriculoPeriodo)));

                    using (DataTable dtDados = dao.SelecionaPorGradesCurriculares(dtCurriculoPeriodo))
                    {
                        dados = (from DataRow dr in dtDados.Select()
                                 group dr by new
                        {
                            cur_id = Convert.ToInt32(dr["cur_id"])
                            ,
                            crr_id = Convert.ToInt32(dr["crr_id"])
                            ,
                            crp_id = Convert.ToInt32(dr["crp_id"])
                            ,
                            tds_base = Convert.ToByte(dr["tds_base"])
                        } into grupo
                                 select new ACA_CurriculoDisciplina_DisciplinasBase
                        {
                            cur_id = grupo.Key.cur_id
                            ,
                            crr_id = grupo.Key.crr_id
                            ,
                            crp_id = grupo.Key.crp_id
                            ,
                            tds_base = grupo.Key.tds_base
                            ,
                            listaDisciplina = grupo.Select(p => (ACA_Disciplina)GestaoEscolarUtilBO.DataRowToEntity(p, new ACA_Disciplina())).ToList()
                        }).ToList();
                    }
                }

                return(dados);
            }
            catch (Exception ex)
            {
                if (banco == null)
                {
                    dao._Banco.Close(ex);
                }
                throw;
            }
            finally
            {
                if (banco == null && dao._Banco.ConnectionIsOpen)
                {
                    dao._Banco.Close();
                }
            }
        }
Ejemplo n.º 10
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="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, out ACA_CurriculoPeriodo entCurriculoPeriodo, out bool Seriado)
        {
            TalkDBTransaction banco = new CLS_AlunoAvaliacaoTurmaDAO()._Banco.CopyThisInstance();

            banco.Open(IsolationLevel.ReadCommitted);

            try
            {
                return(ValidaCursoSeriadoAvaliacao(entTurma, EntFormatoAvaliacao, banco, out entCurriculoPeriodo, out Seriado));
            }
            catch (Exception ex)
            {
                banco.Close(ex);
                throw;
            }
            finally
            {
                if (banco.ConnectionIsOpen)
                {
                    banco.Close();
                }
            }
        }
Ejemplo n.º 11
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.");
                    }
                }
            }
        }
Ejemplo n.º 12
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);
        }
Ejemplo n.º 13
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();
                }
            }
        }
Ejemplo n.º 14
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);
        }