コード例 #1
0
        /// <summary>
        /// Carrega repeaters do boletim do aluno.
        /// </summary>
        /// <param name="idAluno">ID do aluno</param>
        /// <param name="mtu_idBuscar">Id da matrícula do aluno</param>
        private void CarregaBoletim(long idAluno, int mtu_idBuscar)
        {
            BoletimDados = CLS_AlunoAvaliacaoTurmaBO.RetornaBoletimAluno(idAluno, mtu_idBuscar);

            fdsBoletim.Visible = BoletimDados.Count > 0;

            if (fdsBoletim.Visible)
            {
                var periodos = from BoletimAluno item in BoletimDados
                               orderby item.tpc_ordem
                               group item by item.tpc_id
                               into g
                               select
                               new
                {
                    tpc_id = g.Key
                    ,
                    g.First().tpc_nome
                    ,
                    g.First().tpc_ordem
                    ,
                    g.First().ava_idRec
                    ,
                    g.First().ava_nomeRec
                    ,
                    MatriculaPeriodo =
                        g.First().mtu_id > 0
                                           ? "Responsável pelo lançamento no " + g.First().tpc_nome + ": Turma " +
                        g.First().tur_codigo + " (" +
                        (ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.ORDENAR_ESCOLAS_POR_CODIGO, __SessionWEB.__UsuarioWEB.Usuario.ent_id)
                                                  ? g.First().esc_codigo + " - " + g.First().esc_nome
                                                  : g.First().esc_nome)
                        + ")"
                                           : "Aluno não matriculado no " + g.First().tpc_nome
                };

                var disciplinas = from BoletimAluno item in BoletimDados
                                  orderby item.tud_global descending
                                  group item by item.Disciplina
                                  into g
                                  select
                                  new
                {
                    g.First().nomeDisciplina
                    ,
                    totalFaltas = g.First().dda_id > 0 ? "-" : g.Sum(p => p.numeroFaltas).ToString()
                    ,
                    g.First().tud_global
                    ,
                    mostrarDisciplina = g.Count(p => p.MostrarLinhaDisciplina)
                    ,
                    NotaRecEsp = g.First().dda_id > 0 ? "-" : g.First().NotaRecEsp
                    ,
                    notas = (
                        from per in periodos.ToList()
                        orderby per.tpc_ordem
                        select new
                    {
                        per.tpc_id
                        ,
                        nota = (
                            from BoletimAluno bNota in
                            BoletimDados
                            where
                            bNota.Disciplina == g.Key &&
                            bNota.tpc_id == per.tpc_id
                            select new
                        {
                            Nota =
                                (
                                    //
                                    bNota.dda_id > 0 ? "-"
                                                                                                :
                                    //
                                    !bNota.mostraNota
                                                                                                    ? "-"
                                                                                                    : (bNota.NotaNumerica
                                                                                                           ? bNota.avaliacao ??
                                                                                                       "-"
                                                                                                           : (bNota.
                                                                                                              NotaAdicionalNumerica
                                                                                                                  ? bNota.
                                                                                                              avaliacaoAdicional ??
                                                                                                              "-"
                                                                                                                  : bNota.esa_tipo == (byte)EscalaAvaliacaoTipo.Pareceres
                                                                                                                    ? bNota.avaliacao ?? "-"
                                                                                                                    : "-")
                                                                                                       )
                                ).Replace(".", ",")
                            ,
                            Conceito =
                                (
                                    //
                                    bNota.dda_id > 0 ? "-"
                                                                                            :
                                    //
                                    bNota.mostraConceito
                                                                                                 ? (bNota.NotaNumerica
                                                                                                        ? "-"
                                                                                                        : bNota.avaliacao)
                                                                                                 : "-")
                            ,
                            bNota.tpc_id
                            ,
                            bNota.NotaRP
                            ,
                            numeroFaltas =
                                (                                                            //
                                    bNota.dda_id > 0 ? "-"
                                                                                              :
                                    //
                                    (bNota.mostraFrequencia && bNota.NotaID > 0)
                                                                                                 ? bNota.numeroFaltas.
                                    ToString()
                                                                                                 : "-")
                        }).FirstOrDefault()
                    })
                };

                // Se o último período do boletim possui avaliação de recuperação relacionada, mostra a coluna de 5º COC.
                mostra5COC = (BoletimDados.Count() > 0 ? BoletimDados.Max(p => p.ava_idRecEsp) : 0) > 0;

                coluna5COC.Visible = coluna5COCNota.Visible = mostra5COC;
                // coluna5COCConceito.Visible = coluna5COCNota.Visible = coluna5COCFaltas.Visible = mostra5COC;

                rptPeriodosNomes.DataSource        = periodos;
                rptPeriodosColunasFixas.DataSource = periodos;
                rptPeriodosNomes.DataBind();
                rptPeriodosColunasFixas.DataBind();

                rptDisciplinas.DataSource = disciplinas.Where(p => p.mostrarDisciplina > 0);
                rptDisciplinas.DataBind();

                // Buscar última frequência acumulada lançada no conceito global.
                if (BoletimDados.Where(p => p.tud_global && (p.NotaID > 0 || p.frequenciaAcumulada > 0)).Count() > 0)
                {
                    decimal freq = BoletimDados
                                   .Where(p => p.tud_global && (p.NotaID > 0 || p.frequenciaAcumulada > 0))
                                   .OrderBy(p => p.tpc_ordem)
                                   .LastOrDefault()
                                   .frequenciaAcumulada;

                    decimal variacao = BoletimDados.FirstOrDefault().fav_variacao;

                    litFrequenciaAcumulada.Text = freq.ToString(
                        GestaoEscolarUtilBO.CriaFormatacaoDecimal(
                            variacao > 0
                                ? GestaoEscolarUtilBO.RetornaNumeroCasasDecimais(variacao)
                                : 2
                            )
                        );
                }
                else
                {
                    litFreqFrase.Visible = false;
                    litFreqPorc.Visible  = false;
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Carrega repeaters da avaliação da secretaria.
        /// </summary>
        /// <param name="idAluno">ID do aluno</param>
        /// <param name="mtu_idBuscar">Id da matrícula do aluno</param>
        private void CarregaAvaliacoesSecretaria(long idAluno, int mtu_idBuscar)
        {
            BoletimAvaliacoesDados = CLS_AlunoAvaliacaoTurmaBO.RetornaBoletimAlunoAvaliacoesSecretaria(idAluno, mtu_idBuscar);

            divAvaliacoesSecretaria.Visible = BoletimAvaliacoesDados.Count > 0;

            if (BoletimAvaliacoesDados.Count > 0)
            {
                var periodos = from BoletimAlunoAvaliacoesSecretaria item in BoletimAvaliacoesDados
                               orderby item.tpc_ordem
                               group item by item.tpc_id
                               into g
                               select
                               new
                {
                    tpc_id = g.Key
                    ,
                    g.First().tpc_nome
                    ,
                    g.First().tpc_ordem
                };

                var avaliacoes = from BoletimAlunoAvaliacoesSecretaria item in BoletimAvaliacoesDados
                                 group item by item.chaveAvaliacao
                                 into g
                                 select new
                {
                    chaveAvaliacao = g.Key
                    ,
                    g.First().avs_nome
                    ,
                    notas = (
                        from per in periodos.ToList()
                        orderby per.tpc_ordem
                        select new
                    {
                        per.tpc_id
                        ,
                        per.tpc_ordem
                        ,
                        nota = (
                            from BoletimAlunoAvaliacoesSecretaria bNota in BoletimAvaliacoesDados
                            where bNota.chaveAvaliacao == g.Key &&
                            bNota.tpc_id == per.tpc_id
                            select new
                        {
                            Nota =
                                (bNota.Nota ?? "").Replace(".", ",")
                        }

                            ).FirstOrDefault()
                    }
                        )
                };

                rptPeridosSecretaria.DataSource = periodos;
                rptPeridosSecretaria.DataBind();

                rptAvaliacoesSecretaria.DataSource = avaliacoes;
                rptAvaliacoesSecretaria.DataBind();
            }
        }
コード例 #3
0
        /// <summary>
        /// O método salva as observações para conselho pedagógico.
        /// </summary>
        /// <param name="tur_id">ID da turma.</param>
        /// <param name="alu_id">ID do aluno.</param>
        /// <param name="mtu_id">ID da matrícula turma do aluno.</param>
        /// <param name="fav_id">ID do formato de avaliação.</param>
        /// <param name="ava_id">ID da avaliação.</param>
        /// <param name="ltObservacao">Lista de observações.</param>
        /// <param name="banco">Banco</param>
        /// <param name="ent_id">Id da entidade do usuário logado.</param>
        /// <returns></returns>
        public static bool SalvarObservacao
        (
            long tur_id,
            long alu_id,
            int mtu_id,
            long[] tud_ids,
            List <CLS_AlunoAvaliacaoTurmaObservacao> listaObservacao,
            List <CLS_AlunoAvaliacaoTurma> listaAlunoAvaliacaoTurma,
            List <CLS_AlunoAvaliacaoTurmaDisciplina> listaAlunoAvaliacaoTurmaDisciplina,
            List <ACA_AlunoAnotacao> listaAlunoAnotacao,
            bool permiteEditarResultadoFinal,
            Guid usu_idLogado,
            byte resultado,
            DateTime dataUltimaAlteracaoObservacao,
            DateTime dataUltimaAlteracaoNotaFinal,
            ACA_FormatoAvaliacao entFormatoAvaliacao,
            List <CLS_AvaliacaoTurDisc_Cadastro> listaDisciplina,
            List <MTR_MatriculaTurmaDisciplina> listaMatriculaTurmaDisciplina,
            int tamanhoMaximoKB,
            string[] TiposArquivosPermitidos,
            ref List <CLS_AlunoAvaliacaoTurmaDisciplina> listaAtualizacaoEfetivacao,
            Guid ent_id,
            IDictionary <int, int> dicAvaTpc,
            List <CLS_AlunoAvaliacaoTurmaObservacaoBO.DadosAlunoObservacao> listaDadosPeriodo
        )
        {
            TalkDBTransaction banco = new CLS_AlunoAvaliacaoTurmaObservacaoDAO()._Banco.CopyThisInstance();

            banco.Open(IsolationLevel.ReadCommitted);

            List <AlunoFechamentoPendencia> FilaProcessamento = new List <AlunoFechamentoPendencia>();
            int tpc_idUltimoPeriodo = (dicAvaTpc.Count() > 0 ? dicAvaTpc.Max(p => p.Value) : 0);

            try
            {
                foreach (CLS_AlunoAvaliacaoTurmaObservacao observacao in listaObservacao)
                {
                    observacao.usu_idAlteracao = usu_idLogado;
                    Save(observacao, banco);
                }

                foreach (CLS_AlunoAvaliacaoTurma alunoAvaliacaoTurma in listaAlunoAvaliacaoTurma)
                {
                    CLS_AlunoAvaliacaoTurmaBO.Save(alunoAvaliacaoTurma, banco);
                }


                object lockObject = new object();

                DataTable dtAlunoAvaliacaoTurmaDisciplina = CLS_AlunoAvaliacaoTurmaDisciplina.TipoTabela_AlunoAvaliacaoTurmaDisciplina();
                if (listaAlunoAvaliacaoTurmaDisciplina.Any())
                {
                    Parallel.ForEach
                    (
                        listaAlunoAvaliacaoTurmaDisciplina,
                        alunoAvaliacaoTurmaDisciplina =>
                    {
                        lock (lockObject)
                        {
                            DataRow drAlunoAvaliacaoTurmaDisciplina = dtAlunoAvaliacaoTurmaDisciplina.NewRow();
                            dtAlunoAvaliacaoTurmaDisciplina.Rows.Add(
                                CLS_AlunoAvaliacaoTurmaDisciplinaBO.EntityToDataRow(alunoAvaliacaoTurmaDisciplina, drAlunoAvaliacaoTurmaDisciplina));
                        }
                    }
                    );
                }

                if (dtAlunoAvaliacaoTurmaDisciplina.Rows.Count > 0)
                {
                    CLS_AlunoAvaliacaoTurmaDisciplinaBO.SalvarEmLotePosConselho(dtAlunoAvaliacaoTurmaDisciplina, banco);

                    if (entFormatoAvaliacao.fav_fechamentoAutomatico && listaAlunoAvaliacaoTurmaDisciplina.Any())
                    {
                        FilaProcessamento.AddRange(listaAlunoAvaliacaoTurmaDisciplina
                                                   .Select(p => new AlunoFechamentoPendencia {
                            tud_id         = p.tud_id,
                            tpc_id         = (p.tpc_id > 0 ? p.tpc_id : tpc_idUltimoPeriodo),
                            afp_frequencia = true,
                            afp_nota       = true,
                            afp_processado = (Byte)(p.atd_id <= 0 ? 0 : 2)
                        }).ToList());
                    }
                }


                foreach (ACA_AlunoAnotacao alunoAnotacao in listaAlunoAnotacao)
                {
                    ACA_AlunoAnotacaoBO.Save(alunoAnotacao, banco);
                }

                CLS_AlunoAvaliacaoTurmaDisciplinaBO.SaveAvaliacaoFinal(
                    tur_id
                    , entFormatoAvaliacao
                    , listaDisciplina
                    , tamanhoMaximoKB
                    , TiposArquivosPermitidos
                    , dataUltimaAlteracaoNotaFinal
                    , listaMatriculaTurmaDisciplina
                    , ref listaAtualizacaoEfetivacao
                    , banco);

                if (entFormatoAvaliacao.fav_fechamentoAutomatico && listaMatriculaTurmaDisciplina.Any() && (tpc_idUltimoPeriodo > 0))
                {
                    FilaProcessamento.AddRange(listaMatriculaTurmaDisciplina
                                               .Select(p => new AlunoFechamentoPendencia {
                        tud_id         = p.tud_id,
                        tpc_id         = tpc_idUltimoPeriodo,
                        afp_frequencia = true,
                        afp_nota       = true,
                        afp_processado = (Byte)(p.mtd_id <= 0 ? 0 : 2)
                    }).ToList());
                }

                if (permiteEditarResultadoFinal)
                {
                    // Se for passado o resultado, salva na MTR_MatriculaTurma.
                    MTR_MatriculaTurma entMatr = new MTR_MatriculaTurma
                    {
                        alu_id = alu_id
                        ,
                        mtu_id = mtu_id
                    };
                    MTR_MatriculaTurmaBO.GetEntity(entMatr, banco);

                    // So registra a alteracao do parecer conclusivo (resultado)
                    // se for um registro novo e tem valor selecionado, ou se houve alteracao do valor.
                    if ((entMatr.IsNew && entMatr.mtu_resultado > 0) || entMatr.mtu_resultado != resultado)
                    {
                        // Se o registro foi alterado depois da data da alteração mais recente no momento em que os dados foram carregados,
                        // interrompe o salvamento e alerta o usuário de que é necessário atualizar os dados
                        if (entMatr != null && !entMatr.IsNew && Convert.ToDateTime(entMatr.mtu_dataAlteracao.ToString()) > dataUltimaAlteracaoObservacao)
                        {
                            throw new ValidationException("Existe registro alterado mais recentemente, é necessário atualizar os dados.");
                        }
                        else
                        {
                            entMatr.usu_idResultado = usu_idLogado;
                            entMatr.mtu_resultado   = resultado;
                            MTR_MatriculaTurmaBO.Save(entMatr, banco);

                            if (ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.GERAR_HISTORICO_SALVAR_PARECER_CONCLUSIVO, ent_id))
                            {
                                ACA_AlunoHistoricoBO.GeracaoHistoricoPedagogicoPorAluno(entMatr.alu_id, entMatr.mtu_id, banco);
                            }

                            if (entFormatoAvaliacao.fav_fechamentoAutomatico)
                            {
                                FilaProcessamento.Add(new AlunoFechamentoPendencia {
                                    tud_id         = tud_ids.FirstOrDefault(),
                                    tpc_id         = tpc_idUltimoPeriodo,
                                    afp_frequencia = true,
                                    afp_nota       = true,
                                    afp_processado = (Byte)(entMatr.IsNew == true ? 0 : 2)
                                });
                            }
                        }
                    }
                }

                // Limpa cache do fechamento, para atualizar o check, as notas pos-conselho, o parecer e a sintese final.
                string chave = string.Empty;
                int    tpcId = -1;
                listaDadosPeriodo.ForEach(q =>
                {
                    // Fechamento de bimestre
                    chave = MTR_MatriculaTurmaBO.RetornaChaveCache_GetSelectBy_Turma_Periodo(tur_id, entFormatoAvaliacao.fav_id, q.ava_id);
                    if (HttpContext.Current != null)
                    {
                        HttpContext.Current.Cache.Remove(chave);
                    }
                    chave = MTR_MatriculaTurmaDisciplinaBO.RetornaChaveCache_GetSelect_ComponentesRegencia_By_TurmaFormato(tur_id, entFormatoAvaliacao.fav_id, q.ava_id);
                    CacheManager.Factory.Remove(chave);

                    // Fechamento final
                    chave = MTR_MatriculaTurmaBO.RetornaChaveCache_GetSelectBy_Turma_Final(tur_id, entFormatoAvaliacao.fav_id, q.ava_id);
                    if (HttpContext.Current != null)
                    {
                        HttpContext.Current.Cache.Remove(chave);
                    }
                    chave = MTR_MatriculaTurmaDisciplinaBO.RetornaChaveCache_GetSelect_ComponentesRegencia_By_TurmaFormato_Final(tur_id, entFormatoAvaliacao.fav_id, q.ava_id);
                    CacheManager.Factory.Remove(chave);

                    // Fechamento automatico de bimestre
                    if (dicAvaTpc.TryGetValue(q.ava_id, out tpcId))
                    {
                        chave = String.Format(ModelCache.FECHAMENTO_AUTO_BIMESTRE_COMPONENTES_REGENCIA_MODEL_KEY, tur_id, tpcId);
                        CacheManager.Factory.Remove(chave);
                    }

                    // Fechamento automatico final
                    chave = String.Format(ModelCache.FECHAMENTO_AUTO_FINAL_COMPONENTES_REGENCIA_MODEL_KEY, tur_id);
                    CacheManager.Factory.Remove(chave);
                });
                List <TUR_TurmaDisciplina> listaDisciplinas = TUR_TurmaDisciplinaBO.GetSelectBy_Turma(tur_id, null, GestaoEscolarUtilBO.MinutosCacheLongo);
                listaDisciplinas.ForEach(p =>
                {
                    // Fechamento de bimestre
                    chave = String.Format("{0}_{1}_{2}", ModelCache.FECHAMENTO_BIMESTRE_PATTERN_KEY, p.tud_id, entFormatoAvaliacao.fav_id);
                    CacheManager.Factory.RemoveByPattern(chave);
                    chave = String.Format("{0}_{1}_{2}", ModelCache.FECHAMENTO_BIMESTRE_FILTRO_DEFICIENCIA_PATTERN_KEY, p.tud_id, entFormatoAvaliacao.fav_id);
                    CacheManager.Factory.RemoveByPattern(chave);

                    // Fechamento final
                    chave = String.Format("{0}_{1}_{2}", ModelCache.FECHAMENTO_FINAL_PATTERN_KEY, p.tud_id, entFormatoAvaliacao.fav_id);
                    CacheManager.Factory.RemoveByPattern(chave);
                    chave = String.Format("{0}_{1}_{2}", ModelCache.FECHAMENTO_FINAL_FILTRO_DEFICIENCIA_PATTERN_KEY, p.tud_id, entFormatoAvaliacao.fav_id);
                    CacheManager.Factory.RemoveByPattern(chave);

                    // Fechamento automatico final
                    chave = String.Format(ModelCache.FECHAMENTO_AUTO_FINAL_MODEL_KEY, p.tud_id);
                    CacheManager.Factory.Remove(chave);
                    chave = String.Format(ModelCache.FECHAMENTO_AUTO_FINAL_FILTRO_DEFICIENCIA_MODEL_KEY, p.tud_id);
                    CacheManager.Factory.Remove(chave);

                    listaDadosPeriodo.ForEach(q =>
                    {
                        // Fechamento automatico de bimestre
                        if (dicAvaTpc.TryGetValue(q.ava_id, out tpcId))
                        {
                            chave = String.Format(ModelCache.FECHAMENTO_AUTO_BIMESTRE_MODEL_KEY, p.tud_id, tpcId);
                            CacheManager.Factory.Remove(chave);
                            chave = String.Format(ModelCache.FECHAMENTO_AUTO_BIMESTRE_FILTRO_DEFICIENCIA_MODEL_KEY, p.tud_id, tpcId);
                            CacheManager.Factory.Remove(chave);
                        }
                    });
                });
                //

                //Adiciona tuds para processamento de pendência de notas (quando salva o parecer final
                foreach (long tud in tud_ids.Where(t => !FilaProcessamento.Any(f => f.tud_id == t)))
                {
                    FilaProcessamento.Add(new AlunoFechamentoPendencia
                    {
                        tud_id                = tud,
                        tpc_id                = tpc_idUltimoPeriodo,
                        afp_frequencia        = false,
                        afp_frequenciaExterna = false,
                        afp_nota              = true,
                        afp_processado        = (byte)2
                    });
                }

                if (entFormatoAvaliacao.fav_fechamentoAutomatico && FilaProcessamento.Any(a => a.tpc_id > 0))
                {
                    CLS_AlunoFechamentoPendenciaBO.SalvarFilaPendencias(
                        FilaProcessamento
                        .GroupBy(g => new { g.tud_id, g.tpc_id })
                        .Select(p => new AlunoFechamentoPendencia {
                        tud_id         = p.FirstOrDefault().tud_id,
                        tpc_id         = p.FirstOrDefault().tpc_id,
                        afp_frequencia = p.FirstOrDefault().afp_frequencia,
                        afp_nota       = p.FirstOrDefault().afp_nota,
                        afp_processado = FilaProcessamento
                                         .Where(w => w.tud_id == p.FirstOrDefault().tud_id&& w.tpc_id == p.FirstOrDefault().tpc_id)
                                         .Min(m => m.afp_processado)
                    })
                        .Where(w => w.tpc_id > 0 && w.tpc_id != ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_PERIODO_CALENDARIO_RECESSO, ent_id))
                        .ToList()
                        , banco);
                }

                return(true);
            }
            catch (ValidationException ex)
            {
                banco.Close(ex);
                throw;
            }
            catch (Exception ex)
            {
                banco.Close(ex);
                throw;
            }
            finally
            {
                if (banco.ConnectionIsOpen)
                {
                    banco.Close();
                }
            }
        }