Esempio n. 1
0
        /// <summary>
        /// O método salva os dados do planejamento anual.
        /// </summary>
        /// <param name="ltPlanejamento">Lista de dados do planejamento anual.</param>
        /// <param name="ltHabilidade">Lista de orientações curriculares da turma.</param>
        /// <param name="ltDiagnostico">Lista de orientações anteriores.</param>
        /// <param name="banco"></param>
        /// <returns></returns>
        public static bool SalvaPlanejamentoTurmaDisciplina
        (
            List <CLS_TurmaDisciplinaPlanejamento> ltPlanejamento,
            List <CLS_PlanejamentoOrientacaoCurricular> ltHabilidade,
            List <CLS_PlanejamentoOrientacaoCurricularDiagnostico> ltDiagnostico,
            TalkDBTransaction banco,
            bool sincronizacaoDiarioClasse = false
        )
        {
            bool retorno = true;

            retorno &= sincronizacaoDiarioClasse ?
                       ltPlanejamento.Aggregate(true, (salvou, entity) => salvou & CLS_TurmaDisciplinaPlanejamentoBO.SaveSincronizacaoDiarioClasse(entity, banco)) :
                       ltPlanejamento.Aggregate(true, (salvou, entity) => salvou & CLS_TurmaDisciplinaPlanejamentoBO.Save(entity, banco));


            #region Verifica se algum plano de aula nao pode ser desplanejado

            //Seleciona as habilidades que seram salvas como nao planejadas
            List <CLS_PlanejamentoOrientacaoCurricular> ltHabilidadeNaoPlanejadas = ltHabilidade.Where(p => !p.poc_planejado).ToList();

            //Carrega as habilidades que estao ligadas a uma aula
            List <sOrientacoesCurricularesPorDisciplinaBimestreComAulasPlanejadas> listOrientacoesComAula
                = new List <sOrientacoesCurricularesPorDisciplinaBimestreComAulasPlanejadas>();

            ltHabilidadeNaoPlanejadas.Select(p => p.tud_id).Distinct().ToList().ForEach(tud_id => {
                listOrientacoesComAula.AddRange(CLS_TurmaAulaOrientacaoCurricularBO.AulasPlanejadasSelecionaPorDisciplina(tud_id));
            });

            //Verifica se tem alguma aula nao planejada para aquele bimestre que esteja ligada a uma aula.
            var lAux = (
                from aula in listOrientacoesComAula
                join habilidade in ltHabilidadeNaoPlanejadas
                on new { aula.tud_id, aula.tpc_id, aula.ocr_id } equals new { habilidade.tud_id, habilidade.tpc_id, habilidade.ocr_id }
                select aula
                ).Distinct().ToList();

            if (lAux.Any())
            {
                throw new ValidationException("Não é possível desplanejar uma habilidade que já tenha sido planejada para uma aula.");
            }

            #endregion

            // Salva os dados na tabela CLS_PlanejamentoOrientacaoCurricular.
            DataTable dtPlanejamentoOrientacaoCurricular = CLS_PlanejamentoOrientacaoCurricular.TipoTabela_PlanejamentoOrientacaoCurricular();
            if (ltHabilidade.Any())
            {
                List <DataRow> ltDrPlanejamentoOrientacaoCurricular = (from CLS_PlanejamentoOrientacaoCurricular planejamentoOrientacaoCurricular in ltHabilidade select PlanejamentoOrientacaoCurricularToDataRow(planejamentoOrientacaoCurricular, dtPlanejamentoOrientacaoCurricular.NewRow())).ToList();

                dtPlanejamentoOrientacaoCurricular = ltDrPlanejamentoOrientacaoCurricular.CopyToDataTable();

                retorno &= SalvarEmLote(dtPlanejamentoOrientacaoCurricular, banco);
            }

            // Salva os dados na tabela CLS_PlanejamentoOrientacaoCurricularDiagnostico.
            retorno &= CLS_PlanejamentoOrientacaoCurricularDiagnosticoBO.SalvarEmLote(ltDiagnostico, banco);

            return(retorno);
        }
Esempio n. 2
0
        /// <summary>
        /// Executa a sincronização dos dados alterados no diário de classe. (Planejamento anual e bimestral)
        /// </summary>
        public static void ExecJobAtualizaPlanejamentoDiarioClasse()
        {
            List <DCL_Protocolo> ltProtocolo = DCL_ProtocoloBO.SelecionaNaoProcessadosPorTipo
                                                   (DCL_ProtocoloBO.eTipo.PlanejamentoAnual,
                                                   ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.QUANTIDADE_MAXIMA_BUSCA_PROTOCOLO_PLANEJAMENTO, new Guid()));

            ltProtocolo.ForEach(protocolo =>
            {
                // Marca o protocolo como "Em processamento".
                protocolo.pro_status = (byte)DCL_ProtocoloBO.eStatus.EmProcessamento;
                protocolo.pro_tentativa++;
            });

            DCL_ProtocoloBO.AtualizaListaProtocolos(ltProtocolo);

            CLS_TurmaDisciplinaPlanejamentoBO.ProcessaProtocoloPlanejamentoAnual(ltProtocolo, TENTATIVAS_PROCESSAMENTO_PROTOCOLO);
        }