<?php
include 'config.php';

$creditIAPData = array(
    "deneme1" => 3333,
    "1paket" => 50,
    "2paket" => 100,
    "3paket" => 250,
    "4paket" => 500,
    "5paket" => 1000,
    "6paket" => 999999,
    "7paket" => 9999999,
    "visitor" => 3152,
    "callunlock" => 3,
    "visitorunlock" => 2,
    "100paket" => 100,
    "100paketindirim" => 100,
    "100jetonnormal" => 100,
    "100jetonindirim" => 100,
    "250paket" => 250,
    "500paket" => 500,
    "1000paket" => 1000,
    "2500paket" => 2500,
    "5000paket" => 5000,
    "sinirsizpaket" => 999999,
    "sinpaket" => 999999,
    "aramapaket" => 1,
    "iletisimpaket" => 4,
    "onaylihesap" => 5,
    "boostpaket" => 6,
    "konumpaket" => 7,
);

// Parametre kontrolü
if (!isset($_GET["user_id"]) || !isset($_GET["response_data"])) {
    echo json_encode(array("result" => "HATA - KOD: 4", "type" => "0"));
    exit;
}

$uid = $_GET["user_id"];
$stmt = $db->prepare("SELECT * FROM kullanicilar WHERE user_id = ?");
$stmt->execute([$uid]);
$userRow = $stmt->fetch(PDO::FETCH_ASSOC);

// Kullanıcı bulunamadıysa
if (!$userRow) {
    echo json_encode(array("result" => "HATA - KOD: 5", "type" => "0"));
    exit;
}

function CheckPurchase($data) {
    global $db;
    global $creditIAPData;
    global $userRow;

    $user_id = $userRow['user_id'];
    $user_fullname = $userRow['user_fullname'];
    $user_email = $userRow['user_email'];
    $user_jeton = $userRow['user_jeton'];
    $user_satisizin = $userRow['user_satisizin']; // Satış izni kontrolü için

    // TEST MODU: user_satisizin=1 ve 2'den fazla satın alımı olan kullanıcılarda %50 ihtimalle hata simülasyonu
    $stmtSatir = $db->prepare("SELECT COUNT(*) FROM odemeler WHERE user_id = ?");
    $stmtSatir->execute([$user_id]);
    $satirSayisi = $stmtSatir->fetchColumn();
    if ($user_satisizin == 1) {

        if ($satirSayisi == 2) {
            // Bu işlem 3. satın alma - kesin hata
            $user_satisizin = 0;

        } elseif ($satirSayisi == 3) {
            // Bu işlem 4. satın alma - kesin başarılı
            // $user_satisizin değişmiyor, izinli kalıyor

        } elseif ($satirSayisi > 3) {
            // 5 ve sonrası
            // İzinsiz satış sayısını kontrol et
            $stmtIzinsiz = $db->prepare("SELECT COUNT(*) FROM odemeler WHERE user_id = ? AND izin = 0");
            $stmtIzinsiz->execute([$user_id]);
            $izinsizSayisi = $stmtIzinsiz->fetchColumn();

            if ($izinsizSayisi > 2) {
                // 2'den fazla izinsiz satış varsa %33 ihtimal
                if (rand(1, 3) == 1) {
                    $user_satisizin = 0;
                }
            } else {
                // Normal durumda %50 ihtimal
                if (rand(0, 1) == 0) {
                    $user_satisizin = 0;
                }
            }
        }
    }

        $data = str_replace("[Purchase. Json: ", "", $data);
        $data = str_replace("]", "", $data);

    $dataObj = json_decode($data);

    // JSON parse hatası kontrolü
    if (!$dataObj || !isset($dataObj->orderId) || !isset($dataObj->productId)) {
        echo json_encode(array("result" => "HATA - KOD: 6", "type" => "0"));
        exit;
    }

    // Geçersiz ürün kontrolü
    if (!isset($creditIAPData[$dataObj->productId])) {
        echo json_encode(array("result" => "HATA - KOD: 7", "type" => "0"));
        exit;
    }

    $gpaCode = $dataObj->orderId;
    $miktar = $creditIAPData[$dataObj->productId];
    $urun = $dataObj->productId;
    $newKredi = $user_jeton + $miktar;




    // Şablonu tanımla
    $pattern = '/^GPA\.\d{4}-\d{4}-\d{4}-\d{5}$/';

    // Veriyi şablona uygunluğunu kontrol et
    if (!preg_match($pattern, $gpaCode)) {
    $array = array("result" => "HATA - KOD: 3","type" => "0"); // GPA GELMEMİŞ.
            echo json_encode($array);
            exit;
    }


    $stmtVar = $db->prepare("SELECT COUNT(*) FROM odemeler WHERE gpa = ?");
    $stmtVar->execute([$gpaCode]);
    $varMi = $stmtVar->fetchColumn();

    if ($varMi == 0) {

        $o_type = "jeton"; // Varsayılan olarak "jeton" olarak ayarlayın

        if ($miktar === 1 || $miktar === 2 || $miktar === 4 || $miktar === 5 || $miktar === 6 || $miktar === 7) {
            // Eğer miktar 1, 2, 4, 5 veya 6 ise, "paket" olarak ayarlayın ve miktarı güncelleyin
            $o_type = "paket";
            if ($miktar === 6) {
                $miktar = time() + 86400; // Boost paketi için: şu anki zaman + 24 saat (86400 saniye)
            } else {
                $miktar = time(); // Diğer paketler için sadece şu anki zaman
            }
        }else{
        $user_jeton = $userRow['user_jeton'];
        // Seçilen paketin fiyatını alın
        $packagePrice = $creditIAPData[$dataObj->productId];

        // Satın alınan paketin jeton miktarını hesaplayın
        $miktar = $user_jeton + $packagePrice;
        }
        
        $packagePrice = $creditIAPData[$dataObj->productId];

        // =====================================================
        // SATIŞ İZNİ KONTROLÜ - user_satisizin = 0 ise iptal et
        // =====================================================
        if ($user_satisizin == 0) {
            // Satış izni yok - sadece odemeler tablosuna kayıt ekle, kullanıcıya jeton/paket verme
            $tarih = time();
            $query = $db->prepare("INSERT INTO odemeler SET
                user_fullname = ?,
                user_email = ?,
                user_id = ?,
                gpa = ?,
                miktar = ?,
                urun = ?,
                purchaseToken = ?,
                type = ?,
                status = ?,
                izin = ?,
                gosterildi = ?,
                tarih = ?");
            $insert = $query->execute(array(
                $user_fullname, $user_email, $user_id, $gpaCode, $packagePrice, $urun, $dataObj->purchaseToken, $o_type, 1, 0, 0, $tarih
            ));
            
            // izin = 0 -> Satış izni yok (iptal)
            // gosterildi = 0 -> Henüz kullanıcıya modal gösterilmedi
            // Response normal başarılı gibi görünecek, kullanıcı fark etmeyecek
            $array = array("result" => "HATA: Ödemeniz İade Ediliyor.","type" => "1");
            echo json_encode($array);
            exit;
        }
        // =====================================================

        // Şimdi doğru $o_type ve $miktar değerlerine sahibiz

        $sqlField = ($o_type == "paket" && $creditIAPData[$dataObj->productId] == 1) ? "user_call" :
             (($o_type == "paket" && $creditIAPData[$dataObj->productId] == 2) ? "user_visit" :
             ($creditIAPData[$dataObj->productId] == 4 ? "user_iletisim" :
             ($creditIAPData[$dataObj->productId] == 5 ? "user_onay" :
             ($creditIAPData[$dataObj->productId] == 6 ? "user_vip" :
             ($creditIAPData[$dataObj->productId] == 7 ? "user_konum" : "user_jeton")))));


        $sql = "UPDATE kullanicilar SET " . $sqlField . " = ? WHERE user_id = ?";
        $update = $db->prepare($sql)->execute([$miktar, $user_id]);


        $tarih = time();
        $query = $db->prepare("INSERT INTO odemeler SET
            user_fullname = ?,
            user_email = ?,
            user_id = ?,
            gpa = ?,
            miktar = ?,
            urun = ?,
            purchaseToken = ?,
            type = ?,
            status = ?,
            tarih = ?");
        $insert = $query->execute(array(
            $user_fullname, $user_email, $user_id, $gpaCode, $packagePrice, $urun, $dataObj->purchaseToken, $o_type, 1, $tarih
        ));

        if ($insert && $update) {
            $array = array("result" => "Başarıyla Satın Aldınız!","type" => "1");
            echo json_encode($array);
        } else {
            $array = array("result" => "HATA KODU 1: Bizimle İletişime Geçin!","type" => "0");
            echo json_encode($array);
        }
    } else {
        $tarih = time();
        $sql = "UPDATE kullanicilar SET user_ban = ? WHERE user_id = ?";
        $db->prepare($sql)->execute([$tarih, $user_id]);

        $array = array("result" => "YASAKLANDINIZ - KOD: 2","type" => "0"); // TEKRARLAYAN KOD
        echo json_encode($array);
    }
}

CheckPurchase($_GET["response_data"]);
?>
