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