diff --git a/src/main/java/com/seconectai/condocontab/Main.java b/src/main/java/com/seconectai/condocontab/Main.java index dc81d2a..709f877 100644 --- a/src/main/java/com/seconectai/condocontab/Main.java +++ b/src/main/java/com/seconectai/condocontab/Main.java @@ -83,6 +83,7 @@ public final class Main { router.prefix("/api/webhooks/evolution/respostas/", externalBridgeHandler); router.post("/api/integracao/mensagens", authMiddleware.exigirApiKey(externalBridgeHandler)); router.get("/api/integracao/respostas", authMiddleware.exigirApiKey(externalBridgeHandler)); + router.get("/api/integracao/evolution-instancia", authMiddleware.exigirApiKey(externalBridgeHandler)); router.prefix("/api/master/", authMiddleware.exigirMaster(masterHandlers)); router.prefix("/api/financeiro/", authMiddleware.exigirFuncionario(financeiroHandlers)); router.prefix("/api/", authMiddleware.exigirFuncionario(clienteHandlers)); diff --git a/src/main/java/com/seconectai/condocontab/integracao/ExternalBridgeHandler.java b/src/main/java/com/seconectai/condocontab/integracao/ExternalBridgeHandler.java index f726ab2..382cf0f 100644 --- a/src/main/java/com/seconectai/condocontab/integracao/ExternalBridgeHandler.java +++ b/src/main/java/com/seconectai/condocontab/integracao/ExternalBridgeHandler.java @@ -64,6 +64,10 @@ public final class ExternalBridgeHandler implements HttpHandler { consultarResposta(ex, (long) ex.getAttribute(AuthMiddleware.ATTR_EMPRESA_ID)); return; } + if ("/api/integracao/evolution-instancia".equals(path) && "GET".equals(method)) { + consultarEvolutionInstancia(ex, (long) ex.getAttribute(AuthMiddleware.ATTR_EMPRESA_ID)); + return; + } if ((path.equals("/api/webhooks/evolution/respostas") || path.startsWith("/api/webhooks/evolution/respostas/")) && "POST".equals(method)) { receberRespostaEvolution(ex); return; @@ -142,6 +146,28 @@ public final class ExternalBridgeHandler implements HttpHandler { } } + private void consultarEvolutionInstancia(HttpExchange ex, long empresaId) throws Exception { + try (Connection c = masterDs.getMasterConnection()) { + Map inst = one(c, "SELECT id, empresa_id, instance_url, instance_token_enc, numero_whatsapp, status, solicitado_em, aprovado_em FROM evolution_instancias WHERE empresa_id=? ORDER BY solicitado_em DESC,id DESC LIMIT 1", empresaId); + if (inst == null) { + HttpResponses.json(ex, 404, Map.of("erro", "instancia_nao_configurada")); + return; + } + String token = str(inst.get("instance_token_enc")); + String[] parts = token.split(":", 2); + Map out = new LinkedHashMap<>(); + out.put("id", inst.get("id")); + out.put("empresa_id", inst.get("empresa_id")); + out.put("instance_name", parts[0]); + out.put("instance_url", inst.get("instance_url")); + out.put("numero_whatsapp", inst.get("numero_whatsapp")); + out.put("status", inst.get("status")); + out.put("solicitado_em", inst.get("solicitado_em")); + out.put("aprovado_em", inst.get("aprovado_em")); + HttpResponses.json(ex, 200, Map.of("ok", true, "instancia", out)); + } + } + private void receberRespostaEvolution(HttpExchange ex) throws Exception { validarWebhookEvolution(ex); String raw = rawBody(ex);