internal void InserirFilaArquivoCarSicar(int solicitacaoId, eCARSolicitacaoOrigem solicitacaoOrigem, BancoDeDados banco = null) { string requisicao_fila = string.Empty; using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco, UsuarioInterno)) { bancoDeDados.IniciarTransacao(); Comando comando = bancoDeDados.CriarComando(@"select s.solicitacao_id solic_id, s.tid solic_tid, s.empreendimento_id emp_id, s.empreendimento_tid emp_tid from hst_car_solicitacao s where s.solicitacao_id = :idSolicitacao and s.tid = (select ss.tid from tab_car_solicitacao ss where ss.id= :idSolicitacao) order by id desc" , UsuarioInterno); comando.AdicionarParametroEntrada("idSolicitacao", solicitacaoId, DbType.Int32); using (IDataReader reader = bancoDeDados.ExecutarReader(comando)) { while (reader.Read()) { requisicao_fila = "'{\"origem\":" + (int)solicitacaoOrigem + ",\"empreendimento\":" + reader.GetValue <int>("emp_id") + ",\"empreendimento_tid\":" + reader.GetValue <string>("emp_tid") + ",\"solicitacao_car\":" + reader.GetValue <int>("solic_id") + ",\"solicitacao_car_tid\":" + reader.GetValue <string>("solic_tid") + "\"}'";; } reader.Close(); } if (requisicao_fila != string.Empty) { comando = bancoDeDados.CriarComando(@" insert into tab_scheduler_fila (id, tipo, requisitante, requisicao, empreendimento, data_criacao, data_conclusao, resultado, sucesso) values (seq_tab_scheduler_fila.nextval, 'gerar-car', 0, :requisicao, 0, NULL, NULL, '', '')", UsuarioInterno); comando.AdicionarParametroEntrada("requisicao", requisicao_fila, DbType.String); bancoDeDados.ExecutarNonQuery(comando); SalvarControleArquivoCarSicar(solicitacaoId, eStatusArquivoSICAR.AguardandoEnvio, solicitacaoOrigem, banco); bancoDeDados.Commit(); } } }
internal void SalvarControleArquivoCarSicar(int solicitacaoId, eStatusArquivoSICAR statusArquivoSICAR, eCARSolicitacaoOrigem solicitacaoOrigem, BancoDeDados banco = null) { ControleArquivoSICAR controleArquivoSICAR = new ControleArquivoSICAR(); controleArquivoSICAR.SolicitacaoCarId = solicitacaoId; using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco, UsuarioInterno)) { bancoDeDados.IniciarTransacao(); #region Coleta de dados Comando comando = bancoDeDados.CriarComando(@"select tcs.id solic_id, tcs.tid solic_tid, te.id emp_id, te.tid emp_tid, tcrls.id controle_id from tab_car_solicitacao tcs, tab_empreendimento te, (select tcsicar.id, tcsicar.solicitacao_car from tab_controle_sicar tcsicar where tcsicar.solicitacao_car_esquema = :esquema) tcrls where tcs.empreendimento = te.id and tcs.id = tcrls.solicitacao_car(+) and tcs.id = :idSolicitacao", UsuarioInterno); comando.AdicionarParametroEntrada("esquema", (int)solicitacaoOrigem, DbType.Int32); comando.AdicionarParametroEntrada("idSolicitacao", controleArquivoSICAR.SolicitacaoCarId, DbType.Int32); using (IDataReader reader = bancoDeDados.ExecutarReader(comando)) { if (reader.Read()) { controleArquivoSICAR.SolicitacaoCarTid = reader.GetValue <String>("solic_tid"); controleArquivoSICAR.EmpreendimentoId = reader.GetValue <Int32>("emp_id"); controleArquivoSICAR.EmpreendimentoTid = reader.GetValue <String>("emp_tid"); controleArquivoSICAR.Id = Convert.ToInt32(reader.GetValue <String>("controle_id")); } reader.Close(); } #endregion if (controleArquivoSICAR.Id == 0) { #region Criar controle arquivo SICAR comando = bancoDeDados.CriarComando(@" insert into tab_controle_sicar (id, tid, empreendimento, empreendimento_tid, solicitacao_car, solicitacao_car_tid, situacao_envio, solicitacao_car_esquema) values (seq_tab_controle_sicar.nextval, :tid, :empreendimento, :empreendimento_tid, :solicitacao_car, :solicitacao_car_tid, :situacao_envio, :solicitacao_car_esquema) returning id into :id", UsuarioInterno); comando.AdicionarParametroEntrada("empreendimento", controleArquivoSICAR.EmpreendimentoId, DbType.Int32); comando.AdicionarParametroEntrada("empreendimento_tid", controleArquivoSICAR.EmpreendimentoTid, DbType.String); comando.AdicionarParametroEntrada("solicitacao_car", controleArquivoSICAR.SolicitacaoCarId, DbType.Int32); comando.AdicionarParametroEntrada("solicitacao_car_tid", controleArquivoSICAR.SolicitacaoCarTid, DbType.String); comando.AdicionarParametroEntrada("situacao_envio", (int)statusArquivoSICAR, DbType.Int32); comando.AdicionarParametroEntrada("solicitacao_car_esquema", (int)solicitacaoOrigem, DbType.Int32); comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual()); comando.AdicionarParametroSaida("id", DbType.Int32); bancoDeDados.ExecutarNonQuery(comando); controleArquivoSICAR.Id = Convert.ToInt32(comando.ObterValorParametro("id")); #endregion } else { #region Editar controle arquivo SICAR comando = bancoDeDados.CriarComando(@" update tab_controle_sicar r set r.empreendimento_tid = :empreendimento_tid, r.solicitacao_car_tid = :solicitacao_car_tid, r.situacao_envio = :situacao_envio, r.tid = :tid where r.id = :id", UsuarioInterno); comando.AdicionarParametroEntrada("empreendimento_tid", controleArquivoSICAR.EmpreendimentoTid, DbType.String); comando.AdicionarParametroEntrada("solicitacao_car_tid", controleArquivoSICAR.SolicitacaoCarTid, DbType.String); comando.AdicionarParametroEntrada("situacao_envio", (int)statusArquivoSICAR, DbType.Int32); comando.AdicionarParametroEntrada("tid", DbType.String, 36, GerenciadorTransacao.ObterIDAtual()); comando.AdicionarParametroEntrada("id", controleArquivoSICAR.Id, DbType.Int32); bancoDeDados.ExecutarNonQuery(comando); #endregion } GerarHistoricoControleArquivoCarSicar(controleArquivoSICAR.Id, banco); bancoDeDados.Commit(); } }