<?php 
chdir(dirname(__FILE__));
include '../../config.php';

// =====================================================
// KAYIT OLMAYAN KULLANICILARA BİLDİRİM SİSTEMİ
// =====================================================

$currentTime = time();
$app_id = "ad1b405f-217b-47b5-b59b-770d801cb89b";
$registerUrl = "https://app.heysen.net/register.php";

try {
    // RAPOR İÇİN: Toplam kayıt sayısını al
    $totalCount = $db->query("SELECT COUNT(*) FROM not_registered")->fetchColumn();
    
    if ($totalCount == 0) {
        exit("✅ Kayıt olmamış kullanıcı yok.");
    }
    
    // OPTIMIZE: Sadece 24 saat geçmiş kayıtları çek (SQL'de filtrele - daha performanslı)
    $notRegisteredQuery = $db->query("SELECT player_id, songiris FROM not_registered 
        WHERE songiris <= (UNIX_TIMESTAMP() - 86400)");
    $notRegisteredUsers = $notRegisteredQuery->fetchAll(PDO::FETCH_ASSOC);
    
    if (empty($notRegisteredUsers)) {
        exit("✅ 24 saat geçmiş kayıt yok. Toplam bekleyen: $totalCount\n");
    }
    
    // OPTIMIZE: Tüm player_id'leri topla
    $allPlayerIds = array_column($notRegisteredUsers, 'player_id');
    
    // OPTIMIZE: Üye olan kullanıcıları tek sorguda kontrol et (SQL Injection korumalı)
    $placeholders = str_repeat('?,', count($allPlayerIds) - 1) . '?';
    $registeredQuery = $db->prepare("SELECT user_onesignal FROM kullanicilar WHERE user_onesignal IN ($placeholders)");
    $registeredQuery->execute($allPlayerIds);
    $registeredPlayerIds = $registeredQuery->fetchAll(PDO::FETCH_COLUMN);
    
    // Kayıtlı player_id'leri map'e dönüştür (hızlı arama için)
    $registeredMap = array_flip($registeredPlayerIds);
    
    // İşlenecek kayıtları grupla
    $toDelete = []; // Üye olan veya bildirim gönderilen kayıtlar
    $toNotify = []; // Bildirim gönderilecek olanlar (24 saat geçmiş, üye olmamış)
    
    foreach ($notRegisteredUsers as $user) {
        $playerId = $user['player_id'];
        
        // ÜYE OLMUŞ MU?
        if (isset($registeredMap[$playerId])) {
            $toDelete[] = $playerId; // Üye olmuş, anında sil
            continue;
        }
        
        // 24 SAAT GEÇMİŞ - BİLDİRİM GÖNDER + SİL
        // SQL'de zaten 24 saat filtresi var, buraya gelenlere bildirim gönder ve sil
        $toNotify[] = $playerId;
        $toDelete[] = $playerId; // Bildirim attıktan sonra sil
    }
    
    // TOPLU BİLDİRİM GÖNDER (Tek API çağrısı ile)
    if (!empty($toNotify)) {
        $randomCount = rand(75, 92);
        
        $heading = array("en" => "🤩Bölgende $randomCount Aktif Üye Var!🤩");
        $content = array("en" => "🔥Hemen Ücretsiz Kaydol ve Yeni İnsanlarla Tanış!🔥");
        
        $fields = array(
            'app_id' => $app_id,
            'include_player_ids' => $toNotify,
            'data' => array("type" => "register_reminder"),
            'ttl' => 10800,
            'url' => $registerUrl,
            'priority' => 10,
            'headings' => $heading,
            'contents' => $content
        );
        
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications");
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8'));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_HEADER, FALSE);
        curl_setopt($ch, CURLOPT_POST, TRUE);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        
        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        
        if ($httpCode == 200) {
            echo "✅ " . count($toNotify) . " kullanıcıya bildirim gönderildi.\n";
        } else {
            echo "⚠️ Bildirim gönderme hatası: HTTP $httpCode\n";
        }
    }
    
    // TOPLU SİLME İŞLEMİ (Tek sorgu ile)
    if (!empty($toDelete)) {
        $deletePlaceholders = str_repeat('?,', count($toDelete) - 1) . '?';
        $deleteStmt = $db->prepare("DELETE FROM not_registered WHERE player_id IN ($deletePlaceholders)");
        $deleteStmt->execute($toDelete);
        
        echo "🗑️ " . count($toDelete) . " kayıt silindi.\n";
    }
    
    // RAPOR
    echo "\n📊 İşlem Özeti:\n";
    echo "- Toplam kayıt (not_registered): $totalCount\n";
    echo "- 24+ saat geçmiş: " . count($notRegisteredUsers) . "\n";
    echo "- Bildirim gönderilen: " . count($toNotify) . "\n";
    echo "- Silinen (üye olan + bildirim gönderilen): " . count($toDelete) . "\n";
    echo "- Bekleyen (0-24 saat arası): " . ($totalCount - count($toDelete)) . "\n";
    
} catch (Exception $e) {
    echo "❌ Hata: " . $e->getMessage() . "\n";
}
?>