コード例 #1
0
        /// <summary>
        /// Remove do cache a entidade.
        /// </summary>
        /// <param name="entity"></param>
        public static void LimpaCache(TUR_TurmaDocente entity, Guid ent_id, Int64 tur_id = 0)
        {
            if (HttpContext.Current != null)
            {
                // Chave padrão do cache - nome do método + parâmetros.
                HttpContext.Current.Cache.Remove(RetornaChaveCache_SelecionaPosicaoPorDocenteTurma(entity.doc_id, entity.tud_id));
                HttpContext.Current.Cache.Remove(RetornaChaveCache_SelecionaPosicaoPorDocenteTurma_ComInativos(entity.doc_id, entity.tud_id));
                GestaoEscolarUtilBO.LimpaCache(TUR_TurmaDisciplinaBO.Cache_SelecionaDisciplinaPorTurmaDocente, entity.doc_id.ToString());
                GestaoEscolarUtilBO.LimpaCache(TUR_TurmaDisciplinaBO.Cache_SelecionaDisciplinaPorTurmaDocente);
                GestaoEscolarUtilBO.LimpaCache(TUR_TurmaDisciplinaBO.RetornaChaveCache_SelectRelacionadaVigenteBy_DisciplinaCompartilhada(entity.tud_id, entity.doc_id.ToString()));
                CacheManager.Factory.RemoveByPattern(ModelCache.TURMA_DISCIPLINA_SELECIONA_DISCIPLINA_POR_TURMADOCENTE_SEM_VIGENCIA_PATTERN_KEY);
                GestaoEscolarUtilBO.LimpaCache(TUR_TurmaBO.RetornaChaveCache_SelecionaPorDocenteControleTurma(ent_id.ToString(), entity.doc_id.ToString()));
                GestaoEscolarUtilBO.LimpaCache(TUR_TurmaDisciplinaBO.RetornaChaveCache_SelectRelacionadaVigenteBy_DisciplinaCompartilhada(entity.tud_id, entity.doc_id.ToString()));
                TUR_TurmaBO.RemoveCacheDocenteControleTurma(ent_id, entity.doc_id);
                if (tur_id > 0)
                {
                    TUR_TurmaBO.RemoveCacheDocente_TurmaDisciplina(tur_id, entity.doc_id, ent_id);
                }
                else
                {
                    GestaoEscolarUtilBO.LimpaCache(TUR_TurmaDisciplinaBO.Cache_GetSelectBy_TurmaDocente, entity.doc_id.ToString());
                }

                GestaoEscolarUtilBO.LimpaCache(TUR_TurmaDisciplinaBO.RetornaChaveCache_SelectRelacionadaVigenteBy_DisciplinaCompartilhada(entity.tud_id, ""));
                GestaoEscolarUtilBO.LimpaCache(TUR_TurmaDisciplinaBO.RetornaChaveCache_SelectRelacionadaVigenteBy_DisciplinaCompartilhada(entity.tud_id, entity.doc_id.ToString()));
                GestaoEscolarUtilBO.LimpaCache(TUR_TurmaBO.RetornaChaveCache_DocenteControleTurmas(ent_id, entity.doc_id));
                CacheManager.Factory.RemoveByPattern(string.Format("{0}_{1}_{2}",
                                                                   ModelCache.TURMA_DISCIPLINA_SELECIONA_DISCIPLINA_POR_TURMADOCENTE_SEM_VIGENCIA_PATTERN_KEY,
                                                                   tur_id, entity.doc_id));

                if (ent_id != Guid.Empty)
                {
                    GestaoEscolarUtilBO.LimpaCache(ESC_UnidadeEscolaBO.RetornaChaveCache_SelectEscolas_VisaoIndividual(entity.doc_id, ent_id, 1));
                    GestaoEscolarUtilBO.LimpaCache(ESC_UnidadeEscolaBO.RetornaChaveCache_SelectEscolas_VisaoIndividual(entity.doc_id, ent_id, 0));
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Salva as entidades dos docentes para a disciplina.
        /// </summary>
        /// <param name="tur_id">ID da turma</param>
        /// <param name="cad">Estrutura com dados da disciplina e lista de docentes</param>
        /// <param name="banco">Transação com banco</param>
        /// <param name="listaDocentesTodasDisciplinas">Lista de todos os docentes cadastrados para todas as disciplinas da turma - para verificar os que irá excluir</param>
        /// <param name="ent_id">Id da entidade do usuário logado.</param>
        public static void SalvarDocentesDisciplina(long tur_id
                                                    , CadastroTurmaDisciplina cad
                                                    , TalkDBTransaction banco
                                                    , List <TUR_Turma_Docentes_Disciplina> listaDocentesTodasDisciplinas
                                                    , Guid ent_id)
        {
            // Pegar os docentes que existiam antes na disciplina.
            List <TUR_Turma_Docentes_Disciplina> docentesCadastrados =
                (from TUR_Turma_Docentes_Disciplina item in listaDocentesTodasDisciplinas
                 where item.entDocente.tud_id == cad.entTurmaDisciplina.tud_id
                 select item
                ).ToList();

            foreach (TUR_Turma_Docentes_Disciplina docente in cad.listaTurmaDocente)
            {
                DateTime VigenciaFinalDocente = docente.entDocente.tdt_vigenciaFim == new DateTime() ? DateTime.MaxValue : docente.entDocente.tdt_vigenciaFim;

                // Validar se existem vigências com conflito de data.
                var x = from TUR_Turma_Docentes_Disciplina item in cad.listaTurmaDocente
                        where
                        GestaoEscolarUtilBO.ExisteConflitoDatas
                            (item.entDocente.tdt_vigenciaInicio, item.entDocente.tdt_vigenciaFim == new DateTime() ? DateTime.MaxValue : item.entDocente.tdt_vigenciaFim
                            , docente.entDocente.tdt_vigenciaInicio, VigenciaFinalDocente) &&
                        item.indice != docente.indice &&
                        item.entDocente.tdt_posicao == docente.entDocente.tdt_posicao
                        select item;

                if (x.Count() > 0)
                {
                    throw new ValidationException(
                              "Existe um conflito de datas da vigência do docente \"" + docente.doc_nome + "\".");
                }

                // Verifica se o mesmo docente está vigente em mais de uma posição.
                var y = from TUR_Turma_Docentes_Disciplina item in cad.listaTurmaDocente
                        where
                        GestaoEscolarUtilBO.ExisteConflitoDatas
                            (item.entDocente.tdt_vigenciaInicio, item.entDocente.tdt_vigenciaFim == new DateTime() ? DateTime.MaxValue : item.entDocente.tdt_vigenciaFim
                            , docente.entDocente.tdt_vigenciaInicio, VigenciaFinalDocente) &&
                        item.entDocente.tdt_posicao != docente.entDocente.tdt_posicao &&
                        item.entDocente.doc_id == docente.entDocente.doc_id &&
                        item.entDocente.coc_id == docente.entDocente.coc_id &&
                        item.entDocente.col_id == docente.entDocente.col_id &&
                        item.entDocente.crg_id == docente.entDocente.crg_id
                        select item;

                if (y.Count() > 0)
                {
                    throw new ValidationException(
                              "O docente \"" + docente.doc_nome + "\" não pode estar vigente em mais de uma posição.");
                }

                // Remove do cache as turmas do docente.
                TUR_TurmaBO.RemoveCacheDocenteControleTurma(ent_id, docente.entDocente.doc_id);
                TUR_TurmaBO.RemoveCacheDocente_TurmaDisciplina(tur_id, docente.entDocente.doc_id, ent_id);

                TUR_TurmaDocente entTurmaDocente = docente.entDocente;
                entTurmaDocente.tud_id = cad.entTurmaDisciplina.tud_id;

                LimpaCache(entTurmaDocente, ent_id);

                // Salvar entidade.
                Save(entTurmaDocente, banco);
            }

            // Se remover docente, transfere os lançamentos.
            if (!cad.listaTurmaDocente.Exists(p => (p.entDocente.tdt_posicao > 1 && p.entDocente.tdt_situacao == 1)) &&
                ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.ALTERAR_AULAS_PARA_TITULAR_ATRIBUICAO_DOCENTES, ent_id))
            {
                TransferirLancamentos_Posicao(cad.entTurmaDisciplina.tud_id, banco);
            }

            foreach (TUR_Turma_Docentes_Disciplina docente in docentesCadastrados)
            {
                // Verificar se o docente existia antes e não existe mais.
                if (!cad.listaTurmaDocente.Exists(p =>
                                                  (p.entDocente.tud_id == docente.entDocente.tud_id &&
                                                   p.entDocente.tdt_id == docente.entDocente.tdt_id)))
                {
                    // Excluir.
                    Delete(docente.entDocente, banco);
                }
            }
        }