public ModeloCompetencias duplicateModeloFull(ModeloCompetencias oldModelo, String novoOwner, String exclude) { oldModelo.loadFull("TEMPLATE", null); ModeloCompetencias novoModelo = oldModelo.copy(); FamiliaCompetencias novaFamilia; Competencia novaCompetencia; Pratica novaPratica; Pergunta novaPergunta; novoModelo.modeloID = -1; novoModelo.Name += " [Custom]"; novoModelo.PublicName += " [Custom]"; novoModelo.updateDBModelo(novoOwner); try { foreach (FamiliaCompetencias fam in oldModelo.Familias.Values) { novaFamilia = fam.Copy(novoModelo); novaFamilia.FamiliaID = -1; novaFamilia.updateDBFamilia(novoOwner); foreach (Competencia comp in fam.Competencias.Values) { if (exclude.Contains("C" + comp.CompetenciaID.ToString())) continue; novaCompetencia = comp.Copy(novaFamilia); novaCompetencia.CompetenciaID = -1; novaCompetencia.updateDBCompetencia(novoOwner); foreach (Pratica prat in comp.Praticas.Values) { novaPratica = prat.Copy(novaCompetencia); novaPratica.PraticaID = -1; novaPratica.updateDBPratica(novoOwner); foreach (Pergunta perg in prat.Perguntas.Values) { novaPergunta = perg.Copy(novaPratica); novaPergunta.PerguntaID = -1; novaPergunta.Pratica = novaPratica; novaPergunta.updateDBPergunta(novoOwner); } } } } } catch { return null; } return novoModelo; }