public void DuplicarObjeto(int idProcesso) { using (var transaction = repositorio.ObterTransacao()) { try { var processoOriginal = ObterPorId(idProcesso); if (processoOriginal != null) { var processoNovo = new Processo { ID = 0, Nome = processoOriginal.Nome + " - Cópia", Ativo = processoOriginal.Ativo, ListaProcessoResposta = null, ListaEtapas = new List <Etapa>(), Uf = processoOriginal.Uf, Tipo = processoOriginal.Tipo }; repositorio.SalvarSemCommit(processoNovo); var bmEtapa = new BMEtapa(); foreach (var etapaOriginal in processoOriginal.ListaEtapas) { processoNovo.ListaEtapas.Add(bmEtapa.DuplicarObjeto(etapaOriginal, false, processoNovo)); } // Reloopar para obter os dados relacionados. foreach (var etapa in processoNovo.ListaEtapas) { bmEtapa.DuplicarSubDadosObjeto(etapa); } transaction.Commit(); } } catch (Exception) { transaction.Rollback(); throw; } } }
public void Excluir(Campo campo) { // Remover dependências do campo. using (repositorio.ObterTransacao()) { try { var respostas = new BMCampoResposta().ObterRespostasPorCampo(campo.ID); var bmCampoResposta = new BMCampoResposta(); foreach (var resposta in respostas) { // Remover Alternativas Respostas var bmAltRes = new BMAlternativaResposta(); var alternativasRespostas = bmAltRes.ObterPorCampoRespostaId(resposta.ID); foreach (var alternativaResposta in alternativasRespostas) { bmAltRes.Excluir(alternativaResposta); } // Remover Resposta bmCampoResposta.Excluir(resposta); } // Remover Alternativas var bmAlt = new BMAlternativa(); var alternativas = bmAlt.ObterPorCampoId(campo.ID); foreach (var alternativa in alternativas) { bmAlt.Excluir(alternativa); } // Finalmente, excluir o campo. repositorio.Excluir(campo); repositorio.Commit(); } catch { repositorio.RollbackTransaction(); throw; } } }
public void Salvar(UsuarioTrilhaMensagemGuia usuarioTrilhaMensagemGuia) { _repositorio.LimparSessao(); try { using (_repositorio.ObterTransacao()) { _repositorio.SalvarSemCommit(usuarioTrilhaMensagemGuia); _repositorio.Commit(); } } catch (Exception) { _repositorio.RollbackTransaction(); } }