private Campo DuplicarCampo(Campo campoOriginal, Etapa etapa, BMCampo bmCampo) { var campoNovo = new Campo { OriginalID = campoOriginal.ID, Etapa = etapa, Nome = campoOriginal.Nome, Ordem = campoOriginal.Ordem, Tamanho = campoOriginal.Tamanho, TipoDado = campoOriginal.TipoDado, TipoCampo = campoOriginal.TipoCampo, PermiteNulo = campoOriginal.PermiteNulo, SomenteNumero = campoOriginal.SomenteNumero, SomenteLetra = campoOriginal.SomenteLetra, Largura = campoOriginal.Largura, ExibirImpressao = campoOriginal.ExibirImpressao, ExibirAjudaImpressao = campoOriginal.ExibirAjudaImpressao, CampoDivisor = campoOriginal.CampoDivisor, Ajuda = campoOriginal.Ajuda, Questionario = campoOriginal.Questionario, CamposVinculadosOriginaisIDs = campoOriginal.ListaCamposVinculados.Select(c => new { c.ID }).Select(c => c.ID).ToList() }; bmCampo.SalvarSemCommit(campoNovo); var bmAlternativa = new BMAlternativa(); foreach (var alternativa in campoOriginal.ListaAlternativas) { var alternativaNova = new Alternativa { Campo = campoNovo, Nome = alternativa.Nome, Ordem = alternativa.Ordem, TipoCampo = alternativa.TipoCampo, CampoVinculadoOriginalId = alternativa.CampoVinculado != null ? (int?)alternativa.CampoVinculado.ID : null }; bmAlternativa.SalvarSemCommit(alternativaNova); campoNovo.ListaAlternativas.Add(alternativaNova); } return(campoNovo); }
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 DuplicarSubDadosObjeto(Etapa etapa) { if (etapa.EtapaRetornoOriginalID.HasValue) { etapa.EtapaRetorno = etapa.Processo.ListaEtapas.FirstOrDefault( x => x.OriginalID == etapa.EtapaRetornoOriginalID); } repositorio.SalvarSemCommit(etapa); foreach (var campo in etapa.ListaCampos.Where(x => x.CamposVinculadosOriginaisIDs.Any())) { campo.ListaCamposVinculados = etapa.ListaCampos.Where( x => campo.CamposVinculadosOriginaisIDs.Contains(x.OriginalID)).ToList(); } foreach (var campo in etapa.ListaCampos.Where(x => x.ListaAlternativas.Any(a => a.CampoVinculadoOriginalId.HasValue))) { var bmAlternativa = new BMAlternativa(); foreach ( var alternativa in campo.ListaAlternativas.Where(a => a.CampoVinculadoOriginalId.HasValue)) { alternativa.CampoVinculado = etapa.ListaCampos.FirstOrDefault( x => x.OriginalID == alternativa.CampoVinculadoOriginalId); bmAlternativa.SalvarSemCommit(alternativa); } } }