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