public ActionResult Salvar(ProjetoGeografico projeto, string url)
        {
            if (!_caracterizacaoValidar.Basicas(projeto.EmpreendimentoId))
            {
                return(Json(new { @EhValido = Validacao.EhValido, Msg = Validacao.Erros, urlRedirect = Url.Action("Index", "../Empreendimento", Validacao.QueryParamSerializer()) }));
            }

            var urlCriar  = CaracterizacaoVM.GerarUrl(projeto.EmpreendimentoId, true, eCaracterizacao.ExploracaoFlorestal);
            var urlEditar = CaracterizacaoVM.GerarUrl(projeto.EmpreendimentoId, false, eCaracterizacao.ExploracaoFlorestal);

            if (url.Contains(urlCriar) || url.Contains(urlEditar))
            {
                if (!_validar.Finalizar(projeto))
                {
                    return(Json(new { EhValido = Validacao.EhValido, Msg = Validacao.Erros, Url = url }));
                }
                if (_exploracaoFlorestalBus.ExisteExploracaoGeoNaoCadastrada(projeto.Id))
                {
                    url = urlCriar;
                }
            }

            _bus.Salvar(projeto);
            if (projeto.CaracterizacaoId == (int)eCaracterizacao.ExploracaoFlorestal)
            {
                _caracterizacaoBus.AtualizarDependentes(projeto.Id, eCaracterizacao.ExploracaoFlorestal, eCaracterizacaoDependenciaTipo.Caracterizacao, projeto.Tid);
            }

            return(Json(new { EhValido = Validacao.EhValido, Msg = Validacao.Erros, Url = url }));
        }
Beispiel #2
0
        public void CopiarDadosCredenciado(Dependencia dependencia, int empreendimentoInternoID, BancoDeDados banco, BancoDeDados bancoCredenciado)
        {
            if (banco == null)
            {
                return;
            }

            #region Configurar Projeto

            //Obter do Credenciado
            Cred.ModuloProjetoGeografico.Bussiness.ProjetoGeograficoBus projetoGeoCredBus = new Cred.ModuloProjetoGeografico.Bussiness.ProjetoGeograficoBus();
            ProjetoGeografico projetoGeo         = projetoGeoCredBus.ObterHistorico(dependencia.DependenciaId, dependencia.DependenciaTid);
            eCaracterizacao   caracterizacaoTipo = (eCaracterizacao)dependencia.DependenciaCaracterizacao;

            int projetoGeoCredenciadoId     = projetoGeo.Id;
            int empreendimentoCredenciadoId = projetoGeo.EmpreendimentoId;

            bool atualizarDependencias = (!Desatualizado(projetoGeo.InternoID, projetoGeo.InternoTID) && !projetoGeo.AlteradoCopiar);

            #endregion

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

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

                    _da.CopiarDadosCredenciado(projetoGeo, empreendimentoInternoID, bancoDeDados);

                    projetoGeoCredBus.AtualizarInternoIdTid(
                        empreendimentoCredenciadoId,
                        projetoGeoCredenciadoId,
                        (eCaracterizacao)projetoGeo.CaracterizacaoId,
                        projetoGeo.Id,
                        GerenciadorTransacao.ObterIDAtual(),
                        bancoCredenciado);

                    #region Arquivo

                    ArquivoBus _busArquivoInterno     = new ArquivoBus(eExecutorTipo.Interno);
                    ArquivoBus _busArquivoCredenciado = new ArquivoBus(eExecutorTipo.Credenciado);

                    foreach (var item in projetoGeo.Arquivos)
                    {
                        Arquivo aux = _busArquivoCredenciado.Obter(item.Id.Value); //Obtém o arquivo completo do diretorio do credenciado(nome, buffer, etc)

                        aux.Id = 0;                                                //Zera o ID
                        aux    = _busArquivoInterno.SalvarTemp(aux);               //salva no diretório temporário
                        aux    = _busArquivoInterno.Copiar(aux);                   //Copia para o diretório oficial

                        //Salvar na Oficial
                        ArquivoDa arquivoDa = new ArquivoDa();
                        arquivoDa.Salvar(aux, User.FuncionarioId, User.Name, User.Login, (int)eExecutorTipo.Interno, User.FuncionarioTid, bancoDeDados);

                        item.Id = aux.Id;
                    }

                    _da.SalvarArquivosCredenciado(projetoGeo, bancoDeDados);

                    #endregion

                    #region Histórico

                    HistCaract.Historico historico = new HistCaract.Historico();
                    historico.Gerar(projetoGeo.Id, eHistoricoArtefatoCaracterizacao.projetogeografico, eHistoricoAcao.importar, bancoDeDados);
                    historico.GerarGeo(projetoGeo.Id, eHistoricoArtefatoCaracterizacao.projetogeografico, eHistoricoAcao.importar, bancoDeDados);

                    #endregion

                    #region Dependencias

                    //Gerencia as dependências
                    projetoGeo.Dependencias = _caracterizacaoBus.ObterDependenciasAtual(empreendimentoInternoID, caracterizacaoTipo, eCaracterizacaoDependenciaTipo.ProjetoGeografico);
                    _caracterizacaoBus.Dependencias(new Caracterizacao()
                    {
                        Id             = projetoGeo.Id,
                        Tipo           = caracterizacaoTipo,
                        DependenteTipo = eCaracterizacaoDependenciaTipo.ProjetoGeografico,
                        Dependencias   = projetoGeo.Dependencias
                    }, bancoDeDados);

                    if (projetoGeo.InternoID > 0)
                    {
                        if (atualizarDependencias)
                        {
                            CaracterizacaoBus caracterizacaoBus = new CaracterizacaoBus();
                            caracterizacaoBus.AtualizarDependentes(projetoGeo.InternoID, caracterizacaoTipo, eCaracterizacaoDependenciaTipo.ProjetoGeografico, projetoGeo.Tid, bancoDeDados);
                        }
                    }

                    #endregion

                    bancoDeDados.Commit();
                }
            }
        }
        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);
        }
        public void FinalizarExploracao(int empreendimento, int titulo, BancoDeDados banco = null)
        {
            try
            {
                var idProjetoGeo = _projetoGeoBus.ExisteProjetoGeografico(empreendimento, (int)eCaracterizacao.ExploracaoFlorestal);
                if (idProjetoGeo == 0)
                {
                    throw new Exception("Projeto Geográfico não encontrado");
                }

                var projeto = _projetoGeoBus.ObterProjeto(idProjetoGeo);
                _projetoGeoBus.FinalizarGeometrias(projeto, titulo, banco);

                if (!Validacao.EhValido)
                {
                    return;
                }

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

                    var exploracoes = this.ObterPorEmpreendimentoList(empreendimento, simplificado: true, banco: bancoDeDados);
                    foreach (var exploracao in exploracoes)
                    {
                        exploracao.Dependencias = _busCaracterizacao.ObterDependenciasAtual(exploracao.EmpreendimentoId, eCaracterizacao.ExploracaoFlorestal, eCaracterizacaoDependenciaTipo.Caracterizacao);
                        _busCaracterizacao.Dependencias(new Caracterizacao()
                        {
                            Id             = exploracao.Id,
                            Tipo           = eCaracterizacao.ExploracaoFlorestal,
                            DependenteTipo = eCaracterizacaoDependenciaTipo.Caracterizacao,
                            Dependencias   = exploracao.Dependencias
                        }, bancoDeDados);
                        _busCaracterizacao.AtualizarDependentes(exploracao.EmpreendimentoId, eCaracterizacao.ExploracaoFlorestal, eCaracterizacaoDependenciaTipo.Caracterizacao, exploracao.Tid, bancoDeDados);
                    }

                    _da.FinalizarExploracao(empreendimento, bancoDeDados);

                    if (!this.ExisteExploracaoEmAndamento(empreendimento, bancoDeDados))
                    {
                        if (projeto.SituacaoId != (int)eProjetoGeograficoSituacao.Finalizado)
                        {
                            projeto.Sobreposicoes = _projetoGeoBus.ObterGeoSobreposiacao(idProjetoGeo, eCaracterizacao.ExploracaoFlorestal);
                            _projetoGeoBus.SalvarSobreposicoes(projeto);
                            _projetoGeoBus.Finalizar(projeto, bancoDeDados);
                            if (Validacao.EhValido)
                            {
                                _projetoGeoBus.ExcluirRascunho(projeto, bancoDeDados);
                            }
                        }
                    }

                    if (Validacao.EhValido)
                    {
                        Validacao.Erros.Clear();
                    }
                    else
                    {
                        bancoDeDados.Rollback();
                        return;
                    }

                    bancoDeDados.Commit();
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }
        }