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