protected void grvControleVigencia_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "Deletar") { try { List <TUR_Turma_Docentes_Disciplina> list = RetornaDadosGrid(); foreach (TUR_Turma_Docentes_Disciplina Item in list) { // Remove do cache as turmas do docente. TUR_TurmaBO.RemoveCacheDocenteControleTurma(__SessionWEB.__UsuarioWEB.Usuario.ent_id, Item.entDocente.doc_id); } list.Remove(list.Find(p => p.indice == Convert.ToInt32(e.CommandArgument))); AtualizaGrid(list); CarregarDocenteVigente(list); } catch (Exception ex) { ApplicationWEB._GravaErro(ex); lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar excluir a vigência do docente.", UtilBO.TipoMensagem.Erro); } } if (e.CommandName == "Editar") { try { List <TUR_Turma_Docentes_Disciplina> list = RetornaDadosGrid(); TUR_Turma_Docentes_Disciplina entity = list.Find(p => p.indice == Convert.ToInt32(e.CommandArgument)); uccDocente.Valor = new long[] { -1, -1, -1, -1 }; uccDocente.Valor = new[] { entity.entDocente.doc_id, entity.entDocente.col_id, entity.entDocente.crg_id, entity.entDocente.coc_id }; txtVigenciaIni.Text = entity.entDocente.tdt_vigenciaInicio.ToString("dd/MM/yyyy"); txtVigenciaFim.Text = entity.entDocente.tdt_vigenciaFim != new DateTime() ? entity.entDocente.tdt_vigenciaFim.ToString("dd/MM/yyyy") : string.Empty; lblIndice.Text = entity.indice.ToString(); lbltdt_id.Text = entity.entDocente.tdt_id.ToString(); if (uccDocente.Valor[0] == -1) { uccDocente._Combo.Items.Add(new ListItem(entity.doc_nome, entity.entDocente.doc_id.ToString() + ";" + entity.entDocente.col_id.ToString() + ";" + entity.entDocente.crg_id.ToString() + ";" + entity.entDocente.coc_id.ToString())); uccDocente.Valor = new[] { entity.entDocente.doc_id, entity.entDocente.col_id, entity.entDocente.crg_id, entity.entDocente.coc_id }; uccDocente.PermiteEditar = false; } } catch (Exception ex) { ApplicationWEB._GravaErro(ex); lblMessage.Text = UtilBO.GetErroMessage("Erro ao tentar editar a vigência do docente.", UtilBO.TipoMensagem.Erro); } } }
/// <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 os registros de TurmaDocente, efetua todas as validações necessárias, se precisar excluir um registro /// do TurmaDocente é necessário mandar esse registro na linha com situação de excluido. /// </summary> /// <param name="tur_id">ID da turma</param> /// <param name="listTurmaDocente">Lista de entidade TUR_TurmaDocente</param> /// <param name="ent_id">ID da entidade do usuário logado</param> public static void SalvarTurmaDocente(long tur_id, List <TUR_TurmaDocente> listTurmaDocente, Guid ent_id) { TUR_TurmaDocenteDAO dao = new TUR_TurmaDocenteDAO(); dao._Banco.Open(IsolationLevel.ReadCommitted); try { //Salva a lista de turmaDocente enviada foreach (TUR_TurmaDocente turmaDocente in listTurmaDocente) { // Remove do cache as turmas do docente. TUR_TurmaBO.RemoveCacheDocenteControleTurma(ent_id, turmaDocente.doc_id); if (!turmaDocente.Validate()) { throw new ValidationException(GestaoEscolarUtilBO.ErrosValidacao(turmaDocente)); } //Verifica se as datas das vigências estão válidas if (turmaDocente.tdt_vigenciaFim != new DateTime() && turmaDocente.tdt_vigenciaInicio > turmaDocente.tdt_vigenciaFim) { throw new ArgumentException("Vigência inicial não pode ser maior que a vigência final."); } if (turmaDocente.tdt_situacao != (byte)TUR_TurmaDocenteSituacao.Excluido) { // Colocar situação ativa ou inativa pro docente, de acordo com a vigência. if (turmaDocente.tdt_vigenciaInicio.Date <= DateTime.Now.Date && (turmaDocente.tdt_vigenciaFim == new DateTime() || turmaDocente.tdt_vigenciaFim.Date >= DateTime.Now.Date)) { turmaDocente.tdt_situacao = turmaDocente.tdt_situacao; } else { turmaDocente.tdt_situacao = (byte)TUR_TurmaDocenteSituacao.Inativo; } } turmaDocente.tdt_dataAlteracao = DateTime.Now; if (!dao.Salvar(turmaDocente)) { throw new ArgumentException("Erro ao salvar a atribuição de aula."); } } if (ACA_ParametroAcademicoBO.ParametroValorBooleanoPorEntidade(eChaveAcademico.ALTERAR_AULAS_PARA_TITULAR_ATRIBUICAO_DOCENTES, ent_id)) { //Se houver algum registro na posição 2 ou maior transfere os lançamentos para a posição 1 foreach (TUR_TurmaDocente turmaDocente in listTurmaDocente.Where(turmaDocente => turmaDocente.tdt_posicao > 1 && turmaDocente.tdt_situacao == 1)) { TransferirLancamentos_Posicao(turmaDocente.tud_id, dao._Banco); } } foreach (TUR_TurmaDocente turmaDocente in listTurmaDocente) { LimpaCache(turmaDocente, ent_id); } } catch (SqlException ex) { dao._Banco.Close(ex); throw ex; } catch (ValidationException ex) { dao._Banco.Close(ex); throw ex; } catch (ArgumentException ex) { dao._Banco.Close(ex); throw ex; } catch (Exception ex) { dao._Banco.Close(ex); throw ex; } finally { dao._Banco.Close(); } }
/// <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); } } }