public ActionResult VisualizarProjetoGeoCredenciado(int projetoDigitalId, int dependenciaTipo, int protocoloId, int requerimentoId)
        {
            ProjetoGeograficoVM vm = new ProjetoGeograficoVM()
            {
                ProtocoloId = protocoloId, RequerimentoId = requerimentoId, IsCredenciado = true
            };

            Cred.ModuloProjetoGeografico.Bussiness.ProjetoGeograficoBus projetoGeoCredBus     = new Cred.ModuloProjetoGeografico.Bussiness.ProjetoGeograficoBus();
            Cred.ModuloDominialidade.Business.DominialidadeBus          dominialidadeCredBus  = new Cred.ModuloDominialidade.Business.DominialidadeBus();
            Cred.ModuloCaracterizacao.Bussiness.CaracterizacaoBus       caracterizacaoCredBus = new Cred.ModuloCaracterizacao.Bussiness.CaracterizacaoBus();
            ProjetoDigitalCredenciadoBus busProjetoDigitalCredenciado = new ProjetoDigitalCredenciadoBus();


            List <Dependencia> lstDependencias = busProjetoDigitalCredenciado.ObterDependencias(projetoDigitalId);
            Dependencia        dependencia     = lstDependencias.SingleOrDefault(x => x.DependenciaCaracterizacao == dependenciaTipo && x.DependenciaTipo == (int)eCaracterizacaoDependenciaTipo.ProjetoGeografico) ?? new Dependencia();

            vm.Projeto                       = projetoGeoCredBus.ObterHistorico(dependencia.DependenciaId, dependencia.DependenciaTid);
            vm.IsVisualizar                  = true;
            vm.IsVisualizarCredenciado       = true;
            vm.Desenhador.Mostrar            = false;
            vm.Sobreposicoes.MostarVerificar = false;
            vm.BaseReferencia.IsVisualizar   = true;
            vm.EnviarProjeto.IsVisualizar    = true;
            vm.IsProcessado                  = projetoGeoCredBus.IsProcessado(vm.Projeto.Id, (eCaracterizacao)dependenciaTipo);

            Dominialidade dominialidade = dominialidadeCredBus.ObterDadosGeo(vm.Projeto.EmpreendimentoId);

            vm.PossuiAPPNaoCaracterizada = dominialidade.AreaAPPNaoCaracterizada.MaiorToleranciaM2();
            vm.PossuiARLNaoCaracterizada = dominialidade.ARLNaoCaracterizada.MaiorToleranciaM2();

            //Carregar os dados do projeto geográfico
            eCaracterizacao tipo = (eCaracterizacao)vm.Projeto.CaracterizacaoId;

            vm.ArquivoEnviadoTipo     = (int)eProjetoGeograficoArquivoTipo.ArquivoEnviado;
            vm.ArquivoEnviadoFilaTipo = (tipo == eCaracterizacao.Dominialidade) ? (int)eFilaTipoGeo.Dominialidade : (int)eFilaTipoGeo.Atividade;

            vm.NiveisPrecisao    = ViewModelHelper.CriarSelectList(_bus.ObterNiveisPrecisao());
            vm.SistemaCoordenada = ViewModelHelper.CriarSelectList(_bus.ObterSistemaCoordenada());

            Empreendimento emp = new EmpreendimentoCredenciadoBus().Obter(vm.Projeto.EmpreendimentoId);

            vm.Projeto.EmpreendimentoEasting  = emp.Coordenada.EastingUtm.Value;
            vm.Projeto.EmpreendimentoNorthing = emp.Coordenada.NorthingUtm.Value;

            vm.Projeto.CaracterizacaoTexto = (_listaBus.Caracterizacoes.SingleOrDefault(x => x.Id == vm.Projeto.CaracterizacaoId) ?? new CaracterizacaoLst()).Texto;
            vm.Projeto.SistemaCoordenada   = ConcatenarSistemaCoordenada(emp);

            vm.AtualizarDependenciasModalTitulo = Mensagem.Caracterizacao.AtualizarDependenciasModalTitulo.Texto;

            vm.UrlBaixarOrtofoto  = _config.Obter <string>(ConfiguracaoSistema.KeyUrlGeoBasesWebServices) + "/Arquivo/DownloadArquivoOrtoFoto";
            vm.UrlValidarOrtofoto = _config.Obter <string>(ConfiguracaoSistema.KeyUrlGeoBasesWebServices) + "/Arquivo/ValidarChaveArquivoOrtoFoto";
            vm.UrlsArquivo        = ViewModelHelper.Json(ObterUrlsArquivo());
            vm.UrlVoltar          = Url.Action("Analisar", "AnaliseItens", new { protocoloId = protocoloId, requerimentoId = requerimentoId });
            #region Verificar o Redirecionamento

            vm.UrlAvancar = Url.Action("VisualizarCredenciado", "Dominialidade", new { projetoDigitalId = projetoDigitalId, protocoloId = protocoloId });

            List <DependenciaLst> dependencias = _caracterizacaoConfig.Obter <List <DependenciaLst> >(ConfiguracaoCaracterizacao.KeyCaracterizacoesDependencias);

            #endregion

            if (vm.Projeto.Dependencias == null || vm.Projeto.Dependencias.Count == 0)
            {
                vm.Projeto.Dependencias = _caracterizacaoBus.ObterDependenciasAtual(vm.Projeto.EmpreendimentoId, tipo, eCaracterizacaoDependenciaTipo.ProjetoGeografico);
            }

            if (vm.Projeto.Id > 0)
            {
                vm.TextoMerge = _caracterizacaoValidar.DependenciasAlteradas(
                    vm.Projeto.EmpreendimentoId,
                    vm.Projeto.CaracterizacaoId,
                    eCaracterizacaoDependenciaTipo.ProjetoGeografico,
                    vm.Projeto.Dependencias, true);
            }

            vm.Projeto.Dependencias = caracterizacaoCredBus.ObterDependenciasAtual(vm.Projeto.EmpreendimentoId, tipo, eCaracterizacaoDependenciaTipo.ProjetoGeografico);

            //Busca as dependencias desse projeto geográfico
            projetoGeoCredBus.ObterDependencias(vm.Projeto, true);

            if (vm.Projeto.Id > 0)
            {
                vm.CarregarVMs();
            }

            return(View("ProjetoGeografico", vm));
        }
        public bool CopiarDadosCredenciado(Dependencia dependencia, int empreendimentoInternoId, BancoDeDados banco, BancoDeDados bancoCredenciado)
        {
            if (banco == null)
            {
                return(false);
            }

            if (_validar == null)
            {
                _validar = new DominialidadeValidar();
            }

            #region Configurar Caracterização

            DominialidadeCred.Business.DominialidadeBus dominialidadeCredBus = new DominialidadeCred.Business.DominialidadeBus();
            Dominialidade caracterizacao = dominialidadeCredBus.ObterHistorico(dependencia.DependenciaId, dependencia.DependenciaTid);

            int dominialidadeCredenciadoId  = dependencia.DependenciaId;
            int empreendimentoCredenciadoId = caracterizacao.EmpreendimentoId;

            caracterizacao.EmpreendimentoId = empreendimentoInternoId;
            caracterizacao.CredenciadoID    = caracterizacao.Id;
            caracterizacao.Id  = 0;
            caracterizacao.Tid = string.Empty;
            caracterizacao.Areas.ForEach(r => { r.Id = 0; });
            caracterizacao.Dominios.ForEach(r => { r.Id = 0; });
            caracterizacao.Dominios.SelectMany(x => x.ReservasLegais).ToList().ForEach(r => { r.Id = 0; });

            #endregion

            if (_validar.CopiarDadosCredenciado(caracterizacao))
            {
                GerenciadorTransacao.ObterIDAtual();

                using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco))
                {
                    bancoDeDados.IniciarTransacao();

                    //Setar ID
                    caracterizacao.Id = ObterPorEmpreendimento(empreendimentoInternoId, simplificado: true, banco: bancoDeDados).Id;

                    _da.CopiarDadosCredenciado(caracterizacao, bancoDeDados);

                    dominialidadeCredBus.AtualizarInternoIdTid(empreendimentoCredenciadoId, dominialidadeCredenciadoId, caracterizacao.Id, GerenciadorTransacao.ObterIDAtual(), bancoCredenciado);

                    #region Dependencias

                    //Gerencia as dependências da caracterização
                    caracterizacao.Dependencias = _busCaracterizacao.ObterDependenciasAtual(empreendimentoInternoId, eCaracterizacao.Dominialidade, eCaracterizacaoDependenciaTipo.Caracterizacao);
                    _busCaracterizacao.Dependencias(new Caracterizacao()
                    {
                        Id             = caracterizacao.Id,
                        Tipo           = eCaracterizacao.Dominialidade,
                        DependenteTipo = eCaracterizacaoDependenciaTipo.Caracterizacao,
                        Dependencias   = caracterizacao.Dependencias
                    }, bancoDeDados);

                    if (caracterizacao.InternoID > 0)
                    {
                        if (!Desatualizado(caracterizacao.InternoID, caracterizacao.InternoTID) && !caracterizacao.AlteradoCopiar)
                        {
                            CaracterizacaoBus caracterizacaoBus = new CaracterizacaoBus();
                            caracterizacaoBus.AtualizarDependentes(caracterizacao.InternoID, eCaracterizacao.Dominialidade, eCaracterizacaoDependenciaTipo.Caracterizacao, caracterizacao.Tid, bancoDeDados);
                        }
                    }

                    #endregion

                    bancoDeDados.Commit();
                }
            }

            return(Validacao.EhValido);
        }