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(); } } }
internal void Dependencias(Caracterizacao caracterizacao, BancoDeDados banco = null) { using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco)) { bancoDeDados.IniciarTransacao(); #region Dependências da caracterização Comando comando = bancoDeDados.CriarComando("delete from {0}crt_dependencia c ", EsquemaBanco); comando.DbCommand.CommandText += String.Format("where c.dependente_tipo = :dependente_tipo and c.dependente_caracterizacao = :dependente_caracterizacao and c.dependente_id = :dependente_id {0}", comando.AdicionarNotIn("and", "c.id", DbType.Int32, caracterizacao.Dependencias.Select(x => x.Id).ToList())); comando.AdicionarParametroEntrada("dependente_tipo", (int)caracterizacao.DependenteTipo, DbType.Int32); comando.AdicionarParametroEntrada("dependente_caracterizacao", (int)caracterizacao.Tipo, DbType.Int32); comando.AdicionarParametroEntrada("dependente_id", caracterizacao.Id, DbType.Int32); bancoDeDados.ExecutarNonQuery(comando); if (caracterizacao.Dependencias != null && caracterizacao.Dependencias.Count > 0) { foreach (Dependencia item in caracterizacao.Dependencias) { if (item.Id > 0) { comando = bancoDeDados.CriarComando(@"update {0}crt_dependencia d set d.dependencia_tipo = :dependencia_tipo, d.dependente_caracterizacao = :dependente_caracterizacao, d.dependencia_id = :dependencia_id, d.dependencia_tid = :dependencia_tid, d.tid = :tid where d.id = :id" , EsquemaBanco); comando.AdicionarParametroEntrada("id", item.Id, DbType.Int32); } else { comando = bancoDeDados.CriarComando(@"insert into {0}crt_dependencia d (id, dependente_tipo, dependente_caracterizacao, dependente_id, dependencia_tipo, dependencia_caracterizacao, dependencia_id, dependencia_tid, tid) values ({0}seq_crt_dependencia.nextval, :dependente_tipo, :dependente_caracterizacao, :dependente_id, :dependencia_tipo, :dependencia_caracterizacao, :dependencia_id, :dependencia_tid, :tid) returning id into :id_dep" , EsquemaBanco); comando.AdicionarParametroEntrada("dependente_tipo", (int)caracterizacao.DependenteTipo, DbType.Int32); comando.AdicionarParametroEntrada("dependente_caracterizacao", (int)caracterizacao.Tipo, DbType.Int32); comando.AdicionarParametroEntrada("dependente_id", caracterizacao.Id, DbType.Int32); comando.AdicionarParametroSaida("id_dep", DbType.Int32); } comando.AdicionarParametroEntrada("dependencia_tipo", item.DependenciaTipo, DbType.Int32); comando.AdicionarParametroEntrada("dependencia_caracterizacao", item.DependenciaCaracterizacao, DbType.Int32); comando.AdicionarParametroEntrada("dependencia_id", item.DependenciaId, DbType.Int32); comando.AdicionarParametroEntrada("dependencia_tid", DbType.String, 36, item.DependenciaTid); comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual()); bancoDeDados.ExecutarNonQuery(comando); if (item.Id <= 0) { item.Id = Convert.ToInt32(comando.ObterValorParametro("id_dep")); } Historico.Gerar(item.Id, eHistoricoArtefatoCaracterizacao.dependencia, eHistoricoAcao.atualizar, bancoDeDados); } } #endregion bancoDeDados.Commit(); } }