예제 #1
0
        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;
        }