One Hat Cyber Team
Your IP :
216.73.216.36
Server IP :
162.240.179.46
Server :
Linux vps-14493116.nutrivittasaude.com.br 5.14.0-611.49.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Apr 21 16:39:08 EDT 2026 x86_64
Server Software :
Apache
PHP Version :
8.2.31
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
lifeprimeti
/
meta.lifeprimeti.com.br
/
api
/
View File Name :
lembretes_processar.php
<?php require_once __DIR__ . '/../config/database.php'; $token = $_GET['token'] ?? ''; if ($token !== 'seu-token') { http_response_code(403); echo json_encode(['error' => 'Token invalido']); exit; } header('Content-Type: application/json; charset=utf-8'); $configs = $pdo->query("SELECT c.id as empresa_id, c.lembrete_ativo, c.lembrete_timezone, c.lembrete_metodo, c.smtp_host, c.smtp_ativo, c.waba_phone_id, c.waba_token FROM configuracoes c WHERE c.lembrete_ativo = 1"); $empresas = $configs->fetchAll(); if (empty($empresas)) { echo json_encode(['enviados' => 0, 'msg' => 'Nenhuma empresa com lembretes ativos']); exit; } require_once __DIR__ . '/../includes/email.php'; require_once __DIR__ . '/../includes/whatsapp.php'; require_once __DIR__ . '/../includes/digigo.php'; $totalEnviados = 0; foreach ($empresas as $empresa) { $empresaId = $empresa['empresa_id']; $timezone = $empresa['lembrete_timezone'] ?: 'America/Sao_Paulo'; $metodoPadrao = $empresa['lembrete_metodo'] ?: 'email'; $digigoCfg = DigiGOClient::getCompanyConfig($pdo, $empresaId); $useDigigo = DigiGOClient::isConnected($digigoCfg) && !empty($digigoCfg['digigo_envio_ativo']); $rules = $pdo->prepare("SELECT * FROM lembretes_config WHERE empresa_id = ? AND ativo = 1"); $rules->execute([$empresaId]); $regras = $rules->fetchAll(); if (empty($regras)) continue; date_default_timezone_set($timezone); $agora = date('Y-m-d H:i:s'); $agendamentos = $pdo->prepare(" SELECT a.*, u.nome as cliente_nome, u.email as cliente_email, u.telefone as cliente_telefone, u2.nome as profissional_nome, s.nome as servico_nome, s.preco, e.nome as empresa_nome FROM agendamentos a JOIN usuarios u ON a.cliente_id = u.id JOIN profissionais p ON a.profissional_id = p.id JOIN usuarios u2 ON p.usuario_id = u2.id JOIN servicos s ON a.servico_id = s.id JOIN empresas e ON a.empresa_id = e.id WHERE a.empresa_id = ? AND a.status IN ('pendente','confirmado') AND a.data >= CURDATE() AND a.lembrete_enviado = 0 "); $agendamentos->execute([$empresaId]); $lista = $agendamentos->fetchAll(); foreach ($lista as $ag) { $dataHoraAg = $ag['data'] . ' ' . $ag['hora']; $dataHoraAgTs = strtotime($dataHoraAg); foreach ($regras as $regra) { $minutosAntes = 0; switch ($regra['tipo']) { case 'minutos': $minutosAntes = (int)$regra['valor']; break; case 'horas': $minutosAntes = (int)$regra['valor'] * 60; break; case 'dias': $minutosAntes = (int)$regra['valor'] * 1440; break; case 'meses': $minutosAntes = (int)$regra['valor'] * 43200; break; } $disparoTs = $dataHoraAgTs - ($minutosAntes * 60); $agoraTs = time(); if ($agoraTs >= $disparoTs && $agoraTs < $dataHoraAgTs) { $metodo = $regra['metodo'] ?: $metodoPadrao; $stmtM = $pdo->prepare("SELECT mensagem_texto FROM modelos_mensagem WHERE empresa_id=? AND tipo='lembrete'"); $stmtM->execute([$empresaId]); $modelo = $stmtM->fetchColumn(); $mensagem = $modelo ?: "Ola {{cliente_nome}}!\n\nLembrete de agendamento:\nProfissional: {{profissional_nome}}\nServico: {{servico_nome}}\nData: {{data}}\nHora: {{hora}}\n\nConfirme ou cancele seu horario."; $mensagem = str_replace( ['{{cliente_nome}}','{{profissional_nome}}','{{servico_nome}}','{{data}}','{{hora}}'], [$ag['cliente_nome'], $ag['profissional_nome'], $ag['servico_nome'], date('d/m/Y', strtotime($ag['data'])), $ag['hora']], $mensagem ); $enviado = false; if ($metodo === 'email') { if ($ag['cliente_email']) { $corpoHtml = nl2br($mensagem); $corpoHtml = '<div style="font-family:sans-serif;padding:20px;max-width:500px">' . '<h2 style="color:#667eea">Lembrete de Agendamento</h2>' . $corpoHtml . '</div>'; $ok = enviarEmail($ag['cliente_email'], 'Lembrete de Agendamento - ' . $ag['empresa_nome'], $corpoHtml, $empresaId); if ($ok) $enviado = true; } } if ($metodo === 'whatsapp') { if ($ag['cliente_telefone']) { $result = enviarWhatsAppMeta($empresaId, $ag['cliente_telefone'], $mensagem); if ($result['success']) $enviado = true; } } if ($metodo === 'digigo') { if ($ag['cliente_telefone'] && $useDigigo) { $digigoBaseUrl = $digigoCfg['digigo_base_url'] ?: ($empresa['digigo_base_url'] ?? ''); $client = new DigiGOClient($digigoBaseUrl, $digigoCfg['digigo_user_token'], false); try { $client->sessionConnect(); $r = $client->sendText($ag['cliente_telefone'], $mensagem); $enviado = true; } catch (Exception $e) { error_log('DigiGO send error: ' . $e->getMessage()); } } } if ($enviado) { $pdo->prepare("UPDATE agendamentos SET lembrete_enviado = 1 WHERE id = ?")->execute([$ag['id']]); $totalEnviados++; } break; } } } } echo json_encode(['enviados' => $totalEnviados]);