public Etapa DuplicarObjeto(Etapa etapaOriginal, bool concatenarCopiaAoNome, Processo processoNovo = null) { var etapaNova = new Etapa { OriginalID = etapaOriginal.ID, Nome = etapaOriginal.Nome + (concatenarCopiaAoNome ? " - Cópia" : ""), RequerAprovacao = etapaOriginal.RequerAprovacao, Ordem = etapaOriginal.Ordem, PrimeiraEtapa = etapaOriginal.PrimeiraEtapa, VisivelImpressao = etapaOriginal.VisivelImpressao, UsuarioAssinatura = etapaOriginal.UsuarioAssinatura, FileServer = etapaOriginal.FileServer != null ? new FileServer { NomeDoArquivoOriginal = etapaOriginal.FileServer.NomeDoArquivoOriginal, NomeDoArquivoNoServidor = etapaOriginal.FileServer.NomeDoArquivoNoServidor, TipoArquivo = etapaOriginal.FileServer.TipoArquivo, MediaServer = etapaOriginal.FileServer.MediaServer } : null, NomeFinalizacaoEtapa = etapaOriginal.NomeFinalizacaoEtapa, NomeBotaoFinalizacao = etapaOriginal.NomeBotaoFinalizacao, NomeReprovacaoEtapa = etapaOriginal.NomeReprovacaoEtapa, NomeBotaoReprovacao = etapaOriginal.NomeBotaoReprovacao, PodeSerAprovadoChefeGabinete = etapaOriginal.PodeSerAprovadoChefeGabinete, NotificaDiretorAnalise = etapaOriginal.NotificaDiretorAnalise, NotificarNucleo = etapaOriginal.NotificarNucleo, PrazoEncaminhamento = etapaOriginal.PrazoEncaminhamento, Processo = processoNovo ?? etapaOriginal.Processo, EtapaRetornoOriginalID = etapaOriginal.EtapaRetorno != null ? (int?)etapaOriginal.EtapaRetorno.ID : null }; repositorio.SalvarSemCommit(etapaNova); var bmCampo = new BMCampo(); DuplicarPermissoes(etapaOriginal, etapaNova); foreach (var campoOriginal in etapaOriginal.ListaCampos) { var campoNovo = DuplicarCampo(campoOriginal, etapaNova, bmCampo); etapaNova.ListaCampos.Add(campoNovo); } return(etapaNova); }
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); }