<?php
require_once 'config.php';

$cartData = getCartItems($pdo);
$cartItems = $cartData['items'];
$total = $cartData['total'];

$error = '';
$success = '';

// Обработка обновления корзины
if($_SERVER['REQUEST_METHOD'] === 'POST') {
    if(isset($_POST['update_cart'])) {
        foreach($_POST['quantity'] as $id => $qty) {
            $qty = max(0, (int)$qty);
            updateCartQuantity($id, $qty);
        }
        header("Location: cart.php");
        exit;
    }
    
    if(isset($_POST['remove_item'])) {
        $remove_id = (int)$_POST['remove_id'];
        removeFromCart($remove_id);
        header("Location: cart.php");
        exit;
    }
    
    if(isset($_POST['checkout'])) {
        if(!isLoggedIn()) {
            $error = "Для оформления заказа необходимо войти или зарегистрироваться";
        } elseif(empty($cartItems)) {
            $error = "Ваша корзина пуста";
        } else {
            // Проверяем наличие товаров на складе
            $stock_error = false;
            foreach($cartItems as $item) {
                if($item['quantity'] > $item['stock']) {
                    $stock_error = true;
                    $error = "Товар '{$item['name']}' доступен только в количестве {$item['stock']} шт. Пожалуйста, уменьшите количество.";
                    break;
                }
            }
            
            if(!$stock_error) {
                $delivery_address = trim($_POST['delivery_address'] ?? '');
                $delivery_date = $_POST['delivery_date'] ?? '';
                $comment = trim($_POST['comment'] ?? '');
                
                $today = date('Y-m-d');
                $max_date = date('Y-m-d', strtotime('+30 days'));
                
                if(empty($delivery_address)) {
                    $error = "Пожалуйста, укажите адрес доставки";
                } elseif(empty($delivery_date)) {
                    $error = "Пожалуйста, выберите дату доставки";
                } elseif($delivery_date < $today) {
                    $error = "Дата доставки не может быть раньше сегодняшнего дня";
                } elseif($delivery_date > $max_date) {
                    $error = "Дата доставки не может быть позже 30 дней";
                } else {
                    // Создаём заказ
                    $order_number = 'ORD-' . date('Ymd') . '-' . rand(1000, 9999);
                    
                    $pdo->beginTransaction();
                    try {
                        $stmt = $pdo->prepare("INSERT INTO orders (user_id, order_number, total_amount, delivery_address, delivery_date, comment, status) VALUES (?, ?, ?, ?, ?, ?, 'new')");
                        $stmt->execute([$_SESSION['user_id'], $order_number, $total, $delivery_address, $delivery_date, $comment]);
                        $order_id = $pdo->lastInsertId();
                        
                        foreach($cartItems as $item) {
                            $stmt = $pdo->prepare("INSERT INTO order_items (order_id, product_id, product_name, quantity, price) VALUES (?, ?, ?, ?, ?)");
                            $stmt->execute([$order_id, $item['id'], $item['name'], $item['quantity'], $item['price']]);
                            
                            // Обновляем остатки на складе
                            $updateStmt = $pdo->prepare("UPDATE products SET stock = stock - ? WHERE id = ?");
                            $updateStmt->execute([$item['quantity'], $item['id']]);
                        }
                        
                        $pdo->commit();
                        clearCart();
                        
                        $success = "✅ Заказ успешно оформлен! Номер заказа: $order_number. <a href='my_orders.php'>Посмотреть мои заказы</a>";
                        
                        // Обновляем данные корзины после очистки
                        $cartData = getCartItems($pdo);
                        $cartItems = $cartData['items'];
                        $total = $cartData['total'];
                    } catch(Exception $e) {
                        $pdo->rollBack();
                        $error = "Ошибка при оформлении заказа: " . $e->getMessage();
                    }
                }
            }
        }
    }
}

// Обновляем данные корзины после возможных изменений
$cartData = getCartItems($pdo);
$cartItems = $cartData['items'];
$total = $cartData['total'];

$user_address = isLoggedIn() && isset($_SESSION['address']) ? $_SESSION['address'] : '';
?>
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Корзина и оформление заказа</title>
    <meta name="description" content="Ваша корзина покупок. Оформление заказа с доставкой.">
    <style>
        * { margin: 0; padding: 0; box-sizing: border-box; }
        body { font-family: 'Segoe UI', Arial, sans-serif; background: #f0fdf4; }
        header, footer { background: #0f172a; color: #f8fafc; padding: 1rem; text-align: center; }
        nav a { color: #f8fafc; margin: 0 15px; text-decoration: none; }
        nav a:hover { color: #14b8a6; }
        main { max-width: 1200px; margin: 30px auto; padding: 0 20px; min-height: 60vh; }
        .cart-container { display: flex; gap: 40px; flex-wrap: wrap; }
        .cart-items { flex: 1.2; background: #fff; border-radius: 20px; padding: 25px; box-shadow: 0 10px 30px rgba(0,0,0,0.08); }
        .checkout-form { flex: 0.8; background: #fff; border-radius: 20px; padding: 25px; box-shadow: 0 10px 30px rgba(0,0,0,0.08); height: fit-content; position: sticky; top: 20px; }
        h1 { margin-bottom: 20px; color: #0f172a; }
        .cart-table { width: 100%; border-collapse: collapse; }
        .cart-table th, .cart-table td { padding: 12px; text-align: left; border-bottom: 1px solid #e2e8f0; }
        .cart-table th { background: #f8fafc; }
        .quantity-input { width: 70px; padding: 8px; border: 1px solid #ddd; border-radius: 8px; }
        .btn-remove { background: none; border: none; color: #e74c3c; cursor: pointer; font-size: 1.2rem; padding: 5px 10px; }
        .btn-remove:hover { color: #c0392b; }
        .btn-update { background: #64748b; color: #fff; border: none; padding: 10px 20px; border-radius: 8px; cursor: pointer; margin-top: 15px; }
        .btn-update:hover { background: #475569; }
        .total-row { font-weight: bold; font-size: 1.2rem; background: #f8fafc; }
        .form-group { margin-bottom: 20px; }
        label { display: block; font-weight: bold; margin-bottom: 8px; color: #0f172a; }
        input, textarea { width: 100%; padding: 12px; border: 1px solid #ddd; border-radius: 10px; font-size: 16px; }
        input:focus, textarea:focus { outline: none; border-color: #0f766e; }
        textarea { resize: vertical; min-height: 80px; }
        .btn-checkout { width: 100%; background: #0f766e; color: #fff; border: none; padding: 14px; font-size: 18px; border-radius: 12px; cursor: pointer; font-weight: bold; transition: 0.3s; margin-top: 20px; }
        .btn-checkout:hover { background: #0d5c56; }
        .btn-checkout:disabled { background: #94a3b8; cursor: not-allowed; }
        .btn-back { display: inline-block; background: #64748b; color: #fff; padding: 10px 20px; text-decoration: none; border-radius: 8px; margin-top: 20px; }
        .error { background: #fdecea; color: #e74c3c; padding: 12px; border-radius: 8px; margin-bottom: 20px; border-left: 4px solid #e74c3c; }
        .success { background: #e8f5e9; color: #27ae60; padding: 12px; border-radius: 8px; margin-bottom: 20px; border-left: 4px solid #27ae60; }
        .empty-cart { text-align: center; padding: 50px; }
        .auth-warning { background: #fff3e0; padding: 15px; border-radius: 8px; margin-bottom: 20px; border-left: 4px solid #f39c12; }
        @media (max-width: 768px) { .cart-container { flex-direction: column; } .checkout-form { position: static; } .cart-table { display: block; overflow-x: auto; } }
    </style>
</head>
<body>
<header>
    <div style="display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap;">
        <h1 style="margin: 0;">🛍️ Интернет-магазин</h1>
        <nav>
            <a href="index.php">📦 Каталог</a>
            <a href="cart.php">🛒 Корзина <?= count($cartItems) > 0 ? '(' . array_sum(array_column($cartItems, 'quantity')) . ')' : '' ?></a>
            <?php if(isLoggedIn()): ?>
                <a href="my_orders.php">📋 Мои заказы</a>
                <a href="logout.php">🚪 Выйти (<?= h($_SESSION['username']) ?>)</a>
            <?php else: ?>
                <a href="login.php">🔐 Вход</a>
                <a href="register.php">📝 Регистрация</a>
            <?php endif; ?>
        </nav>
    </div>
</header>

<main>
    <a href="index.php" class="btn-back">← Продолжить покупки</a>
    
    <div class="cart-container">
        <div class="cart-items">
            <h1>🛒 Корзина</h1>
            
            <?php if($error): ?>
                <div class="error"><?= h($error) ?></div>
            <?php endif; ?>
            
            <?php if($success): ?>
                <div class="success"><?= $success ?></div>
            <?php endif; ?>
            
            <?php if(count($cartItems) > 0 && !$success): ?>
                <form method="POST" id="cartForm">
                    <table class="cart-table">
                        <thead>
                            <tr><th>Товар</th><th>Цена</th><th>Количество</th><th>Сумма</th><th></th></tr>
                        </thead>
                        <tbody>
                            <?php foreach($cartItems as $item): ?>
                            <tr>
                                <td><strong><?= h($item['name']) ?></strong></td>
                                <td><?= number_format($item['price'], 2) ?> ₽</td>
                                <td>
                                    <input type="number" name="quantity[<?= $item['id'] ?>]" value="<?= $item['quantity'] ?>" min="1" max="<?= $item['stock'] ?>" class="quantity-input">
                                </td>
                                <td><?= number_format($item['subtotal'], 2) ?> ₽</td>
                                <td>
                                    <form method="POST" style="display: inline;">
                                        <input type="hidden" name="remove_id" value="<?= $item['id'] ?>">
                                        <button type="submit" name="remove_item" class="btn-remove" onclick="return confirm('Удалить товар из корзины?')">❌</button>
                                    </form>
                                </td>
                            </tr>
                            <?php endforeach; ?>
                            <tr class="total-row">
                                <td colspan="3" style="text-align: right;"><strong>Итого:</strong></td>
                                <td colspan="2"><strong><?= number_format($total, 2) ?> ₽</strong></td>
                            </tr>
                        </tbody>
                    </table>
                    <button type="submit" name="update_cart" class="btn-update">🔄 Обновить корзину</button>
                </form>
            <?php elseif(!$success): ?>
                <div class="empty-cart">
                    <p>🛒 Ваша корзина пуста</p>
                    <a href="index.php" class="filter-btn active" style="display: inline-block; margin-top: 15px; background: #0f766e; color: #fff; padding: 10px 20px; border-radius: 30px; text-decoration: none;">Перейти к покупкам</a>
                </div>
            <?php endif; ?>
        </div>
        
        <?php if(count($cartItems) > 0 && !$success): ?>
            <div class="checkout-form">
                <h2>📝 Оформление заказа</h2>
                
                <?php if(!isLoggedIn()): ?>
                    <div class="auth-warning">
                        🔒 <strong>Для оформления заказа необходимо авторизоваться.</strong><br>
                        <a href="login.php">Войти</a> или <a href="register.php">Зарегистрироваться</a>
                    </div>
                <?php else: ?>
                    <form method="POST">
                        <div class="form-group">
                            <label>📍 Адрес доставки *</label>
                            <textarea name="delivery_address" required placeholder="Город, улица, дом, квартира"><?= h($user_address) ?></textarea>
                        </div>
                        
                        <div class="form-group">
                            <label>📅 Желаемая дата доставки *</label>
                            <input type="date" name="delivery_date" min="<?= date('Y-m-d') ?>" max="<?= date('Y-m-d', strtotime('+30 days')) ?>" required>
                        </div>
                        
                        <div class="form-group">
                            <label>💬 Комментарий к заказу</label>
                            <textarea name="comment" placeholder="Ваши пожелания..."></textarea>
                        </div>
                        
                        <div class="total-row" style="margin-bottom: 20px; padding: 15px; background: #f8fafc; border-radius: 10px;">
                            Итого к оплате: <strong><?= number_format($total, 2) ?> ₽</strong>
                        </div>
                        
                        <button type="submit" name="checkout" class="btn-checkout">✅ Оформить заказ</button>
                    </form>
                <?php endif; ?>
            </div>
        <?php endif; ?>
    </div>
</main>

<footer>
    <p>&copy; 2025 Интернет-магазин. Лучшие товары по лучшим ценам.</p>
</footer>
</body>
</html>