<?php
include("conexao.php");


if ($_SERVER['REQUEST_METHOD'] == 'GET') {	

    $usuario90 = isset($_GET['usuario']) ? $_GET['usuario'] : '';
	

    if (!empty($usuario90)) {
        $sql = "SELECT id, CadUser, email, nome, usuario, celular, data_premio 
                FROM usuario 
                WHERE usuario = :usuario";
    
        $stmt = $painel_user->prepare($sql);
        $stmt->bindParam(':usuario', $usuario90, PDO::PARAM_STR);
        $stmt->execute();
    
        $usuarios = $stmt->fetchAll(PDO::FETCH_ASSOC);
        $data_atual = time(); // Data e hora atual em timestamp

        if (count($usuarios) > 0) {
            foreach ($usuarios as $usuario) {
                
                echo "<strong>ID:</strong> " . htmlspecialchars($usuario['id']) . "<br>";
                echo "<strong>CadUser:</strong> " . htmlspecialchars($usuario['CadUser']) . "<br>";
                echo "<strong>Email:</strong> " . htmlspecialchars($usuario['email']) . "<br>";
                echo "<strong>Nome:</strong> " . htmlspecialchars($usuario['nome']) . "<br>";
                echo "<strong>Usuário:</strong> " . htmlspecialchars($usuario['usuario']) . "<br>";
                echo "<strong>Celular:</strong> " . htmlspecialchars($usuario['celular']) . "<br>";
                echo "<strong>Data do Prêmio:</strong> " . htmlspecialchars($usuario['data_premio']) . "<br><hr>";
                $data_premio = $usuario['data_premio'];
                $CadUser = $usuario['CadUser'];
                $usuario2 = $usuario['usuario'];
                $nome2 = $usuario['nome'];
            
                // Verifica se a data da premiação está a menos de 2 dias
                if ($data_premio > $data_atual && $data_premio <= ($data_atual + 2 * 24 * 60 * 60)) {
                    // Vencendo: Se a data estiver dentro dos próximos 2 dias a partir de hoje
                    $vencendo[] = $usuario;
                    echo "<strong>vencendo:</strong> " . htmlspecialchars($usuario['usuario']) . "<br>";

                } elseif ($data_premio < $data_atual) {
                    // Vencido: Se a data já passou
                    echo "<strong>vencido2:</strong> " . htmlspecialchars($usuario['usuario']) . "<br>";

                    $vencido[] = $usuario;
                }
            }

        } 
        
        
        // Função genérica para enviar mensagens via WhatsApp
        function enviarMensagem($usuario, $sms_preferencia, $painel_geral) {
            try {
                // 1. Recuperando o token e dados do SMS
                $sql = "SELECT user, senha, evo FROM sms WHERE cadUser = :cadUser AND bloqueado = 'N'";
                $stmt = $painel_geral->prepare($sql);
                $stmt->bindParam(':cadUser', $usuario['CadUser'], PDO::PARAM_STR);
                $stmt->execute();
        
                if ($stmt->rowCount() > 0) {
                    $result = $stmt->fetch(PDO::FETCH_ASSOC);
                    $token = $result['user'];       // O valor de 'user' no banco será o $token
                    $linkWhatsApp = $result['senha']; 
                    $nomeInstancia = $result['evo']; 
                } else {
                    echo "Usuário não encontrado no banco de dados.<br>";
                    return;
                }
        
                // 2. Preparando o número de telefone
                $numero = preg_replace('/\D/', '', $usuario['celular']); // Remove tudo que não é número
                $numero = ajustarNumeroTelefone($numero);  // Ajuste do número de telefone (se necessário)
                $telefone = "55" . $numero; // Adiciona o código do país
        
                // 3. Recuperando o ID de vencimento da tabela sms_preferencias
                $query_sms = "SELECT Renovacao FROM sms_preferencias WHERE CadUser = :CadUser";
                $stmt_sms = $painel_geral->prepare($query_sms);
                $stmt_sms->bindParam(':CadUser', $usuario['CadUser']);
                $stmt_sms->execute();
                $sms_preferencia1 = $stmt_sms->fetch(PDO::FETCH_ASSOC);
        
                if (!$sms_preferencia1 || !isset($sms_preferencia1['Renovacao']) || $sms_preferencia1['Renovacao'] <= 0) {
                    echo "ID de vencimento inválido para o usuário " . $usuario['CadUser'] . ".<br>";
                    return;
                }
        
                $vencimentoId = intval($sms_preferencia1['Renovacao']);  // ID de vencimento
        
                // 4. Recuperando a mensagem com base no ID de vencimento
                $mensagem = obterMensagem($vencimentoId, $painel_geral);  // Função que retorna a mensagem baseada no ID
                if (empty($mensagem)) {
                    echo "Mensagem não encontrada para o ID de vencimento: " . $vencimentoId . "<br>";
                    return;
                }
        
                // 5. Substituindo os placeholders na mensagem
                $data_premio = $usuario['data_premio'];
                $dataFormatada = date("d/m/Y H:i:s", $data_premio);
                $mensagem = str_replace(
                    ['[nome]', '[url]', '[porta]', '[login]', '[senha]', '[perfil]', '[vencimento]'],
                    [$usuario['nome'], $url, $porta, $usuario['usuario'], $senha, $nomeprofile, $dataFormatada],
                    $mensagem
                );
        
                // 6. Enviar a mensagem via WhatsApp
                $response = enviarMensagemViaWhatsApp($telefone, $mensagem, $token, $linkWhatsApp, $nomeInstancia);
                
                if ($response && isset($response['status']) && $response['status'] == "success") {
                    echo "Mensagem enviada com sucesso para o usuário " . $usuario['CadUser'] . ".<br>";
                } else {
                    echo "Falha ao enviar a mensagem para o usuário " . $usuario['CadUser'] . ".<br>";
                }
        
            } catch (PDOException $e) {
                echo 'Erro ao consultar o banco de dados para o usuário ' . $usuario['CadUser'] . ': ' . $e->getMessage() . "<br>";
            }
        }
        
      
        
        // Função auxiliar para ajustar o número de telefone (adicionando o "9" se necessário)
        function ajustarNumeroTelefone($numero) {
            if ($numero[2] !== '9') {
                $numero = substr($numero, 0, 2) . '9' . substr($numero, 2); // Ajusta o número para adicionar o "9"
            }
            return $numero;
        }
        
        // Função para obter a mensagem do banco com base no ID de vencimento
        function obterMensagem($vencimentoId, $painel_geral) {
            try {
                $sql = "SELECT mensagem FROM sms_modelo WHERE id = :id";
                $stmt = $painel_geral->prepare($sql);
                $stmt->bindParam(':id', $vencimentoId, PDO::PARAM_INT);
                $stmt->execute();
        
                if ($stmt->rowCount() > 0) {
                    $result = $stmt->fetch(PDO::FETCH_ASSOC);
                    return $result['mensagem'];  // Retorna a mensagem encontrada
                    
                } else {
                    echo "Mensagem não encontrada para o ID de vencimento: " . $vencimentoId . "<br>";
                    return '';
                }
            } catch (PDOException $e) {
                echo 'Erro ao consultar o banco de dados para a mensagem: ' . $e->getMessage() . "<br>";
                return '';
            }
            $mensagem = str_replace(
                ['[nome]', '[url]', '[porta]', '[login]', '[senha]', '[perfil]', '[vencimento]'],
                [$nome2, $url, $porta, $usuario2, $senha, $nomeprofile, $dataFormatada],
                $mensagem
            );
        }
        
        function obterMensagemEmail2($vencimentoIdEmail, $painel_geral) {
            try {           
                // Depuração: Mostrar o ID de vencimento que está sendo buscado
        
                $sql = "SELECT mensagem FROM email_modelo WHERE id = :id";
                $stmt = $painel_geral->prepare($sql);
                $stmt->bindParam(':id', $vencimentoIdEmail, PDO::PARAM_INT);
                
                // Depuração: Verificar se a consulta foi preparada corretamente
                echo "SQL preparado com sucesso.<br>";
        
                $stmt->execute();
                
                // Depuração: Verificar se a execução retornou resultados
                echo "Linhas retornadas: " . $stmt->rowCount() . "<br>";
        
                if ($stmt->rowCount() > 0) {
                    // Depuração: Mostrar o resultado encontrado
                    $result = $stmt->fetch(PDO::FETCH_ASSOC);
                    echo "Mensagem encontrada: " . $result['mensagem'] . "<br>";
                    
                    return $result['mensagem'];  // Retorna a mensagem encontrada
                    
                } else {
                    // Depuração: Caso não tenha encontrado resultados
                    echo "Mensagem não encontrada para o ID de vencimento: " . $vencimentoIdEmail . "<br>";
                    return '';
                }
            } catch (PDOException $e) {
                // Depuração: Exibir o erro ao conectar no banco de dados
                echo 'Erro ao consultar o banco de dados para a mensagem: ' . $e->getMessage() . "<br>";
                return '';
            }
            $mensagem = str_replace(
                ['[nome]', '[url]', '[porta]', '[login]', '[senha]', '[perfil]', '[vencimento]'],
                [$nome2, $url, $porta, $usuario2, $senha, $nomeprofile, $dataFormatada],
                $mensagem
            );
        }
        
        
        // Função para enviar a mensagem via WhatsApp
        function enviarMensagemViaWhatsApp($numero, $mensagem, $token, $linkWhatsApp, $nomeInstancia) {
            $curl = curl_init();
            curl_setopt_array($curl, [
                CURLOPT_URL => $linkWhatsApp . '/message/sendText/' . $nomeInstancia,
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_HTTPHEADER => [
                    "Content-Type: application/json",
                    "apikey: $token"
                ],
                CURLOPT_POSTFIELDS => json_encode(['number' => $numero, 'text' => $mensagem])
            ]);
        
            $response = curl_exec($curl);
        
            if ($response === false) {
                echo "Erro no CURL: " . curl_error($curl) . "<br>";
            }
        
            curl_close($curl);
        
            return json_decode($response, true);  // Retorna a resposta decodificada como array associativo
        }
        
        
        
        
        
        
        
        
       
       
            foreach ($vencendo as $usuario) {
                echo "<h3>Usuário Vencendo:</h3>";
                echo "CadUser: " . $usuario['CadUser'] . "<br>";
                echo "Data do prêmio: " . date('d/m/Y H:i:s', strtotime($usuario['data_premio'])) . "<br>";
            
                if (!empty($usuario['celular'])) {
                    $query_sms = "SELECT Renovacao FROM sms_preferencias WHERE CadUser = :CadUser";
                    $stmt_sms = $painel_geral->prepare($query_sms);
                    $stmt_sms->bindParam(':CadUser', $usuario['CadUser']);
                    $stmt_sms->execute();
                    $sms_preferencia1 = $stmt_sms->fetch(PDO::FETCH_ASSOC);
            
                    if ($sms_preferencia1) {
                        try {
                            enviarMensagem($usuario, $sms_preferencia1, $painel_geral);
                            header("Location: index.php?p=usuario");
    
                        } catch (Exception $e) {
                            header("Location: index.php?p=usuario");
                        }
                    }
                }
            }






         
         
            


       
        


        
        // Exibe os resultados para vencido
        if (count($vencido) > 0) {
            foreach ($vencido as $usuario) {
               
        
                if (!empty($usuario['celular'])) {
                    // Consulta na tabela painel_geral para verificar a preferência de vencimento por celular
                    $query_sms = "SELECT Vencimento FROM sms_preferencias WHERE CadUser = :CadUser";
                    $stmt_sms = $painel_geral->prepare($query_sms);
                    $stmt_sms->bindParam(':CadUser', $usuario['CadUser']);
                    $stmt_sms->execute();
                    $sms_preferencia = $stmt_sms->fetch(PDO::FETCH_ASSOC);
                    if ($sms_preferencia) {
                        
                        // Envia a mensagem via WhatsApp
                        enviarMensagem($usuario, $sms_preferencia, $painel_geral);
                        header("Location: index.php?p=usuario");

                    }
                }
                
            }
        } else {
            header("Location: index.php?p=usuario");
        }

     }
	
		
	
		
    
}
?>


