Пример #1
0
        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);
        }
Пример #2
0
        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;
                }
            }
        }
Пример #3
0
        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);
                }
            }
        }