コード例 #1
0
        /// <summary>
        /// Executa a sincronização dos dados alterados no diário de classe. (Compensacao de ausência)
        /// </summary>
        public static void ExecJobAtualizaCompensacaoDiarioClasse()
        {
            List <DCL_Protocolo> ltProtocolo = DCL_ProtocoloBO.SelecionaNaoProcessadosPorTipo
                                                   (DCL_ProtocoloBO.eTipo.CompensacaoDeAula,
                                                   ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.QUANTIDADE_MAXIMA_BUSCA_PROTOCOLO_COMPENSACAO, 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_CompensacaoAusenciaBO.ProcessarProtocoloCompensacao(ltProtocolo, TENTATIVAS_PROCESSAMENTO_PROTOCOLO);
        }
コード例 #2
0
        /// <summary>
        /// Executa a sincronização dos dados alterados no diário de classe. (Justificativa de faltas)
        /// </summary>
        public static void ExecJobAtualizaJustificativaDiarioClasse()
        {
            List <DCL_Protocolo> ltProtocolo = DCL_ProtocoloBO.SelecionaNaoProcessadosPorTipo
                                                   (DCL_ProtocoloBO.eTipo.JustificativaFaltaAluno,
                                                   ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.QUANTIDADE_MAXIMA_BUSCA_PROTOCOLO_JUSTIFICATIVA, 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);

            ACA_AlunoJustificativaFaltaBO.ProcessaProtocoloJustificativaFalta(ltProtocolo, TENTATIVAS_PROCESSAMENTO_PROTOCOLO);
        }
コード例 #3
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);
        }
コード例 #4
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);
        }
コード例 #5
0
ファイル: DCL_LogBO.cs プロジェクト: Mualumene/SGP
        /// <summary>
        /// Processa o protocolo informado.
        /// </summary>
        /// <param name="protocolo"></param>
        /// <returns></returns>
        public static bool ProcessaProtocoloLog(List <DCL_Protocolo> ltProtocolo, int tentativasProtocolo)
        {
            // DataTable de protocolos
            DataTable dtProtocolo = DCL_Protocolo.TipoTabela_Protocolo();

            DCL_LogDAO dao = new DCL_LogDAO();

            DataTable dtLogs = new DataTable();

            dtLogs.Columns.Add("log_id", typeof(Guid));
            dtLogs.Columns.Add("log_dataHora", typeof(DateTime));
            dtLogs.Columns.Add("usu_id", typeof(Guid));
            dtLogs.Columns.Add("usu_login", typeof(String));
            dtLogs.Columns.Add("log_acao", typeof(String));
            dtLogs.Columns.Add("log_descricao", typeof(String));
            dtLogs.Columns.Add("log_macAddress", typeof(String));
            dtLogs.Columns.Add("log_ipAddress", typeof(String));
            dtLogs.Columns.Add("log_appVersion", typeof(String));
            dtLogs.Columns.Add("log_serialNumber", typeof(String));
            dtLogs.Columns.Add("esc_id", typeof(Int32));
            dtLogs.Columns.Add("tur_id", typeof(Int64));
            dtLogs.Columns.Add("tud_id", typeof(Int64));
            dtLogs.Columns.Add("sis_id", typeof(Int32));

            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))
            {
                TalkDBTransaction banco = new DCL_LogDAO()._Banco.CopyThisInstance();

                try
                {
                    banco.Open();

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

                    #region Variável

                    List <DCL_Log> listaEntLogs = new List <DCL_Log>();

                    #endregion

                    #region Informações do log de sistema

                    JObject logs = JObject.Parse(protocolo.pro_pacote);

                    int sis_id = (int)logs.SelectToken("sis_id");
                    int esc_id = (int)logs.SelectToken("esc_id");

                    long turmaId           = -1;
                    long turmaDisciplinaId = -1;

                    JArray logLista = ((JArray)logs.SelectToken("Logs") ?? new JArray());

                    #endregion

                    #region Informações de cada log do protocolo

                    foreach (JObject jsonLog in logLista)
                    {
                        string log_descricao = jsonLog.SelectToken("log_descricao").ToString();
                        string usu_login     = jsonLog.SelectToken("usu_login").ToString();
                        string log_acao;

                        try
                        {
                            log_acao = Enum.GetName(typeof(LOG_SistemaTipo), jsonLog.SelectToken("log_acao"));
                        }
                        catch
                        {
                            log_acao = jsonLog.SelectToken("log_acao").ToString();
                        }

                        Guid usu_id = new Guid(string.IsNullOrEmpty(jsonLog.SelectToken("usu_id").ToString()) ? Guid.Empty.ToString() : jsonLog.SelectToken("usu_id").ToString());

                        DateTime log_dataHora = (DateTime)(jsonLog.SelectToken("log_dataHora") ?? DateTime.Now);

                        turmaId           = Convert.ToInt64(jsonLog.SelectToken("tur_id"));
                        turmaDisciplinaId = Convert.ToInt64(jsonLog.SelectToken("tud_id"));

                        string ipAddress    = Convert.ToString(jsonLog.SelectToken("log_ipAddress"));
                        string macAddress   = Convert.ToString(jsonLog.SelectToken("log_macAddress"));
                        string appVersion   = Convert.ToString(jsonLog.SelectToken("log_appVersion"));
                        string serialNumber = Convert.ToString(jsonLog.SelectToken("log_serialNumber"));

                        DCL_Log log = new DCL_Log
                        {
                            log_id           = Guid.NewGuid(),
                            sis_id           = sis_id,
                            log_descricao    = log_descricao,
                            usu_login        = usu_login,
                            usu_id           = usu_id,
                            log_acao         = log_acao,
                            log_dataHora     = log_dataHora,
                            esc_id           = esc_id,
                            log_ipAddress    = ipAddress,
                            tud_id           = turmaDisciplinaId,
                            tur_id           = turmaId,
                            log_macAddress   = macAddress,
                            log_appVersion   = appVersion,
                            log_serialNumber = serialNumber
                        };

                        // validações do log.
                        if (!log.Validate())
                        {
                            throw new ValidationException(GestaoEscolarUtilBO.ErrosValidacao(log));
                        }

                        DataRow dr = dtLogs.NewRow();
                        dr["log_id"]       = Guid.NewGuid();
                        dr["log_dataHora"] = log_dataHora;

                        if (usu_id != Guid.Empty)
                        {
                            dr["usu_id"] = usu_id;
                        }
                        else
                        {
                            dr["usu_id"] = DBNull.Value;
                        }

                        if (!string.IsNullOrEmpty(usu_login))
                        {
                            dr["usu_login"] = usu_login;
                        }
                        else
                        {
                            dr["usu_login"] = DBNull.Value;
                        }

                        if (!string.IsNullOrEmpty(log_acao))
                        {
                            dr["log_acao"] = log_acao;
                        }
                        else
                        {
                            dr["log_acao"] = DBNull.Value;
                        }

                        if (!string.IsNullOrEmpty(log_descricao))
                        {
                            dr["log_descricao"] = log_descricao;
                        }
                        else
                        {
                            dr["log_descricao"] = DBNull.Value;
                        }

                        if (!string.IsNullOrEmpty(macAddress))
                        {
                            dr["log_macAddress"] = macAddress;
                        }
                        else
                        {
                            dr["log_macAddress"] = DBNull.Value;
                        }

                        if (!string.IsNullOrEmpty(ipAddress))
                        {
                            dr["log_ipAddress"] = ipAddress;
                        }
                        else
                        {
                            dr["log_ipAddress"] = DBNull.Value;
                        }

                        if (!string.IsNullOrEmpty(appVersion))
                        {
                            dr["log_appVersion"] = appVersion;
                        }
                        else
                        {
                            dr["log_appVersion"] = DBNull.Value;
                        }

                        if (!string.IsNullOrEmpty(serialNumber))
                        {
                            dr["log_serialNumber"] = serialNumber;
                        }
                        else
                        {
                            dr["log_serialNumber"] = DBNull.Value;
                        }

                        if (esc_id > 0)
                        {
                            dr["esc_id"] = esc_id;
                        }
                        else
                        {
                            dr["esc_id"] = DBNull.Value;
                        }

                        if (turmaId > 0)
                        {
                            dr["tur_id"] = turmaId;
                        }
                        else
                        {
                            dr["tur_id"] = DBNull.Value;
                        }

                        if (turmaDisciplinaId > 0)
                        {
                            dr["tud_id"] = turmaDisciplinaId;
                        }
                        else
                        {
                            dr["tud_id"] = DBNull.Value;
                        }

                        if (sis_id > 0)
                        {
                            dr["sis_id"] = sis_id;
                        }
                        else
                        {
                            dr["sis_id"] = DBNull.Value;
                        }

                        dtLogs.Rows.Add(dr);
                    }

                    protocolo.tur_id = turmaId;
                    protocolo.tud_id = turmaDisciplinaId;
                    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;
                    dtProtocolo.Rows.Add(DCL_ProtocoloBO.ProtocoloToDataRow(protocolo, dtProtocolo.NewRow()));

                    #endregion
                }
                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()));
                    banco.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()));
                    banco.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()));
                    banco.Close(ex);
                }
                finally
                {
                    if (banco.ConnectionIsOpen)
                    {
                        banco.Close();
                    }
                }
            }

            try
            {
                if (dao.SalvarLogs(dtLogs))
                {
                    DCL_ProtocoloBO.AtualizaProtocolos(dtProtocolo);
                    return(true);
                }
                else
                {
                    foreach (DataRow dr in dtProtocolo.Rows)
                    {
                        if (Convert.ToInt32(dr["pro_tentativa"]) > tentativasProtocolo)
                        {
                            throw new ValidationException(String.Format("Número máximo ({0}) de tentativas de processamento deste protocolo foram excedidas. Erro: {1}"
                                                                        , tentativasProtocolo, dr["pro_statusObservacao"].ToString()));
                        }

                        dr["pro_statusObservacao"] = String.Format("Protocolo não processado ({0}).",
                                                                   DateTime.Now.ToString("dd/MM/yyyy hh:mm"));
                        dr["pro_status"] = (byte)DCL_ProtocoloBO.eStatus.NaoProcessado;
                    }

                    DCL_ProtocoloBO.AtualizaProtocolos(dtProtocolo);
                    return(false);
                }
            }
            catch (Exception ex)
            {
                foreach (DataRow dr in dtProtocolo.Rows)
                {
                    dr["pro_status"]           = (byte)DCL_ProtocoloBO.eStatus.ProcessadoComErro;
                    dr["pro_statusObservacao"] = ex.Message;
                    dr["tud_id"] = DBNull.Value;
                    dr["tur_id"] = DBNull.Value;
                }

                DCL_ProtocoloBO.AtualizaProtocolos(dtProtocolo);
                return(false);
            }
        }
コード例 #6
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 ProcessaProtocoloJustificativaFalta(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)
                    {
                        JObject falta      = JObject.Parse(protocolo.pro_pacote);
                        JArray  arrayFalta = ((JArray)falta.SelectToken("Justificativas") ?? new JArray());

                        foreach (JToken token in arrayFalta.Children())
                        {
                            ACA_AlunoJustificativaFalta entidade = new ACA_AlunoJustificativaFalta
                            {
                                alu_id = (Int64)(token.SelectToken("alu_id") ?? 0),
                                afj_id = (int)(token.SelectToken("afj_idGestao") ?? 0)
                            };

                            GetEntity(entidade, bancoSincronizacao);

                            entidade.tjf_id            = (int)(token.SelectToken("tjf_id") ?? 0);
                            entidade.afj_dataInicio    = (DateTime)(token.SelectToken("afj_dataInicio") ?? new DateTime());
                            entidade.afj_dataFim       = (DateTime)(token.SelectToken("afj_dataFim") ?? new DateTime());
                            entidade.afj_situacao      = (Byte)(token.SelectToken("afj_situacao") ?? Convert.ToByte(1));
                            entidade.afj_dataAlteracao = (DateTime)(token.SelectToken("afj_dataAlteracao") ?? new DateTime());
                            entidade.pro_id            = protocolo.pro_id;

                            if (!entidade.Validate())
                            {
                                throw new ValidationException(GestaoEscolarUtilBO.ErrosValidacao(entidade));
                            }

                            processou = Save(entidade, bancoSincronizacao);
                        }
                    }

                    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);
        }
コード例 #7
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 ProcessarProtocoloCompensacao(List <DCL_Protocolo> ltProtocolo, int tentativasProtocolo)
        {
            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)
                    {
                        JObject json = JObject.Parse(protocolo.pro_pacote);

                        JArray compensacoes = ((JArray)json.SelectToken("CompensacaoFalta") ?? new JArray());

                        foreach (JObject compensacao in compensacoes)
                        {
                            long tud_id = Convert.ToInt64(compensacao.SelectToken("tud_id"));

                            ACA_FormatoAvaliacao formatoAvaliacao = ACA_FormatoAvaliacaoBO.CarregarPorTud(tud_id);
                            ACA_CalendarioAnual  cal = ACA_CalendarioAnualBO.SelecionaPorTurmaDisciplina(tud_id, bancoSincronizacao);

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

                            int cpa_id = Convert.ToInt32(compensacao.SelectToken("cpa_id"));
                            int quantidadeAulasCompensadas = Convert.ToInt32(compensacao.SelectToken("cpa_quantidadeAulasCompensadas"));

                            DateTime cpa_dataAlteracao = Convert.ToDateTime(compensacao.SelectToken("cpa_dataAlteracao"));

                            CLS_CompensacaoAusencia compensacaoAusencia;

                            long pro_protocoloCriacao = (long)(compensacao.GetValue("pro_protocolo", StringComparison.OrdinalIgnoreCase) ?? "0");
                            if (cpa_id > 0 || pro_protocoloCriacao <= 0)
                            {
                                compensacaoAusencia = new CLS_CompensacaoAusencia
                                {
                                    tud_id = tud_id,
                                    cpa_id = cpa_id
                                };
                                GetEntity(compensacaoAusencia, bancoSincronizacao);
                            }
                            else
                            {
                                List <DCL_Protocolo> protocoloCriacaoCompensacao = DCL_ProtocoloBO.SelectBy_Protocolos(pro_protocoloCriacao.ToString());
                                Guid pro_idCriacao = protocoloCriacaoCompensacao.Count() > 0 ? protocoloCriacaoCompensacao[0].pro_id : Guid.Empty;
                                compensacaoAusencia = SelectByDisciplinaProtocolo(tud_id, pro_idCriacao);
                                if (!compensacaoAusencia.IsNew)
                                {
                                    compensacaoAusencia.pro_id = protocolo.pro_id;
                                }
                            }

                            if (compensacaoAusencia.IsNew)
                            {
                                compensacaoAusencia.cpa_id          = -1;
                                compensacaoAusencia.cpa_dataCriacao = DateTime.Now;
                                compensacaoAusencia.pro_id          = protocolo.pro_id;
                            }
                            else if (!compensacaoAusencia.IsNew && (cpa_dataAlteracao < compensacaoAusencia.cpa_dataAlteracao))
                            {
                                throw new ValidationException("Compensação existe e foi alterada mais recentemente.");
                            }

                            compensacaoAusencia.tpc_id = Convert.ToInt32(compensacao.SelectToken("tpc_id"));
                            compensacaoAusencia.cpa_quantidadeAulasCompensadas = quantidadeAulasCompensadas;
                            compensacaoAusencia.cpa_atividadesDesenvolvidas    = Convert.ToString(compensacao.SelectToken("cpa_atividadesDesenvolvidas"));
                            compensacaoAusencia.cpa_situacao      = Convert.ToInt16(compensacao.SelectToken("cpa_situacao"));
                            compensacaoAusencia.cpa_dataAlteracao = DateTime.Now;

                            if (compensacaoAusencia.cpa_situacao != 3)
                            {
                                JArray arrayAlunos = ((JArray)compensacao.SelectToken("AlunosCompensados") ?? new JArray());
                                List <CLS_CompensacaoAusenciaAluno> listaAlunos = new List <CLS_CompensacaoAusenciaAluno>();
                                foreach (JObject jsonAluno in arrayAlunos)
                                {
                                    int alu_id = Convert.ToInt32(jsonAluno.SelectToken("alu_id"));
                                    MTR_MatriculaTurmaDisciplina matricula = MTR_MatriculaTurmaDisciplinaBO.BuscarPorAlunoTurmaDisciplina(alu_id, tud_id, bancoSincronizacao);

                                    CLS_CompensacaoAusenciaAluno compensacaoAluno = new CLS_CompensacaoAusenciaAluno
                                    {
                                        tud_id = tud_id,
                                        cpa_id = compensacaoAusencia.cpa_id,
                                        alu_id = alu_id,
                                        mtu_id = matricula.mtu_id,
                                        mtd_id = matricula.mtd_id
                                    };

                                    CLS_CompensacaoAusenciaAlunoBO.GetEntity(compensacaoAluno);

                                    if (compensacaoAluno.IsNew)
                                    {
                                        compensacaoAluno.caa_dataCriacao = DateTime.Now;
                                    }

                                    compensacaoAluno.caa_situacao      = 1;
                                    compensacaoAluno.caa_dataAlteracao = DateTime.Now;


                                    listaAlunos.Add(compensacaoAluno);
                                }

                                processou = Save(compensacaoAusencia, listaAlunos, formatoAvaliacao.fav_fechamentoAutomatico, cal.cal_id, bancoSincronizacao);
                            }
                            else
                            {
                                // persistindo os dados.
                                processou = true;
                                // Caso o fechamento seja automático, grava na fila de processamento.
                                if (formatoAvaliacao.fav_fechamentoAutomatico && compensacaoAusencia.tpc_id != ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_PERIODO_CALENDARIO_RECESSO, new Guid()))
                                {
                                    processou &= CLS_AlunoFechamentoPendenciaBO.SalvarFilaFrequencia(compensacaoAusencia.tud_id, compensacaoAusencia.tpc_id, bancoSincronizacao);
                                }
                                processou &= Delete(compensacaoAusencia, bancoSincronizacao);
                            }
                        }
                    }


                    // 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;
                    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);
        }
コード例 #8
0
ファイル: DCL_ProtocoloBO.cs プロジェクト: Mualumene/SGP
        /// <summary>
        /// Colocar um protocolo executado com erro para reprocessar
        /// </summary>
        /// <param name="pro_id">Id do Protocolo</param>
        /// <param name="novoPacote">Novo pacote a ser processado</param>
        /// <param name="versao">Versão do aplicativo que enviou o protocolo</param>
        /// <returns></returns>
        public static bool Reprocessar(Guid pro_id, string novoPacote, string versao)
        {
            DCL_ProtocoloReprocessoDAO dao   = new DCL_ProtocoloReprocessoDAO();
            TalkDBTransaction          banco = dao._Banco;

            try
            {
                DCL_Protocolo protocolo = new DCL_Protocolo()
                {
                    pro_id = pro_id
                };
                DCL_ProtocoloReprocesso entity = null;

                DCL_ProtocoloBO.GetEntity(protocolo);

                if (protocolo.IsNew)
                {
                    throw new ProtocoloNãoEncontrado();
                }

                //Verifica se está com status de "Processado com Erro"
                if (protocolo.pro_status == (byte)DCL_ProtocoloBO.eStatus.ProcessadoComErro)
                {
                    entity = new DCL_ProtocoloReprocesso()
                    {
                        pro_id              = protocolo.pro_id,
                        prp_pacote          = protocolo.pro_pacote,
                        prp_status          = protocolo.pro_status,
                        prp_statusObervacao = protocolo.pro_statusObservacao,
                        prp_situacao        = protocolo.pro_situacao,
                        prp_dataCriacao     = DateTime.Now,
                        prp_dataAlteracao   = DateTime.Now
                    };

                    if (!string.IsNullOrEmpty(versao))
                    {
                        protocolo.pro_versaoAplicativo = versao;
                    }

                    protocolo.pro_status           = 1;
                    protocolo.pro_statusObservacao = string.Empty;

                    if (!string.IsNullOrEmpty(novoPacote))
                    {
                        protocolo.pro_pacote = novoPacote;
                    }

                    banco.Open();

                    DCL_ProtocoloReprocessoBO.Save(entity, banco);
                    DCL_ProtocoloBO.Save(protocolo, banco);

                    return(true);
                }
                else
                {
                    throw new ReprocessarProtocoloSemErro();
                }
            }
            catch (Exception err)
            {
                banco.Close(err);
                throw;
            }
            finally
            {
                banco.Close();
            }
        }