<?php
require_once 'includes/config.php';
require_once 'includes/db.php';
require_once 'includes/functions.php';

// Provera da li je forma poslata
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    header('Location: /');
    exit;
}

// Provera da li je korpa prazna
$cart = get_cart();
if (empty($cart)) {
    header('Location: /');  // Preusmjeravanje na početnu
    exit;
}

// Preuzimanje podataka iz forme
$name = isset($_POST['name']) ? trim($_POST['name']) : '';
$phone = isset($_POST['phone']) ? trim($_POST['phone']) : '';
$email = isset($_POST['email']) ? trim($_POST['email']) : '';
$address = isset($_POST['address']) ? trim($_POST['address']) : '';
$city = isset($_POST['city']) ? trim($_POST['city']) : '';
$zip = isset($_POST['zip']) ? trim($_POST['zip']) : '';
$shipping_method = isset($_POST['shipping_method']) ? $_POST['shipping_method'] : 'courier';
$payment_method = isset($_POST['payment_method']) ? $_POST['payment_method'] : 'cash';
$notes = isset($_POST['notes']) ? trim($_POST['notes']) : '';
$base_price = isset($_POST['base_price']) ? floatval($_POST['base_price']) : 0;
$accessories = isset($_POST['accessories']) ? json_decode($_POST['accessories'], true) : [];

// Podaci o poklon vaučeru
$gift_voucher_eligible = isset($_POST['gift_voucher_eligible']) ? intval($_POST['gift_voucher_eligible']) : 0;
$voucher_code = isset($_POST['voucher_code']) ? trim($_POST['voucher_code']) : '';
$voucher_session_id = isset($_POST['voucher_session_id']) ? trim($_POST['voucher_session_id']) : '';
$voucher_start_time = isset($_POST['voucher_start_time']) ? intval($_POST['voucher_start_time']) : 0;

// Validacija obaveznih polja
if (empty($name) || empty($phone) || empty($address) || empty($city) || empty($zip)) {
    header('Location: /checkout.php?error=missing_fields');
    exit;
}

// Validacija poklon vaučera - provera da li je narudžbina završena u roku od 15 minuta
$voucher_valid = false;
if ($gift_voucher_eligible == 1 && !empty($voucher_code) && !empty($voucher_session_id) && $voucher_start_time > 0) {
    $current_time = time();
    $elapsed_time = $current_time - $voucher_start_time;
    $max_voucher_time = 15 * 60; // 15 minuta u sekundama
    
    if ($elapsed_time <= $max_voucher_time) {
        $voucher_valid = true;
    }
}

// Generisanje broja porudžbine
$order_number = generate_order_number();

// Izračunavanje konačnih ukupnih iznosa
$cart_total = $base_price;
$accessories_total = 0;

// Izračunavanje ukupne vrednosti dodataka, ako ih ima
if (!empty($accessories)) {
    foreach ($accessories as $accessory_id) {
        $accessory = get_product($accessory_id);
        if ($accessory) {
            $accessory_price = !empty($accessory['sale_price']) ? $accessory['sale_price'] : $accessory['price'];
            $accessories_total += $accessory_price;
        }
    }
}

$grand_total = $cart_total + $accessories_total;

// Kreiranje porudžbine u bazi
try {
    global $conn;
    
    // Započni transakciju
    $conn->beginTransaction();
    
    // Dobavljanje user_id ako je korisnik prijavljen
    $user_id = is_logged_in() ? $_SESSION['user_id'] : null;
    
    // Unos porudžbine u tabelu orders
    $stmt = $conn->prepare("
        INSERT INTO orders (
            user_id,
            order_number, 
            name, 
            email, 
            phone, 
            address, 
            city, 
            zip,
            total,
            shipping_method,
            payment_method,
            notes,
            status,
            gift_voucher_applied,
            gift_voucher_code,
            created_at
        ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())
    ");
    
    $stmt->execute([
        $user_id,
        $order_number,
        $name,
        $email,
        $phone,
        $address,
        $city,
        $zip,
        $grand_total,
        $shipping_method,
        $payment_method,
        $notes,
        'pending',
        $voucher_valid ? 1 : 0,
        $voucher_valid ? $voucher_code : null
    ]);
    
    $order_id = $conn->lastInsertId();
    
    // Unos stavki porudžbine u tabelu order_items
    $stmt = $conn->prepare("
        INSERT INTO order_items (
            order_id,
            product_id,
            product_name,
            product_sku,
            price,
            quantity
        ) VALUES (?, ?, ?, ?, ?, ?)
    ");
    
    // Unos proizvoda iz korpe
    foreach ($cart as $product_id => $quantity) {
        $product = get_product($product_id);
        if ($product) {
            $price = !empty($product['sale_price']) ? $product['sale_price'] : $product['price'];
            $sku = isset($product['sku']) ? $product['sku'] : '';
            
            $stmt->execute([
                $order_id,
                $product_id,
                $product['name'],
                $sku,
                $price,
                $quantity
            ]);
        }
    }
    
    // Unos dodataka kao stavke porudžbine, ako ih ima
    if (!empty($accessories)) {
        foreach ($accessories as $accessory_id) {
            $accessory = get_product($accessory_id);
            if ($accessory) {
                $price = !empty($accessory['sale_price']) ? $accessory['sale_price'] : $accessory['price'];
                $sku = isset($accessory['sku']) ? $accessory['sku'] : '';
                
                $stmt->execute([
                    $order_id,
                    $accessory_id,
                    $accessory['name'],
                    $sku,
                    $price,
                    1 // količina za dodatke je uvek 1
                ]);
            }
        }
    }
    
    // Potvrdi transakciju
    $conn->commit();
    
    // Isprazni korpu
    clear_cart();
    
    // Sačuvaj broj porudžbine u sesiji za thank-you stranicu
    $_SESSION['last_order_number'] = $order_number;
    $_SESSION['last_order_total'] = $grand_total;
    $_SESSION['last_order_name'] = $name;
    
    // Sačuvaj informaciju o poklon vaučeru
    if ($voucher_valid) {
        $_SESSION['gift_voucher_issued'] = true;
        $_SESSION['gift_voucher_code'] = $voucher_code;
        $_SESSION['gift_voucher_amount'] = 2000; // Vrednost vaučera
    }
    
    // Očisti localStorage pomoću JavaScript
    echo '<script>localStorage.removeItem("voucherTimerData"); localStorage.removeItem("voucherWarningShown"); localStorage.removeItem("voucherExpiredNotified");</script>';
    
    // SLANJE MEJL OBAVESTENJA KUPCU I PRODAVCU
    // Inicijalizacija EmailHelper klase za slanje emailova
require_once 'includes/email_helper.php';
$emailHelper = new EmailHelper();

// Dohvatanje kompletnih podataka o porudžbini (zajedno sa stavkama)
$orderData = get_row("SELECT * FROM orders WHERE id = ?", [$order_id]);
$orderItems = get_rows("SELECT * FROM order_items WHERE order_id = ?", [$order_id]);

// Slanje emaila kupcu
$emailHelper->sendOrderConfirmationToCustomer($orderData, $orderItems);

// Slanje emaila prodavcu
$emailHelper->sendNewOrderNotificationToAdmin($orderData, $orderItems);

// Logiraj uspeh emaila
error_log("Emails for order {$order_number} sent to {$email} and admin");

// Debugging info - privremeno, ukloniti nakon što proradii
$mail_log_file = __DIR__ . '/logs/email_debug.log';
file_put_contents($mail_log_file, date('Y-m-d H:i:s') . " - Attempting to send emails for order {$order_number}\n", FILE_APPEND);

    
    // Preusmeri na thank-you stranicu
    header('Location: /thank-you.php');
    exit;
    
} catch (Exception $e) {
    // Poništi transakciju u slučaju greške
    $conn->rollBack();
    
    // Logiraj grešku
    error_log("Order error: " . $e->getMessage());
    
    // Za debugging privremeno
    echo "Error: " . $e->getMessage();
    exit;
    
    // Zakomentarišite redirekciju tokom debugginga
    // header('Location: /checkout.php?error=processing');
    // exit;
}