Exemple #1
0
        internal static void MarcarItemFilaTerminado(OracleConnection conn, int id, bool sucesso, string resultado)
        {
            var schema = CarUtils.GetEsquemaInstitucional();

            try
            {
                using (
                    var cmd =
                        new OracleCommand(
                            "UPDATE " + schema +
                            ".TAB_SCHEDULER_FILA SET data_conclusao = CURRENT_TIMESTAMP, sucesso = :sucesso, resultado = :resultado WHERE id=:id",
                            conn))
                {
                    cmd.Parameters.Add(new OracleParameter("sucesso", ((sucesso) ? "verdadeiro" : "falso")));
                    cmd.Parameters.Add(new OracleParameter("resultado", resultado));
                    cmd.Parameters.Add(new OracleParameter("id", id));


                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception exception)
            {
                Log.Error("Erro ao conectar ao Banco de dados:" + exception.Message, exception);
            }
        }
Exemple #2
0
        internal static string PegarResultadoItemFilaPorRequisitante(OracleConnection conn, int id, string tipo)
        {
            var schema = CarUtils.GetEsquemaInstitucional();
            var item   = new ItemFila();

            try
            {
                using (
                    var cmd =
                        new OracleCommand(
                            "SELECT * FROM " + schema + ".TAB_SCHEDULER_FILA WHERE requisitante = :id and tipo = :tipo",
                            conn))
                {
                    cmd.Parameters.Add(new OracleParameter("id", id));
                    cmd.Parameters.Add(new OracleParameter("tipo", tipo));

                    using (var dr = cmd.ExecuteReader())
                    {
                        if (dr.Read())
                        {
                            return(Convert.ToString(dr["resultado"]));
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                Log.Error("Erro ao conectar ao Banco de dados:" + exception.Message, exception);
            }

            return(string.Empty);
        }
Exemple #3
0
        internal static void MarcarItemFilaTerminado(OracleConnection conn, int id, bool sucesso, String resultado)
        {
            var schema = CarUtils.GetEsquemaInstitucional();

            try
            {
                using (
                    var cmd =
                        new OracleCommand(
                            "UPDATE " + schema +
                            ".TAB_SCHEDULER_FILA SET data_conclusao = CURRENT_TIMESTAMP, sucesso = :sucesso, resultado = :resultado WHERE id=:id",
                            conn))
                {
                    cmd.Parameters.Add(new OracleParameter("sucesso", ((sucesso) ? "verdadeiro" : "falso")));
                    cmd.Parameters.Add(new OracleParameter("resultado", (String.IsNullOrWhiteSpace(resultado) || resultado.Length < 4000) ? resultado : resultado.Substring(0, 4000)));
                    cmd.Parameters.Add(new OracleParameter("id", id));


                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception exception)
            {
                Log.Error("MarcarItemFilaTerminado  <> -- <> RESULTADO ::: " + resultado + "  <<>>  Erro ao conectar ao Banco de dados:" + exception.Message, exception);
                throw new System.ArgumentException("Erro de conexão com o SICAR, será feita uma nova tentativa ;", "resultado");
            }
        }
Exemple #4
0
        internal static void AdicionarItemFila(OracleConnection conn, string tipo, int requisitante, string requisicao, int empreendimento)
        {
            var schema = CarUtils.GetEsquemaInstitucional();

            try
            {
                using (
                    var cmd =
                        new OracleCommand(
                            "INSERT INTO " + schema + ".TAB_SCHEDULER_FILA (id, tipo, requisitante, requisicao, empreendimento) values (" +
                            schema + ".SEQ_TAB_SCHEDULER_FILA.nextval, :tipo, :requisitante, :requisicao, :empreendimento)",
                            conn))
                {
                    cmd.Parameters.Add(new OracleParameter("tipo", tipo));
                    cmd.Parameters.Add(new OracleParameter("requisitante", requisitante));
                    cmd.Parameters.Add(new OracleParameter("requisicao", requisicao));
                    cmd.Parameters.Add(new OracleParameter("empreendimento", empreendimento));

                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception exception)
            {
                Log.Error("Erro ao conectar ao Banco de dados:" + exception.Message, exception);
            }
        }
        public async void Execute(IJobExecutionContext context)
        {
            using (var conn = new OracleConnection(CarUtils.GetBancoInstitucional()))
            {
                string   strResposta = string.Empty;
                ItemFila nextItem    = null;
                var      tid         = Blocos.Data.GerenciadorTransacao.ObterIDAtual();
                try
                {
                    conn.Open();

                    nextItem = LocalDB.PegarProximoItemFila(conn, "revisar-resposta-car");

                    while (nextItem != null)
                    {
                        strResposta = await ConsultarStatusSicar(nextItem.Requisicao);

                        var resposta = JsonConvert.DeserializeObject <ConsultaSicarResposta>(strResposta);

                        var resultado = GerarMensagemRetorno(resposta);

                        if (resultado.codigoResposta == 500)
                        {
                            var strResultadoEnviarCar = LocalDB.PegarResultadoItemFilaPorRequisitante(conn, nextItem.Requisitante, "enviar-car");
                            var resultadoEnviarCar    = JsonConvert.DeserializeObject <MensagemRetorno>(strResultadoEnviarCar);
                            if (resultadoEnviarCar.codigoResposta != 500)
                            {
                                resultado = resultadoEnviarCar;
                            }
                        }

                        AtualizarRegistros(conn, tid, nextItem, resultado);

                        nextItem = LocalDB.PegarProximoItemFila(conn, "revisar-resposta-car");
                    }
                }
                catch (Exception ex)
                {
                    //Marcar como processado registrando a mensagem de erro
                    var msg = ex.Message +
                              Environment.NewLine +
                              Environment.NewLine +
                              strResposta;

                    if (nextItem != null)
                    {
                        var item       = LocalDB.PegarItemFilaPorId(conn, nextItem.Requisitante);
                        var requisicao = JsonConvert.DeserializeObject <RequisicaoJobCar>(item.Requisicao);


                        ControleCarDB.AtualizarSolicitacaoCar(conn, requisicao.origem, requisicao.solicitacao_car, ControleCarDB.SITUACAO_SOLICITACAO_PENDENTE, tid);
                        ControleCarDB.AtualizarControleSICAR(conn, null, requisicao, ControleCarDB.SITUACAO_ENVIO_ARQUIVO_REPROVADO, tid);
                    }

                    LocalDB.MarcarItemFilaTerminado(conn, nextItem.Id, false, msg);
                }
            }
        }
Exemple #6
0
        public Origem()
        {
            tipo   = Origem.TipoEstadual;
            status = Origem.StatusInscrito;

            var agora = DateTime.Now;

            dataProtocolo   = agora;
            codigoProtocolo = CarUtils.GerarCodigoProtocolo(agora);
        }
Exemple #7
0
        internal static void ResetarFila()
        {
            using (var conn = new OracleConnection(CarUtils.GetBancoInstitucional()))
            {
                conn.Open();

                var schema = CarUtils.GetEsquemaInstitucional();

                using (var cmd = new OracleCommand("UPDATE " + schema + ".TAB_SCHEDULER_FILA SET data_criacao = null WHERE data_conclusao is null", conn))
                {
                    cmd.ExecuteNonQuery();
                }
            }
        }
Exemple #8
0
        public static int InserirControleSICAR(OracleConnection conn, ItemFila itemFila, string arquivoCar)
        {
            var schema = CarUtils.GetEsquemaInstitucional();

            var requisicao = JsonConvert.DeserializeObject <RequisicaoJobCar>(itemFila.Requisicao);

            var tid = Blocos.Data.GerenciadorTransacao.ObterIDAtual();

            var sqlBuilder = new StringBuilder();

            sqlBuilder.Append("INSERT INTO " + schema + ".TAB_CONTROLE_SICAR ");
            sqlBuilder.Append("(id,tid,empreendimento,empreendimento_tid,solicitacao_car,solicitacao_car_tid,situacao_envio,");
            sqlBuilder.Append("data_gerado,arquivo,solicitacao_car_esquema)");
            sqlBuilder.Append(" VALUES ");
            sqlBuilder.Append("(" + schema + ".SEQ_TAB_CONTROLE_SICAR.nextval,:tid,:empreendimento,:empreendimento_tid,");
            sqlBuilder.Append(
                ":solicitacao_car,:solicitacao_car_tid,:situacao_envio,CURRENT_TIMESTAMP,:arquivo,:solicitacao_car_esquema) RETURNING id INTO :novo_id");

            var novoId = 0;

            try
            {
                using (var cmd = new OracleCommand(sqlBuilder.ToString(), conn))
                {
                    cmd.Parameters.Add(new OracleParameter("tid", tid));
                    cmd.Parameters.Add(new OracleParameter("empreendimento", requisicao.empreendimento));
                    cmd.Parameters.Add(new OracleParameter("empreendimento_tid", requisicao.empreendimento_tid));
                    cmd.Parameters.Add(new OracleParameter("solicitacao_car", requisicao.solicitacao_car));
                    cmd.Parameters.Add(new OracleParameter("solicitacao_car_tid", requisicao.solicitacao_car_tid));
                    cmd.Parameters.Add(new OracleParameter("situacao_envio", SITUACAO_ENVIO_ARQUIVO_GERADO));
                    cmd.Parameters.Add(new OracleParameter("arquivo", arquivoCar));
                    cmd.Parameters.Add(new OracleParameter("solicitacao_car_esquema",
                                                           ((requisicao.origem == RequisicaoJobCar.INSTITUCIONAL ? 1 : 2))));
                    cmd.Parameters.Add(new OracleParameter("novo_id", OracleDbType.Decimal, ParameterDirection.ReturnValue));

                    cmd.ExecuteNonQuery();

                    novoId = Convert.ToInt32(cmd.Parameters["novo_id"].Value.ToString());
                }
            }
            catch (Exception exception)
            {
                Log.Error("Erro ao conectar ao Banco de dados:" + exception.Message, exception);
            }

            //Inserir no Histórico
            InserirHistoricoControleCar(conn, requisicao, tid, null);

            return(novoId);
        }
        public void Execute(IJobExecutionContext context)
        {
            try
            {
                Log.Info($"COMECOU O REENVIO - {DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss.fff")}");
                using (var conn = new OracleConnection(CarUtils.GetBancoInstitucional()))
                {
                    conn.Open();
                    using (var cmd = new OracleCommand(@"
						UPDATE TAB_CAR_SOLICITACAO CS SET PASSIVO_ENVIADO = NULL
						WHERE CS.ID IN (
								SELECT SOLICITACAO_CAR FROM TAB_CONTROLE_SICAR SI 
									WHERE SI.MENSAGEM_RESPOSTA LIKE '%sending the request%' AND SOLICITACAO_CAR_ESQUEMA = 1 AND SITUACAO_ENVIO = 4
								UNION
								SELECT SOLICITACAO_CAR FROM TAB_CONTROLE_SICAR SI
									WHERE SI.MENSAGEM_RESPOSTA LIKE '%Unexpected character%' AND SOLICITACAO_CAR_ESQUEMA = 1 AND SITUACAO_ENVIO = 4
								UNION 
								SELECT SOLICITACAO_CAR FROM TAB_CONTROLE_SICAR SI
									WHERE SI.MENSAGEM_RESPOSTA LIKE '%A task was canceled%' AND SOLICITACAO_CAR_ESQUEMA = 1 AND SITUACAO_ENVIO = 4                  
								)"                                , conn))
                    {
                        cmd.ExecuteNonQuery();

                        cmd.CommandText = @"
						UPDATE IDAFCREDENCIADO.TAB_CAR_SOLICITACAO CS SET PASSIVO_ENVIADO = NULL
						WHERE CS.ID IN (
								SELECT SOLICITACAO_CAR FROM TAB_CONTROLE_SICAR SI 
									WHERE SI.MENSAGEM_RESPOSTA LIKE '%sending the request%' AND SOLICITACAO_CAR_ESQUEMA = 1 AND SITUACAO_ENVIO = 4
								UNION
								SELECT SOLICITACAO_CAR FROM TAB_CONTROLE_SICAR SI
									WHERE SI.MENSAGEM_RESPOSTA LIKE '%Unexpected character%' AND SOLICITACAO_CAR_ESQUEMA = 1 AND SITUACAO_ENVIO = 4
								UNION 
								SELECT SOLICITACAO_CAR FROM TAB_CONTROLE_SICAR SI
									WHERE SI.MENSAGEM_RESPOSTA LIKE '%A task was canceled%' AND SOLICITACAO_CAR_ESQUEMA = 1 AND SITUACAO_ENVIO = 4                  
								)         "                                ;
                        cmd.ExecuteNonQuery();
                    }
                    conn.Close();
                }
                Log.Info($"TERMINOU O REENVIO - {DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss.fff")}");
            }
            catch (Exception ex)
            {
                Log.Error($@"CATCH REENVIO: \n
							Mensagem: {ex.Message} \n
							___ex____: {ex} "                            );
            }
        }
Exemple #10
0
        private static void InserirHistoricoControleCar(OracleConnection conn, RequisicaoJobCar requisicao, string tid)
        {
            var schema = CarUtils.GetEsquemaInstitucional();

            var item = ObterItemControleCar(conn, requisicao);

            var sqlBuilder = new StringBuilder();

            sqlBuilder.Append("INSERT INTO " + schema + ".HST_CONTROLE_SICAR ");
            sqlBuilder.Append("(id,tid,empreendimento,empreendimento_tid,solicitacao_car,solicitacao_car_tid,situacao_envio,");
            sqlBuilder.Append("chave_protocolo,data_gerado,data_envio,arquivo,pendencias,codigo_imovel,");
            sqlBuilder.Append("url_recibo,status_sicar,condicao,solicitacao_car_esquema,data_execucao)");
            sqlBuilder.Append(" values ");
            sqlBuilder.Append("(" + schema + ".SEQ_HST_CONTROLE_SICAR.nextval,:tid,:empreendimento,:empreendimento_tid,");
            sqlBuilder.Append(":solicitacao_car,:solicitacao_car_tid,:situacao_envio,:chave_protocolo,");
            sqlBuilder.Append(":data_gerado,:data_envio,:arquivo,:pendencias,:codigo_imovel,");
            sqlBuilder.Append(":url_recibo,:status_sicar,:condicao,:solicitacao_car_esquema,CURRENT_TIMESTAMP)");

            try
            {
                using (var cmd = new OracleCommand(sqlBuilder.ToString(), conn))
                {
                    cmd.Parameters.Add(new OracleParameter("tid", tid));
                    cmd.Parameters.Add(new OracleParameter("empreendimento", item.empreendimento));
                    cmd.Parameters.Add(new OracleParameter("empreendimento_tid", item.empreendimento_tid));
                    cmd.Parameters.Add(new OracleParameter("solicitacao_car", item.solicitacao_car));
                    cmd.Parameters.Add(new OracleParameter("solicitacao_car_tid", tid));                    //item.solicitacao_car_tid));
                    cmd.Parameters.Add(new OracleParameter("situacao_envio", item.situacao_envio));
                    cmd.Parameters.Add(new OracleParameter("chave_protocolo", item.chave_protocolo));
                    cmd.Parameters.Add(new OracleParameter("data_gerado", item.data_gerado));
                    cmd.Parameters.Add(new OracleParameter("data_envio", item.data_envio));
                    cmd.Parameters.Add(new OracleParameter("arquivo", item.arquivo));
                    cmd.Parameters.Add(new OracleParameter("pendencias", item.pendencias));
                    cmd.Parameters.Add(new OracleParameter("codigo_imovel", item.codigo_imovel));
                    cmd.Parameters.Add(new OracleParameter("url_recibo", item.url_recibo));
                    cmd.Parameters.Add(new OracleParameter("status_sicar", item.status_sicar));
                    cmd.Parameters.Add(new OracleParameter("condicao", item.condicao));
                    cmd.Parameters.Add(new OracleParameter("solicitacao_car_esquema", item.solicitacao_car_esquema));

                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception exception)
            {
                Log.Error("Erro ao conectar ao Banco de dados:" + exception.Message, exception);
            }
        }
Exemple #11
0
        internal static ItemFila PegarProximoItemFila(OracleConnection conn, string tipo)
        {
            lock (lockObject)
            {
                var      schema = CarUtils.GetEsquemaInstitucional();
                ItemFila item   = null;

                try
                {
                    using (
                        var cmd =
                            new OracleCommand(@"update " + schema + @".tab_scheduler_fila set data_criacao = current_timestamp
								where id = (select min(id) from "                                 + schema + @".tab_scheduler_fila where tipo = :tipo and data_criacao is null)
								returning id, requisitante, requisicao, empreendimento 
								into :id, :requisitante, :requisicao, :empreendimento"                                , conn))
                    {
                        cmd.Parameters.Add(new OracleParameter("tipo", tipo));
                        OracleParameter paramId           = cmd.Parameters.Add(new OracleParameter("id", OracleDbType.Int32, System.Data.ParameterDirection.Output));
                        OracleParameter paramRequisitante = cmd.Parameters.Add(new OracleParameter("requisitante", OracleDbType.Int32, System.Data.ParameterDirection.Output));
                        OracleParameter paramRequisicao   = cmd.Parameters.Add(new OracleParameter("requisicao", OracleDbType.Varchar2, 500)
                        {
                            Direction = System.Data.ParameterDirection.Output
                        });
                        OracleParameter paramEmpreendimento = cmd.Parameters.Add(new OracleParameter("empreendimento", OracleDbType.Int32, System.Data.ParameterDirection.Output));

                        if (cmd.ExecuteNonQuery() > 0)
                        {
                            item = new ItemFila();

                            item.Id             = Convert.ToInt32(paramId.Value.ToString());
                            item.Requisitante   = Convert.ToInt32(paramRequisitante.Value.ToString());
                            item.Empreendimento = Convert.ToInt32(paramEmpreendimento.Value.ToString());
                            item.Requisicao     = paramRequisicao.Value.ToString();
                        }
                    }
                }
                catch (Exception exception)
                {
                    Log.Error("Erro ao conectar ao Banco de dados:" + exception.Message, exception);
                }

                return(item);
            }
        }
        public void Execute(IJobExecutionContext context)
        {
            //logging
            var jobKey = context.JobDetail.Key;

            Log.InfoFormat("BEGIN {0} executing at {1}", jobKey, DateTime.Now.ToString("r"));

            using (var conn = new OracleConnection(CarUtils.GetBancoInstitucional()))
            {
                conn.Open();

                //Veja se
                var nextItem = LocalDB.PegarProximoItemFila(conn, "consultar-dua");

                while (nextItem != null)
                {
                    //Update item as Started
                    LocalDB.MarcarItemFilaIniciado(conn, nextItem.Id);

                    try
                    {
                        //Buscar senha do certificado A3
                        var senha = BuscarSenha(conn);

                        //Consultar DUA
                        var resultado = ConsultarDUA(nextItem.Requisicao, senha);

                        //Marcar como processado
                        LocalDB.MarcarItemFilaTerminado(conn, nextItem.Id, true, resultado);
                    }
                    catch (Exception ex)
                    {
                        //Marcar como processado registrando a mensagem de erro
                        LocalDB.MarcarItemFilaTerminado(conn, nextItem.Id, false, ex.Message);
                    }

                    nextItem = LocalDB.PegarProximoItemFila(conn, "consultar-dua");
                }
            }

            Log.InfoFormat("ENDING {0} executing at {1}", jobKey, DateTime.Now.ToString("r"));
        }
        public void Execute(IJobExecutionContext context)
        {
            //INSTITUCIONAL
            int origem = 1;

            using (var connInst = new OracleConnection(CarUtils.GetBancoInstitucional()))
            {
                connInst.Open();
                ChamadaEnviarCarInterno(origem, connInst);
                connInst.Close();
            }

            //CREDENCIADO
            origem = 2;
            using (var connCre = new OracleConnection(CarUtils.GetBancoCredenciado()))
            {
                connCre.Open();
                ChamadaEnviarCarInterno(origem, connCre);
                connCre.Close();
            }
        }
Exemple #14
0
        internal static void MarcarItemFilaIniciado(OracleConnection conn, int id)
        {
            var schema = CarUtils.GetEsquemaInstitucional();

            try
            {
                using (
                    var cmd =
                        new OracleCommand(
                            "UPDATE " + schema + ".TAB_SCHEDULER_FILA SET data_criacao = CURRENT_TIMESTAMP WHERE id=:id",
                            conn))
                {
                    cmd.Parameters.Add(new OracleParameter("id", id));

                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception exception)
            {
                Log.Error("Erro ao conectar ao Banco de dados:" + exception.Message, exception);
            }
        }
Exemple #15
0
        internal static ItemFila PegarItemFilaPorId(OracleConnection conn, int id)
        {
            var schema = CarUtils.GetEsquemaInstitucional();
            var item   = new ItemFila();

            try
            {
                using (
                    var cmd =
                        new OracleCommand(
                            "SELECT * FROM " + schema + ".TAB_SCHEDULER_FILA WHERE id = :id",
                            conn))
                {
                    cmd.Parameters.Add(new OracleParameter("id", id));

                    using (var dr = cmd.ExecuteReader())
                    {
                        while (dr.Read())
                        {
                            item = new ItemFila
                            {
                                Id             = Convert.ToInt32(dr["id"]),
                                Requisitante   = Convert.ToInt32(dr["requisitante"]),
                                Empreendimento = Convert.ToInt32(dr["empreendimento"]),
                                Requisicao     = Convert.ToString(dr["requisicao"])
                            };
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                Log.Error("Erro ao conectar ao Banco de dados:" + exception.Message, exception);
            }

            return(item);
        }
Exemple #16
0
        private static void InserirHistoricoControleCar(OracleConnection conn, RequisicaoJobCar requisicao, string tid, MensagemRetorno resultado)
        {
            var schema = CarUtils.GetEsquemaInstitucional();

            var item = ObterItemControleCar(conn, requisicao);

            var sqlBuilder = new StringBuilder();

            sqlBuilder.Append("INSERT INTO " + schema + ".HST_CONTROLE_SICAR ");
            sqlBuilder.Append("(id,tid,empreendimento,empreendimento_tid,solicitacao_car,solicitacao_car_tid,situacao_envio,");
            sqlBuilder.Append("chave_protocolo,data_gerado,data_envio,arquivo,pendencias,codigo_imovel,");
            sqlBuilder.Append("url_recibo,status_sicar,condicao,solicitacao_car_esquema,data_execucao,");
            sqlBuilder.Append("CODIGO_RESPOSTA, CODIGO_IMOVEL_MASC, MENSAGEM_RESPOSTA)");
            sqlBuilder.Append(" values ");
            sqlBuilder.Append("(" + schema + ".SEQ_HST_CONTROLE_SICAR.nextval,:tid,:empreendimento,:empreendimento_tid,");
            sqlBuilder.Append(":solicitacao_car,:solicitacao_car_tid,:situacao_envio,:chave_protocolo,");
            sqlBuilder.Append(":data_gerado,:data_envio,:arquivo,:pendencias,:codigo_imovel,");
            sqlBuilder.Append(":url_recibo,:status_sicar,:condicao,:solicitacao_car_esquema,CURRENT_TIMESTAMP, :CODIGO_RESPOSTA, :CODIGO_IMOVEL_MASC, :MENSAGEM_RESPOSTA)");

            var mensagensDeResposta = String.Empty;

            if (resultado.mensagensResposta == null)
            {
                mensagensDeResposta = "Erro de conexão com o SICAR, será feita uma nova tentativa ; ";
                //situacaoEnvio = SITUACAO_ENVIO_ARQUIVO_REPROVADO;
            }
            else
            {
                foreach (var men in resultado.mensagensResposta)
                {
                    mensagensDeResposta = String.Concat(mensagensDeResposta, men);
                    mensagensDeResposta = String.Concat(mensagensDeResposta, "  ;  ");
                }
            }
            try
            {
                if (item == null)
                {
                    throw new Exception("ITEM NULO !!!");
                }

                using (var cmd = new OracleCommand(sqlBuilder.ToString(), conn))
                {
                    cmd.Parameters.Add(new OracleParameter("tid", tid));
                    cmd.Parameters.Add(new OracleParameter("empreendimento", item.empreendimento));
                    cmd.Parameters.Add(new OracleParameter("empreendimento_tid", item.empreendimento_tid));
                    cmd.Parameters.Add(new OracleParameter("solicitacao_car", item.solicitacao_car));
                    cmd.Parameters.Add(new OracleParameter("solicitacao_car_tid", tid));                    //item.solicitacao_car_tid));
                    cmd.Parameters.Add(new OracleParameter("situacao_envio", item.situacao_envio));
                    cmd.Parameters.Add(new OracleParameter("chave_protocolo", item.chave_protocolo));
                    cmd.Parameters.Add(new OracleParameter("data_gerado", item.data_gerado));
                    cmd.Parameters.Add(new OracleParameter("data_envio", item.data_envio));
                    cmd.Parameters.Add(new OracleParameter("arquivo", item.arquivo));
                    cmd.Parameters.Add(new OracleParameter("pendencias", item.pendencias));
                    cmd.Parameters.Add(new OracleParameter("codigo_imovel", item.codigo_imovel));
                    cmd.Parameters.Add(new OracleParameter("url_recibo", item.url_recibo));
                    cmd.Parameters.Add(new OracleParameter("status_sicar", item.status_sicar));
                    cmd.Parameters.Add(new OracleParameter("condicao", item.condicao));
                    cmd.Parameters.Add(new OracleParameter("solicitacao_car_esquema", item.solicitacao_car_esquema));

                    cmd.Parameters.Add(new OracleParameter("codigo_resposta", resultado.codigoResposta));
                    cmd.Parameters.Add(new OracleParameter("codigo_imovel_masc", resultado.codigoImovelComMascara));
                    cmd.Parameters.Add(new OracleParameter("mensagem_resposta", mensagensDeResposta));
                    //cmd.Parameters.Add(new OracleParameter("mensagem_resposta", resultado.mensagensResposta));

                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception exception)
            {
                Log.Error("Requisicao: " + (requisicao != null ? JsonConvert.SerializeObject(requisicao) : " IS NULL"), exception);
            }
        }
Exemple #17
0
        public static int AtualizarControleSICarRetificacao(OracleConnection conn, MensagemRetorno resultado, ItemControleCar item, int situacaoEnvio, int solicitacaoRetificadora, string tid, string arquivoCar = "", string tipo = "")
        {
            var schema = CarUtils.GetEsquemaInstitucional();

            var pendencias          = " Solicitação retificada pela solicitação : " + solicitacaoRetificadora;
            var condicao            = "Aguardando Análise";
            var mensagensDeResposta = pendencias;


            var sqlBuilder = new StringBuilder();

            sqlBuilder.Append("UPDATE " + schema + ".TAB_CONTROLE_SICAR SET ");
            //sqlBuilder.Append("tid = :tid,");
            sqlBuilder.Append("situacao_envio = :situacao_envio,");
            sqlBuilder.Append("chave_protocolo = :chave_protocolo,");

            if (tipo.Equals("gerar-car"))
            {
                sqlBuilder.Append("data_gerado = CURRENT_TIMESTAMP,");
            }
            //if (situacaoEnvio == SITUACAO_ENVIO_ARQUIVO_ENTREGUE)
            else
            {
                sqlBuilder.Append("data_envio = CURRENT_TIMESTAMP,");
            }
            if (arquivoCar != "")
            {
                sqlBuilder.Append("arquivo = '" + arquivoCar + "',");
            }

            sqlBuilder.Append("pendencias = :pendencias,");
            if (!String.IsNullOrWhiteSpace(resultado.codigoImovel))
            {
                sqlBuilder.Append("codigo_imovel = :codigo_imovel,");
            }
            if (!String.IsNullOrWhiteSpace(resultado.urlReciboInscricao))
            {
                sqlBuilder.Append("url_recibo = :url_recibo,");
            }
            sqlBuilder.Append("status_sicar = :status_sicar,");
            sqlBuilder.Append("condicao = :condicao,");

            sqlBuilder.Append("CODIGO_RESPOSTA = :codigo_resposta, ");
            sqlBuilder.Append("CODIGO_IMOVEL_MASC = :codigo_imovel_masc, ");
            sqlBuilder.Append("MENSAGEM_RESPOSTA = :mensagem_resposta ");
            sqlBuilder.Append(" WHERE solicitacao_car = :id");

            try
            {
                using (var cmd = new OracleCommand(sqlBuilder.ToString(), conn))
                {
                    //cmd.Parameters.Add(new OracleParameter("tid", item.solicitacao_car_anterior_tid));
                    cmd.Parameters.Add(new OracleParameter("situacao_envio", SITUACAO_ENVIO_ARQUIVO_RETIFICADO));
                    cmd.Parameters.Add(new OracleParameter("chave_protocolo", resultado.protocoloImovel));
                    cmd.Parameters.Add(new OracleParameter("pendencias", pendencias));
                    if (!String.IsNullOrWhiteSpace(resultado.codigoImovel))
                    {
                        cmd.Parameters.Add(new OracleParameter("codigo_imovel", resultado.codigoImovel));
                    }
                    if (!String.IsNullOrWhiteSpace(resultado.urlReciboInscricao))
                    {
                        cmd.Parameters.Add(new OracleParameter("url_recibo", resultado.urlReciboInscricao));
                    }
                    cmd.Parameters.Add(new OracleParameter("status_sicar", "IN"));
                    cmd.Parameters.Add(new OracleParameter("condicao", condicao));

                    cmd.Parameters.Add(new OracleParameter("codigo_resposta", resultado.codigoResposta));
                    cmd.Parameters.Add(new OracleParameter("codigo_imovel_masc", resultado.codigoImovelComMascara));

                    cmd.Parameters.Add(new OracleParameter("mensagem_resposta", mensagensDeResposta));
                    //cmd.Parameters.Add(new OracleParameter("mensagem_resposta", resultado.mensagensResposta));
                    cmd.Parameters.Add(new OracleParameter("solicitacao_car", item.solicitacao_car_anterior));

                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception exception)
            {
                Log.Error("Erro ao conectar ao Banco de dados:" + exception.Message, exception);
            }

            RequisicaoJobCar requisicao = new RequisicaoJobCar();

            requisicao.empreendimento      = item.empreendimento;
            requisicao.empreendimento_tid  = item.empreendimento_tid;
            requisicao.solicitacao_car     = item.solicitacao_car_anterior;
            requisicao.solicitacao_car_tid = item.solicitacao_car_anterior_tid;

            //Inserir no Histórico
            InserirHistoricoControleCar(conn, requisicao, tid, resultado);
            if (item == null)
            {
                return(0);
            }
            return(item.id);
        }
Exemple #18
0
        public static int AtualizarControleSICAR(OracleConnection conn, MensagemRetorno resultado, RequisicaoJobCar requisicao, int situacaoEnvio, string tid, string arquivoCar = "")
        {
            var schema = CarUtils.GetEsquemaInstitucional();

            var item = ObterItemControleCar(conn, requisicao);

            var pendencias = "";
            var condicao   = "Aguardando Análise";

            if (resultado == null)
            {
                resultado = new MensagemRetorno {
                    mensagensResposta = new List <string>()
                };
            }
            else
            {
                if (resultado.codigoResposta != MensagemRetorno.CodigoRespostaSucesso)
                {
                    if (resultado.mensagensResposta.Count > 0)
                    {
                        pendencias    = resultado.mensagensResposta.Aggregate("", (current, resposta) => current + (resposta + ";"));
                        situacaoEnvio = SITUACAO_ENVIO_ARQUIVO_REPROVADO;
                    }
                    else
                    {
                        situacaoEnvio = SITUACAO_ENVIO_ARQUIVO_ENTREGUE;
                    }
                    //pendencias = pendencias.Replace("O arquivo especificado contém informações inválidas.;", "");
                }
            }

            var sqlBuilder = new StringBuilder();

            sqlBuilder.Append("UPDATE " + schema + ".TAB_CONTROLE_SICAR SET ");
            sqlBuilder.Append("tid = :tid,");
            sqlBuilder.Append("situacao_envio = :situacao_envio,");
            sqlBuilder.Append("chave_protocolo = :chave_protocolo,");

            if (situacaoEnvio == SITUACAO_ENVIO_ARQUIVO_ENTREGUE)
            {
                sqlBuilder.Append("data_envio = CURRENT_TIMESTAMP,");
            }
            if (arquivoCar != "")
            {
                sqlBuilder.Append("arquivo = '" + arquivoCar + "',");
            }

            sqlBuilder.Append("pendencias = :pendencias,");
            sqlBuilder.Append("codigo_imovel = :codigo_imovel,");
            sqlBuilder.Append("url_recibo = :url_recibo,");
            sqlBuilder.Append("status_sicar = :status_sicar,");
            sqlBuilder.Append("condicao = :condicao");
            sqlBuilder.Append(" WHERE id = :id");

            try
            {
                using (var cmd = new OracleCommand(sqlBuilder.ToString(), conn))
                {
                    cmd.Parameters.Add(new OracleParameter("tid", tid));
                    cmd.Parameters.Add(new OracleParameter("situacao_envio", situacaoEnvio));
                    cmd.Parameters.Add(new OracleParameter("chave_protocolo", resultado.protocoloImovel));
                    cmd.Parameters.Add(new OracleParameter("pendencias", pendencias));
                    cmd.Parameters.Add(new OracleParameter("codigo_imovel", resultado.codigoImovel));
                    cmd.Parameters.Add(new OracleParameter("url_recibo", resultado.urlReciboInscricao));
                    cmd.Parameters.Add(new OracleParameter("status_sicar", "IN"));
                    cmd.Parameters.Add(new OracleParameter("condicao", condicao));
                    cmd.Parameters.Add(new OracleParameter("id", item.id));

                    cmd.ExecuteNonQuery();
                }
            }
            catch (Exception exception)
            {
                Log.Error("Erro ao conectar ao Banco de dados:" + exception.Message, exception);
            }

            //Inserir no Histórico
            InserirHistoricoControleCar(conn, requisicao, tid);

            return(item.id);
        }
        /// <summary>
        /// Called by the <see cref="T:Quartz.IScheduler" /> when a <see cref="T:Quartz.ITrigger" />
        /// fires that is associated with the <see cref="T:Quartz.IJob" />.
        /// </summary>
        /// <param name="context">The execution context.</param>
        /// <remarks>
        /// The implementation may wish to set a  result object on the
        /// JobExecutionContext before this method exits.  The result itself
        /// is meaningless to Quartz, but may be informative to
        /// <see cref="T:Quartz.IJobListener" />s or
        /// <see cref="T:Quartz.ITriggerListener" />s that are watching the job's
        /// execution.
        /// </remarks>
        public async void Execute(IJobExecutionContext context)
        {
            //logging
            var jobKey = context.JobDetail.Key;

            Log.InfoFormat("BEGIN {0} executing at {1}", jobKey, DateTime.Now.ToString("r"));

            using (var conn = new OracleConnection(CarUtils.GetBancoInstitucional()))
            {
                conn.Open();
                string tid = string.Empty;

                var pathArquivoTemporario = new ArquivoManager().BuscarDiretorioArquivoTemporario(conn);

                if (!pathArquivoTemporario.EndsWith("\\"))
                {
                    pathArquivoTemporario += "\\";
                }
                pathArquivoTemporario += "SICAR\\";

                //Veja se
                var nextItem = LocalDB.PegarProximoItemFila(conn, "enviar-car");

                while (nextItem != null)
                {
                    //Update item as Started
                    //LocalDB.MarcarItemFilaIniciado(conn, nextItem.Id);

                    var item = LocalDB.PegarItemFilaPorId(conn, nextItem.Requisitante);

                    var requisicao = JsonConvert.DeserializeObject <RequisicaoJobCar>(item.Requisicao);
                    tid = Blocos.Data.GerenciadorTransacao.ObterIDAtual();

                    string resultado = "";
                    try
                    {
                        //Atualizar controle de envio do SICAR
                        ControleCarDB.AtualizarControleSICAR(conn, null, requisicao, ControleCarDB.SITUACAO_ENVIO_ENVIANDO, tid);
                        var controleCar = ControleCarDB.ObterItemControleCar(conn, requisicao);

                        var dataCadastroEstadual = ControleCarDB.ObterDataSolicitacao(conn, requisicao.solicitacao_car, requisicao.origem);

                        resultado = await EnviarArquivoCAR(pathArquivoTemporario + nextItem.Requisicao, dataCadastroEstadual);

                        var resultadoEnvio = JsonConvert.DeserializeObject <MensagemRetorno>(resultado);

                        if (resultadoEnvio.codigoResposta == MensagemRetorno.CodigoRespostaErro)
                        {
                            resultado = await EnviarArquivoCAR(pathArquivoTemporario + nextItem.Requisicao, dataCadastroEstadual);

                            resultadoEnvio = JsonConvert.DeserializeObject <MensagemRetorno>(resultado);
                        }

                        //Salvar no diretorio de arquivos do SIMLAM Institucional
                        string arquivoFinal;
                        using (var stream = File.Open(pathArquivoTemporario + nextItem.Requisicao, FileMode.Open, FileAccess.Read, FileShare.Read))
                        {
                            var arquivoManager = new ArquivoManager();
                            arquivoFinal = arquivoManager.Salvar(nextItem.Requisicao, stream, conn);
                        }


                        if (resultadoEnvio.codigoResposta == MensagemRetorno.CodigoRespostaErro ||
                            (resultadoEnvio.codigoResposta == MensagemRetorno.CodigoRespostaInconformidade &&
                             resultadoEnvio.mensagensResposta.Any(r => r.Equals("Foi encontrada sobreposição de 100,00% com outro imóvel já inscrito no CAR que possui os mesmos documentos (CPF e/ou CNPJ).", StringComparison.CurrentCultureIgnoreCase))))
                        {
                            LocalDB.AdicionarItemFila(conn, "revisar-resposta-car", item.Id, nextItem.Requisicao.Substring(0, nextItem.Requisicao.Length - 4), requisicao.empreendimento);
                        }
                        else
                        {
                            //Atualiza a Solicitacao do CAR
                            var situacaoSolicitacao = (resultadoEnvio.codigoResposta == MensagemRetorno.CodigoRespostaSucesso) ? ControleCarDB.SITUACAO_SOLICITACAO_VALIDO : ControleCarDB.SITUACAO_SOLICITACAO_PENDENTE;
                            ControleCarDB.AtualizarSolicitacaoCar(conn, requisicao, situacaoSolicitacao, tid);

                            //Atualizar controle de envio do SICAR
                            ControleCarDB.AtualizarControleSICAR(conn, resultadoEnvio, requisicao, ControleCarDB.SITUACAO_ENVIO_ARQUIVO_ENTREGUE, tid, arquivoFinal);
                        }

                        //Marcar como processado
                        LocalDB.MarcarItemFilaTerminado(conn, nextItem.Id, true, resultado);
                    }
                    catch (Exception ex)
                    {
                        //Marcar como processado registrando a mensagem de erro
                        var msg = ex.Message +
                                  Environment.NewLine +
                                  Environment.NewLine +
                                  resultado;

                        LocalDB.MarcarItemFilaTerminado(conn, nextItem.Id, false, msg);
                        ControleCarDB.AtualizarSolicitacaoCar(conn, requisicao.origem, requisicao.solicitacao_car, ControleCarDB.SITUACAO_SOLICITACAO_PENDENTE, tid);
                        ControleCarDB.AtualizarControleSICAR(conn, null, requisicao, ControleCarDB.SITUACAO_ENVIO_ARQUIVO_REPROVADO, tid);
                    }

                    System.Threading.Thread.Sleep(TimeSpan.FromSeconds(30));

                    nextItem = LocalDB.PegarProximoItemFila(conn, "enviar-car");

                    //Apagar arquivo do diretorio temporário
                    //TODO:NÃO VAI
                    //try
                    //{
                    //	File.Delete(pathArquivoTemporario + nextItem.Requisicao);
                    //}
                    //catch (Exception) { /*ignored*/ }
                }
            }

            Log.InfoFormat("ENDING {0} executing at {1}", jobKey, DateTime.Now.ToString("r"));
        }
        public void callProcedures(int origem, OracleConnection conn)
        {
            /*
             * Função que chamaria as procedures para gerar as APP Calculadas e APP escadinha dos passivos, mas foram geradas via script
             */

            var listEmpreendimento = GetEmpreendimento(origem, conn);

            foreach (int solicitacaoEmp in listEmpreendimento)
            {
                try
                {
                    #region Carga das tabelas APP Caculada e APP Escadinha
                    var qtdModuloFiscal = 0.0;

                    string buildSQL = "SELECT ATP_QTD_MODULO_FISCAL FROM CRT_CAD_AMBIENTAL_RURAL WHERE EMPREENDIMENTO = :empreendimentoID";

                    using (OracleCommand command = new OracleCommand(buildSQL, conn))
                    {
                        command.Parameters.Add(new OracleParameter("empreendimentoID", solicitacaoEmp));
                        using (var reader = command.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                qtdModuloFiscal = Convert.ToDouble(reader["ATP_QTD_MODULO_FISCAL"]);
                            }

                            reader.Close();
                        }
                    }
                    if (origem == 1)
                    {
                        #region Chamada Procedure
                        using (var connInst = new OracleConnection(CarUtils.GetBancoInstitucionalGeo()))
                        {
                            connInst.Open();
                            OracleCommand     command = connInst.CreateCommand();
                            OracleTransaction transaction;

                            // Start a local transaction
                            transaction = connInst.BeginTransaction(IsolationLevel.Serializable);
                            // Assign transaction object for a pending local transaction
                            command.Transaction = transaction;
                            command.CommandText = "BEGIN OPERACOESPROCESSAMENTOGEO.CalcularAppClassificadaCAR(:emp); END;";

                            command.Parameters.Add(new OracleParameter("emp", solicitacaoEmp));

                            command.ExecuteNonQuery();

                            transaction.Commit();

                            connInst.Close();
                        }

                        using (var connInst = new OracleConnection(CarUtils.GetBancoInstitucionalGeo()))
                        {
                            connInst.Open();
                            OracleCommand     command = connInst.CreateCommand();
                            OracleTransaction transaction;

                            // Start a local transaction
                            transaction = connInst.BeginTransaction(IsolationLevel.Serializable);
                            // Assign transaction object for a pending local transaction
                            command.Transaction = transaction;
                            command.CommandText = "BEGIN OPERACOESPROCESSAMENTOGEO.CalcularEscadinhaCAR(:emp, :moduloFiscal); END;";

                            command.Parameters.Add(new OracleParameter("emp", solicitacaoEmp));
                            command.Parameters.Add(new OracleParameter("moduloFiscal", qtdModuloFiscal));

                            command.ExecuteNonQuery();
                            transaction.Commit();

                            connInst.Close();
                        }
                        #endregion
                    }
                    else
                    {
                        #region Chamada Procedure
                        using (var connCred = new OracleConnection(CarUtils.GetEsquemaCredenciadoGeo()))
                        {
                            connCred.Open();
                            OracleCommand     command = connCred.CreateCommand();
                            OracleTransaction transaction;

                            // Start a local transaction
                            transaction = connCred.BeginTransaction(IsolationLevel.Serializable);
                            // Assign transaction object for a pending local transaction
                            command.Transaction = transaction;
                            //connInst.BeginTransaction();
                            command.CommandText = "BEGIN OPERACOESPROCESSAMENTOGEO.CalcularAppClassificadaCAR(:emp); END;";
                            //using (OracleCommand command = new OracleCommand(sql, conn))
                            //{
                            command.Parameters.Add(new OracleParameter("emp", solicitacaoEmp));

                            command.ExecuteNonQuery();
                            transaction.Commit();

                            //bancoDeDados.Commit();
                            //}
                            command.Transaction = transaction;
                            //connInst.BeginTransaction();
                            command.CommandText = "BEGIN OPERACOESPROCESSAMENTOGEO.CalcularEscadinhaCAR(:emp, :moduloFiscal); END;";

                            //using (OracleCommand command = new OracleCommand(sql, conn))
                            //{
                            command.Parameters.Add(new OracleParameter("emp", solicitacaoEmp));
                            command.Parameters.Add(new OracleParameter("moduloFiscal", qtdModuloFiscal));

                            command.ExecuteNonQuery();
                            transaction.Commit();

                            //}

                            connCred.Close();
                        }
                        #endregion
                    }
                    #endregion
                }catch (Exception ex)
                {
                    string excecao = ex.Message;
                }
            }
        }
Exemple #21
0
        public static ItemControleCar ObterItemControleCar(OracleConnection conn, RequisicaoJobCar requisicao)
        {
            var schema = CarUtils.GetEsquemaInstitucional();
            var item   = new ItemControleCar();

            var sqlBuilder = new StringBuilder();

            sqlBuilder.Append("SELECT T.ID, T.TID, T.EMPREENDIMENTO, T.EMPREENDIMENTO_TID,T.SOLICITACAO_CAR, T.SOLICITACAO_CAR_TID,  ");
            sqlBuilder.Append("T.SITUACAO_ENVIO, T.CHAVE_PROTOCOLO,T.DATA_GERADO,T.DATA_ENVIO,T.PENDENCIAS,T.CODIGO_IMOVEL, ");
            sqlBuilder.Append("T.URL_RECIBO,T.STATUS_SICAR,T.CONDICAO,T.SOLICITACAO_CAR_ESQUEMA,NVL(T.SOLICITACAO_PASSIVO, 0)SOLICITACAO_PASSIVO, ");
            sqlBuilder.Append("NVL(T.SOLICITACAO_SITUACAO_APROVADO, 2)SOLICITACAO_SITUACAO_APROVADO FROM " + schema + ".TAB_CONTROLE_SICAR t WHERE ");
            sqlBuilder.Append("t.empreendimento = :empreendimento /*AND t.empreendimento_tid = :empreendimento_tid */");
            sqlBuilder.Append("AND t.solicitacao_car = :solicitacao_car /*AND t.solicitacao_car_tid = :solicitacao_car_tid */");
            sqlBuilder.Append("AND rownum = 1 ORDER BY id DESC");

            try
            {
                if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed)
                {
                    Log.Error("ObterItemControleCar: Conexão fechada ou quebrada.");
                }

                using (var cmd = new OracleCommand(sqlBuilder.ToString(), conn))
                {
                    cmd.Parameters.Add(new OracleParameter("empreendimento", requisicao.empreendimento));
                    //cmd.Parameters.Add(new OracleParameter("empreendimento_tid", requisicao.empreendimento_tid));
                    cmd.Parameters.Add(new OracleParameter("solicitacao_car", requisicao.solicitacao_car));
                    //cmd.Parameters.Add(new OracleParameter("solicitacao_car_tid", requisicao.solicitacao_car_tid));

                    using (var dr = cmd.ExecuteReader())
                    {
                        if (!dr.Read())
                        {
                            if (dr.IsClosed)
                            {
                                Log.Error(String.Concat("ObterItemControleCar: dr is closed. ", " - Estado da conexão: ", conn.State.ToString()));
                            }
                            else if (!dr.HasRows)
                            {
                                Log.Error(String.Concat("ObterItemControleCar: consulta não retornou resultado. empreendimento: ", requisicao.empreendimento,
                                                        " - solicitacao_car: ", requisicao.solicitacao_car, " - Estado da conexão: ", conn.State.ToString()));
                            }
                            else
                            {
                                Log.Error(String.Concat("ObterItemControleCar: não foi possível ler a consulta. ", " - Estado da conexão: ", conn.State.ToString()));
                            }

                            return(null);
                        }


                        item = new ItemControleCar()
                        {
                            id                            = dr.GetValue <Int32>("id"),
                            tid                           = dr.GetValue <string>("tid"),
                            empreendimento                = dr.GetValue <Int32>("empreendimento"),
                            empreendimento_tid            = dr.GetValue <string>("empreendimento_tid"),
                            solicitacao_car               = dr.GetValue <Int32>("solicitacao_car"),
                            solicitacao_car_tid           = dr.GetValue <string>("solicitacao_car_tid"),
                            situacao_envio                = dr.GetValue <int>("situacao_envio"),
                            chave_protocolo               = dr.GetValue <string>("chave_protocolo"),
                            data_gerado                   = dr.GetValue <DateTime>("data_gerado"),
                            data_envio                    = dr.GetValue <DateTime>("data_envio"),
                            pendencias                    = dr.GetValue <string>("pendencias"),
                            codigo_imovel                 = dr.GetValue <string>("codigo_imovel"),
                            url_recibo                    = dr.GetValue <string>("url_recibo"),
                            status_sicar                  = dr.GetValue <string>("status_sicar"),
                            condicao                      = dr.GetValue <string>("condicao"),
                            solicitacao_car_esquema       = dr.GetValue <int>("solicitacao_car_esquema"),
                            solicitacao_passivo           = Convert.ToInt32(dr["solicitacao_passivo"]),
                            solicitacao_situacao_aprovado = Convert.ToInt32(dr["solicitacao_situacao_aprovado"]),
                        };
                    }
                }
            }
            catch (Exception exception)
            {
                Log.Error("Erro ao conectar ao Banco de dados:" + exception.Message, exception);
            }

            return(item);
        }
Exemple #22
0
        public static int AtualizarControleSICAR(OracleConnection conn, MensagemRetorno resultado, RequisicaoJobCar requisicao, int situacaoEnvio, string tid, string arquivoCar = "", string tipo = "", bool catchEnviar = false, string codigoProtocolo = "")
        {
            var schema = CarUtils.GetEsquemaInstitucional();

            var item = ObterItemControleCar(conn, requisicao);

            var pendencias          = "";
            var condicao            = "Aguardando Análise";
            var mensagensDeResposta = String.Empty;
            var mensagemErro        = "";

            if (resultado == null)
            {
                resultado = new MensagemRetorno {
                    mensagensResposta = new List <string>()
                };
            }
            else
            {
                if (resultado.mensagensResposta == null)
                {
                    mensagensDeResposta = "Erro de conexão com o SICAR, será feita uma nova tentativa ; ";
                    situacaoEnvio       = SITUACAO_ENVIO_ARQUIVO_REPROVADO;
                }
                else
                {
                    if (resultado.codigoResposta != MensagemRetorno.CodigoRespostaSucesso)
                    {
                        if (resultado.mensagensResposta.Count > 1 ||
                            (tipo.Equals("gerar-car") && resultado.mensagensResposta.Count >= 1) ||
                            resultado.codigoResposta == 400 ||
                            resultado.codigoResposta == 500)
                        {
                            resultado.mensagensResposta = TratandoMensagens(conn, resultado.mensagensResposta);
                            pendencias    = resultado.mensagensResposta.Aggregate("", (current, resposta) => current + (resposta + " ; "));
                            situacaoEnvio = SITUACAO_ENVIO_ARQUIVO_REPROVADO;
                        }
                        else
                        {
                            situacaoEnvio = SITUACAO_ENVIO_ARQUIVO_ENTREGUE;
                        }
                        //pendencias = pendencias.Replace("O arquivo especificado contém informações inválidas.;", "");
                    }
                    foreach (var men in resultado.mensagensResposta)
                    {
                        mensagensDeResposta = String.Concat(mensagensDeResposta, men);
                        mensagensDeResposta = String.Concat(mensagensDeResposta, "  ;  ");

                        if (men.Contains("sobreposição") && men.Contains("100"))
                        {
                            mensagemErro = men;
                        }
                    }
                }
            }

            var sqlBuilder = new StringBuilder();

            sqlBuilder.Append("UPDATE " + schema + ".TAB_CONTROLE_SICAR SET ");
            sqlBuilder.Append("tid = :tid,");
            sqlBuilder.Append("situacao_envio = :situacao_envio,");
            sqlBuilder.Append("chave_protocolo = :chave_protocolo,");

            if (tipo.Equals("gerar-car"))
            {
                sqlBuilder.Append("data_gerado = CURRENT_TIMESTAMP,");
            }
            //if (situacaoEnvio == SITUACAO_ENVIO_ARQUIVO_ENTREGUE)
            else
            {
                sqlBuilder.Append("data_envio = CURRENT_TIMESTAMP,");
            }
            if (arquivoCar != "")
            {
                sqlBuilder.Append("arquivo = '" + arquivoCar + "',");
            }

            sqlBuilder.Append("pendencias = :pendencias,");
            if (!String.IsNullOrWhiteSpace(resultado.codigoImovel))
            {
                sqlBuilder.Append("codigo_imovel = :codigo_imovel,");
            }
            if (!String.IsNullOrWhiteSpace(resultado.urlReciboInscricao))
            {
                sqlBuilder.Append("url_recibo = :url_recibo,");
            }
            sqlBuilder.Append("status_sicar = :status_sicar,");
            sqlBuilder.Append("condicao = :condicao,");
            if (!String.IsNullOrWhiteSpace(codigoProtocolo))
            {
                sqlBuilder.Append("chave_protocolo_enviado = :chave_protocolo_enviado,");
            }

            sqlBuilder.Append("CODIGO_RESPOSTA = :codigo_resposta, ");
            sqlBuilder.Append("CODIGO_IMOVEL_MASC = :codigo_imovel_masc, ");
            sqlBuilder.Append("MENSAGEM_RESPOSTA = :mensagem_resposta ");
            sqlBuilder.Append(" WHERE id = :id");

            try
            {
                using (var cmd = new OracleCommand(sqlBuilder.ToString(), conn))
                {
                    cmd.Parameters.Add(new OracleParameter("tid", tid));
                    cmd.Parameters.Add(new OracleParameter("situacao_envio", situacaoEnvio));
                    cmd.Parameters.Add(new OracleParameter("chave_protocolo", resultado.protocoloImovel));
                    if (catchEnviar)
                    {
                        string pendencia = "Falha na integração, comunique o administrador do sistema";
                        cmd.Parameters.Add(new OracleParameter("pendencias", pendencia));
                    }
                    else
                    {
                        cmd.Parameters.Add(new OracleParameter("pendencias", mensagensDeResposta));
                    }

                    if (!String.IsNullOrWhiteSpace(resultado.codigoImovel))
                    {
                        cmd.Parameters.Add(new OracleParameter("codigo_imovel", resultado.codigoImovel));
                    }
                    if (!String.IsNullOrWhiteSpace(resultado.urlReciboInscricao))
                    {
                        cmd.Parameters.Add(new OracleParameter("url_recibo", resultado.urlReciboInscricao));
                    }
                    cmd.Parameters.Add(new OracleParameter("status_sicar", "IN"));
                    cmd.Parameters.Add(new OracleParameter("condicao", condicao));
                    if (!String.IsNullOrWhiteSpace(codigoProtocolo))
                    {
                        cmd.Parameters.Add(new OracleParameter("chave_protocolo_enviado", codigoProtocolo));
                    }

                    cmd.Parameters.Add(new OracleParameter("codigo_resposta", resultado.codigoResposta));
                    cmd.Parameters.Add(new OracleParameter("codigo_imovel_masc", resultado.codigoImovelComMascara));

                    cmd.Parameters.Add(new OracleParameter("mensagem_resposta", mensagensDeResposta));
                    cmd.Parameters.Add(new OracleParameter("id", item?.id));

                    cmd.ExecuteNonQuery();
                }
                //Inserir no Histórico
                InserirHistoricoControleCar(conn, requisicao, tid, resultado);

                //if (!String.IsNullOrWhiteSpace(mensagemErro) && item != null)
                //	VerificarListaCodigoImovel(conn, schema, mensagemErro, item.solicitacao_car, item.empreendimento, requisicao.origem, requisicao, tid);
            }
            catch (Exception exception)
            {
                Log.Error("Erro ao conectar ao Banco de dados:" + exception.Message, exception);
            }

            if (item == null)
            {
                return(0);
            }

            return(item.id);
        }
Exemple #23
0
        /// <summary>
        /// Called by the <see cref="T:Quartz.IScheduler" /> when a <see cref="T:Quartz.ITrigger" />
        /// fires that is associated with the <see cref="T:Quartz.IJob" />.
        /// </summary>
        /// <param name="context">The execution context.</param>
        /// <remarks>
        /// The implementation may wish to set a  result object on the
        /// JobExecutionContext before this method exits.  The result itself
        /// is meaningless to Quartz, but may be informative to
        /// <see cref="T:Quartz.IJobListener" />s or
        /// <see cref="T:Quartz.ITriggerListener" />s that are watching the job's
        /// execution.
        /// </remarks>
        public async void Execute(IJobExecutionContext context)
        {
            //logging
            var jobKey = context.JobDetail.Key;

            Log.InfoFormat("BEGIN {0} executing at {1}", jobKey, DateTime.Now.ToString("r"));

            using (var conn = new OracleConnection(CarUtils.GetBancoInstitucional()))
            {
                conn.Open();
                string tid = string.Empty;

                var pathArquivoTemporario = new ArquivoManager().BuscarDiretorioArquivoTemporario(conn);

                if (!pathArquivoTemporario.EndsWith("\\"))
                {
                    pathArquivoTemporario += "\\";
                }
                pathArquivoTemporario += "SICAR\\";

                //Veja se
                var nextItem = LocalDB.PegarProximoItemFila(conn, "enviar-car");

                while (nextItem != null)
                {
                    //Update item as Started
                    LocalDB.MarcarItemFilaIniciado(conn, nextItem.Id);

                    var item = LocalDB.PegarItemFilaPorId(conn, nextItem.Requisitante);


                    if (String.IsNullOrEmpty(item.Requisicao))
                    {
                        nextItem = LocalDB.PegarProximoItemFila(conn, "enviar-car");
                        continue;
                    }
                    var requisicao = JsonConvert.DeserializeObject <RequisicaoJobCar>(item.Requisicao);
                    tid = Blocos.Data.GerenciadorTransacao.ObterIDAtual();

                    if (ControleCarDB.VerificarCarValido(conn, requisicao.solicitacao_car))
                    {
                        nextItem = LocalDB.PegarProximoItemFila(conn, "enviar-car");
                        continue;
                    }

                    string resultado = "";
                    try
                    {
                        //Atualizar controle de envio do SICAR
                        ControleCarDB.AtualizarSolicitacaoCar(conn, requisicao.origem, requisicao.solicitacao_car, ControleCarDB.SITUACAO_ENVIO_AGUARDANDO_ENVIO, tid);
                        ControleCarDB.AtualizarControleSICAR(conn, null, requisicao, ControleCarDB.SITUACAO_ENVIO_ENVIANDO, tid);
                        //var controleCar = ControleCarDB.ObterItemControleCar(conn, requisicao);

                        var dataCadastroEstadual = ControleCarDB.ObterDataSolicitacao(conn, requisicao.solicitacao_car, requisicao.origem);

                        resultado = await EnviarArquivoCAR(pathArquivoTemporario + nextItem.Requisicao, dataCadastroEstadual, requisicao.solicitacao_car);

                        if (String.IsNullOrWhiteSpace(resultado) || resultado.Contains("task was canceled"))
                        {
                            throw new System.ArgumentException("Erro de conexão com o SICAR, será feita uma nova tentativa ;", "resultado");
                        }
                        var resultadoEnvio = JsonConvert.DeserializeObject <MensagemRetorno>(resultado);


                        //Salvar no diretorio de arquivos do SIMLAM Institucional
                        string arquivoFinal;
                        using (var stream = File.Open(pathArquivoTemporario + nextItem.Requisicao, FileMode.Open, FileAccess.Read, FileShare.Read))
                        {
                            var arquivoManager = new ArquivoManager();
                            arquivoFinal = arquivoManager.Salvar(nextItem.Requisicao, stream, conn);
                        }

                        //Retificação
                        ItemControleCar itemSicar = ControleCarDB.ObterItemControleCarRetificacao(conn, requisicao);

                        if (itemSicar != null)
                        {
                            if (itemSicar.solicitacao_car_anterior > 0 && resultadoEnvio.codigoResposta == MensagemRetorno.CodigoRespostaSucesso)
                            {
                                ControleCarDB.AtualizarSolicitacaoCarRetificacao(conn, itemSicar.solicitacao_car_anterior_esquema, itemSicar.solicitacao_car_anterior, itemSicar.solicitacao_car_anterior_tid);
                                ControleCarDB.AtualizarControleSICarRetificacao(conn, resultadoEnvio, itemSicar, ControleCarDB.SITUACAO_ENVIO_ARQUIVO_ENTREGUE, requisicao.solicitacao_car, tid, arquivoFinal);
                            }
                        }
                        //Atualiza a Solicitacao do CAR
                        var situacaoSolicitacao = (resultadoEnvio.codigoResposta == MensagemRetorno.CodigoRespostaSucesso) ? ControleCarDB.SITUACAO_SOLICITACAO_VALIDO : ControleCarDB.SITUACAO_SOLICITACAO_PENDENTE;
                        ControleCarDB.AtualizarSolicitacaoCar(conn, requisicao, situacaoSolicitacao, tid);

                        //Atualizar controle de envio do SICAR
                        ControleCarDB.AtualizarControleSICAR(conn, resultadoEnvio, requisicao, ControleCarDB.SITUACAO_ENVIO_ARQUIVO_ENTREGUE, tid, arquivoCar: arquivoFinal);
                        //}

                        //Marcar como processado
                        LocalDB.MarcarItemFilaTerminado(conn, nextItem.Id, true, resultado);
                    }
                    catch (Exception ex)
                    {
                        //Marcar como processado registrando a mensagem de erro
                        var msg = " +++---+++ RESULTADO  :::: " +
                                  (resultado ?? "noMessage ++++   00----000  " + ex.Message +
                                   Environment.NewLine +
                                   Environment.NewLine);

                        LocalDB.MarcarItemFilaTerminado(conn, nextItem.Id, false, msg);
                        ControleCarDB.AtualizarSolicitacaoCar(conn, requisicao.origem, requisicao.solicitacao_car, ControleCarDB.SITUACAO_SOLICITACAO_PENDENTE, tid);
                        ControleCarDB.AtualizarControleSICAR(conn, new MensagemRetorno()
                        {
                            mensagensResposta = new List <string> {
                                ex.Message, ex.ToString(), resultado ?? ""
                            }
                        }, requisicao, ControleCarDB.SITUACAO_ENVIO_ARQUIVO_REPROVADO, tid, catchEnviar: true);
                        Log.Error("CATCH:" + nextItem.Requisicao + " ===== ++  " + ex.Message, ex);
                    }

                    System.Threading.Thread.Sleep(TimeSpan.FromSeconds(30));

                    nextItem = LocalDB.PegarProximoItemFila(conn, "enviar-car");

                    //Apagar arquivo do diretorio temporário
                    //TODO:NÃO VAI
                    //try
                    //{
                    //	File.Delete(pathArquivoTemporario + nextItem.Requisicao);
                    //}
                    //catch (Exception) { /*ignored*/ }
                }

                //using (var cmd = new OracleCommand(@"UPDATE IDAF.TAB_SCHEDULER_FILA SET DATA_CRIACAO = null
                //							WHERE resultado like '%Não está na hora especificada para o sincronismo do seu sistema. %'", conn))
                //{
                //	cmd.ExecuteNonQuery();
                //}
                //using (var cmd = new OracleCommand(@"UPDATE IDAF.TAB_SCHEDULER_FILA SET DATA_CRIACAO = null
                //							WHERE resultado like '%Value cannot be null.%'", conn))
                //{
                //	cmd.ExecuteNonQuery();
                //}
                //using (var cmd = new OracleCommand(@"UPDATE IDAF.TAB_SCHEDULER_FILA SET DATA_CRIACAO = null
                //							WHERE resultado like '%TCP%'", conn))
                //{
                //	cmd.ExecuteNonQuery();
                //}
                //using (var cmd = new OracleCommand(@"UPDATE IDAF.TAB_SCHEDULER_FILA SET DATA_CRIACAO = null
                //							WHERE resultado like '%Object reference%' AND TIPO = 'enviar-car'", conn))
                //{
                //	cmd.ExecuteNonQuery();
                //}
                //using (var cmd = new OracleCommand(@"UPDATE IDAF.TAB_SCHEDULER_FILA SET DATA_CRIACAO = null
                //							WHERE resultado like '%Houve um problema%'", conn))
                //{
                //	cmd.ExecuteNonQuery();
                //}
                //using (var cmd = new OracleCommand(@"UPDATE IDAF.TAB_SCHEDULER_FILA SET DATA_CRIACAO = null
                //							WHERE resultado like '%Erro de conexão com o SICAR%'", conn))
                //{
                //	cmd.ExecuteNonQuery();
                //}

                conn.Close();
            }



            Log.InfoFormat("ENDING {0} executing at {1}", jobKey, DateTime.Now.ToString("r"));
        }