<?php
// Načtení WordPress prostředí z kořenového adresáře
$wordpress_path = dirname(__FILE__, 4) . '/wp-load.php';
if (file_exists($wordpress_path)) {
    require_once $wordpress_path;
} else {
    exit("Chyba: wp-load.php nebyl nalezen.");
}

// Načtení TCPDF autoload z vendor_faktura adresáře (tecnickcom/tcpdf)
$tcpdf_autoload_path = dirname(__FILE__) . '/vendor_faktura/tecnickcom/tcpdf/tcpdf.php';
if (file_exists($tcpdf_autoload_path)) {
    require_once $tcpdf_autoload_path;
} else {
    exit("Chyba: Autoloader pro TCPDF nebyl nalezen.");
}

// Načtení ThePay API autoload z vendor adresáře
$autoload_path = dirname(__FILE__) . '/vendor/autoload.php';
if (file_exists($autoload_path)) {
    require_once $autoload_path;
} else {
    exit("Chyba: Autoloader pro ThePay API nebyl nalezen.");
}

// Načtení p_payment_uid z databáze
$p_payment_uid = get_option('p_payment_uid');
if (!$p_payment_uid) {
    exit("Chyba: Platební UID není nastaveno.");
}

// Načtení API údajů
$api_url = 'https://platebniformular.cz/credentials.php?token=your_secret_token';
$response = file_get_contents($api_url);
if ($response === false) {
    die("Nepodařilo se načíst údaje ze vzdáleného serveru.");
}
$credentials = json_decode($response, true);
if (!isset($credentials['merchant_id'], $credentials['project_id'], $credentials['api_password'], $credentials['environment'])) {
    die("Neplatná odpověď z API.");
}

$merchant_id = $credentials['merchant_id'];
$project_id = $credentials['project_id'];
$api_password = $credentials['api_password'];
$environment = $credentials['environment'];

// Načtení fakturačních údajů
$faktury_jmeno = get_option('faktury_jmeno', '');
$faktury_adresa = get_option('faktury_adresa', '');
$faktury_email = get_option('faktury_email', '');
$faktury_ico = get_option('faktury_ico', '');
$faktury_dic = get_option('faktury_dic', '');

// Dynamická adresa webu
$web_adresa = $_SERVER['HTTP_HOST'];

// Nastavení API URL podle prostředí
$api_url = ($environment === 'production') ? 'https://api.thepay.cz/' : 'https://demo.api.thepay.cz/';
$gate_url = ($environment === 'production') ? 'https://gate.thepay.cz/' : 'https://demo.gate.thepay.cz/';

// Inicializace ThePay API klienta
use ThePay\ApiClient\TheConfig;
use ThePay\ApiClient\TheClient;
use GuzzleHttp\Client as GuzzleHttpClient;
use GuzzleHttp\Psr7\HttpFactory;
use ThePay\ApiClient\Service\ApiService;
use ThePay\ApiClient\Service\SignatureService;

$config = new TheConfig($merchant_id, $project_id, $api_password, $api_url, $gate_url);
$signatureService = new SignatureService($config);
$httpClient = new GuzzleHttpClient();
$requestFactory = new HttpFactory();
$streamFactory = new HttpFactory();
$apiService = new ApiService($config, $signatureService, $httpClient, $requestFactory, $streamFactory);
$thePayClient = new TheClient($config, $apiService);

try {
    // Načtení detailů platby
    $paymentDetail = $thePayClient->getPayment($p_payment_uid);
    $payment_state = $paymentDetail->getState();
    $payment_amount = $paymentDetail->getAmount();
    $payment_currency = $paymentDetail->getCurrency();
    $payment_uid = $paymentDetail->getUid();

    // Kontrola, zda je platba zaplacena
    if ($payment_state === 'paid') {
        $option_key = 'zaplaceno_' . $p_payment_uid;

        if (get_option($option_key)) {
            exit("Platba již byla zpracována.");
        }

        // Označení platby jako zpracované
        update_option($option_key, true);
        update_option('parent_payment_uid', $p_payment_uid);

        $creation_date = date('Y-m-d H:i:s');
        $remote_url = 'https://platebniformular.cz/token_created.php';

        $site_url = get_site_url();
        wp_remote_post($remote_url, array(
            'method' => 'POST',
            'body'   => array(
                'creation_date' => $creation_date,
                'site_url'      => $site_url,
            ),
            'timeout' => 10,
        ));

        // Příprava dat pro odeslání
        $curl_data = [
            'payment_uid'    => $payment_uid,
            'payment_status' => $payment_state,
            'amount'         => $payment_amount / 100,
            'currency'       => $payment_currency,
            'faktury_jmeno'  => $faktury_jmeno,
            'faktury_adresa' => $faktury_adresa,
            'faktury_email'  => $faktury_email,
            'web_adresa'     => $web_adresa,
            'site_url'       => $site_url,
        ];

        if (!empty($faktury_ico)) {
            $curl_data['faktury_ico'] = $faktury_ico;
        }
        if (!empty($faktury_dic)) {
            $curl_data['faktury_dic'] = $faktury_dic;
        }

        // Odeslání údajů na externí server
        $ch = curl_init('https://www.platebniformular.cz/generate_invoice.php');
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $curl_data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $response = curl_exec($ch);
        curl_close($ch);

        // Logování
        error_log("Informace o platbě byly zpracovány: $payment_uid, $payment_state, $payment_currency");

        echo '<div style="display: flex; justify-content: center; align-items: center; height: 100vh; background-color: #f4f7f6; font-family: Arial, sans-serif;">
                <div style="text-align: center; background-color: #e9f7ef; border: 2px solid #28a745; border-radius: 8px; padding: 20px; width: 50%; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);">
                    <span style="font-size: 50px; color: #28a745;">✔️</span>
                    <p style="font-size: 24px; color: #28a745; margin: 10px 0;">Platební údaje byly aktualizovány.</p>
                </div>
              </div>';
    } else {
        echo '<div style="display: flex; justify-content: center; align-items: center; height: 100vh; background-color: #f4f7f6; font-family: Arial, sans-serif;">
                <div style="text-align: center; background-color: #fdecea; border: 2px solid #dc3545; border-radius: 8px; padding: 20px; width: 50%; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);">
                    <span style="font-size: 50px; color: #dc3545;">❌</span>
                    <p style="font-size: 24px; color: #dc3545; margin: 10px 0;">Platební údaje nebyly aktualizovány.</p>
                </div>
              </div>';
    }
} catch (Exception $e) {
    error_log("Chyba při zpracování platby: " . $e->getMessage());
    exit("Chyba při zpracování: " . $e->getMessage());
}
?>
