/// <summary> /// Inserir um usuário num cargo. Caso o cargo informado seja Diretoria ou Gabinere /// e caso exista outro usuário neste cargo, remove o usuário e insere o novo, /// pois não permite mais de um usuário no mesmo cargo, na mesma UF, para diretor /// e chefe de gabinete. /// </summary> /// <param name="usuario">Usuário a assumir o cargo.</param> /// <param name="cargo">Cargo a ser assumido.</param> /// <param name="mover">Caso true, move o usuário mesmo nos cargos repetitíveis</param> public void Salvar(Usuario usuario, Cargo cargo, bool mover = false) { // Executa tudo numa transação para evitar operações feitas no banco pela metade. using (var transacao = _repositorio.session.BeginTransaction()) { try { // Verificar se o indivíduo está em algum cargo que pode repetir várias vezes, e, // caso esteja, remove suas participações nesses outros cargos, pois ele está // sendo movido. var todosCargosSaoRepetiveis = usuario.ListaUsuarioCargo.All(x => x.Cargo.UsuarioPodeRepetirNoCargo()); if (mover || (todosCargosSaoRepetiveis == false && cargo.UsuarioPodeRepetirNoCargo() == false)) { foreach (var usuarioCargo in usuario.ListaUsuarioCargo) { _repositorio.session.Delete(usuarioCargo); } } // Só remove o atual caso seja Diretor ou Chefe de gabinete. if (cargo.TipoCargo == EnumTipoCargo.Diretoria || cargo.TipoCargo == EnumTipoCargo.Gabinete) { var posseAtual = ObterPorCargo(cargo); if (posseAtual != null) { // Se já for o próprio usuário em posse do cargo, não faz nada. if (posseAtual.Usuario.ID == usuario.ID) { return; } // Caso já exista alguém no cargo, remove e insere antes de inserir a nova pessoa. _repositorio.session.Delete(posseAtual); cargo.UsuariosCargos.Remove(posseAtual); } } var novaPosse = new UsuarioCargo { Usuario = usuario, Cargo = cargo }; _repositorio.session.SaveOrUpdate(novaPosse); transacao.Commit(); } catch (Exception ex) { transacao.Rollback(); throw ex; } finally { _repositorio.LimparSessao(); } } }
public void Salvar(Turma turma, LogResponsavel logResponsavel = null, LogConsultorEducacional logConsultorEducacional = null) { ValidarTurmaInformada(turma); repositorio.LimparSessao(); // Incluir log de Responsavel. if (logResponsavel != null) { new BMLogResponsavel().Cadastrar(logResponsavel); } // Incluir log de Consultor Educacional. if (logConsultorEducacional != null) { new BMLogConsultorEducacional().Cadastrar(logConsultorEducacional); } repositorio.Salvar(turma); }
public void Salvar(UsuarioTrilhaMensagemGuia usuarioTrilhaMensagemGuia) { _repositorio.LimparSessao(); try { using (_repositorio.ObterTransacao()) { _repositorio.SalvarSemCommit(usuarioTrilhaMensagemGuia); _repositorio.Commit(); } } catch (Exception) { _repositorio.RollbackTransaction(); } }
public void LimparSessao() { repositorio.LimparSessao(); }
public void Excluir(QuestionarioAssociacao pQuestionarioAssociacao) { repositorio.LimparSessao(); repositorio.Excluir(pQuestionarioAssociacao); }